决策树模型

  优点:高效简单、易于理解,可以处理不相关特征。

  缺点:容易过拟合,训练集在特征上是完备的

  决策树过程:特征选择、划分数据集、构建决策树、决策树剪枝

  决策树选择最优的划分特征,将数据集按照最优划分特征的取值划分成不同的子集,然后依次对子集重复上述步骤,指导子集中数据都归属于同一个类别,或者没有特征可以再划分了。

  特征选择通常有三种方法:    

  • ID3——信息信息
  • C4.5——信息增益比
  • CART——基尼指数

一、信息增益

  首先信息论中熵表示随机变量不确定性度量,熵越大,不确定性越大。

  熵的定义是:

  其中pi表示随机变量(决策树中是类别变量label)的概率,通常用频率估计(下同)。所以说熵是随机变量的分布的熵。

  条件熵(某个特征下的加权熵,某个特征下熵的期望)定义是:

  其中pi表示X=xi的概率,表示X=xi条件下,随机变量Y的熵。可以看做是特征X不同取值下,Y的熵的期望(熵的加权求和)。所以条件熵是某个特征条件下熵。

  信息增益的定义就是随机变量本来的熵减去在某个特征下的条件熵:

IG(Y,X) = H(Y) - H(Y|X)

  这些概念对应于数据集中如下所示:

   根据能力、学历、性别等来预测一个人的收入情况

  收入这个随机变量按取值高和低本来就有一个熵=-4.0/7*log(4.0/7)-3.0/7*log(3.0/7)=0.6829

  在性别这个随机变量的不同取值下,收入的条件熵=(性别为男的比例)*(性别男中收入的熵)+(性别为女的比例)*(性别女中收入的熵)

                        =(05.0/7)*(-3.0/5*log(3.0/5)-2.0/5*log(2.0/5)) + (2.0/7)*(-1.0/2*log(1.0/2)-1.0/2*log(1.0/2))

                        =0.6788

  所以在性别这个特征下,收入的信息增益为=0.6829-0.6788=0.0041,可以认为性别这个特征对收入高低的确定影响不大,或者关系不大。信息增益同时也度量了收入在性别上基本上不存在倾斜分布,一个2/3,一个1/2。

  以此类推,可以计算每一个特征下的信息增益,特征的信息增益越大说明对收入的区分度越大。所以算法选择信息增益最大的特征作为当前的最优特征来划分数据集。

  ps:这个过程可以看做依次选取每个特征,然后按照这个特征在Excel做排序,排序后会将类别变量(收入)划分为多个子集,在当前排序下,分别计算收入各个子集的加权熵。上图就是按照性别排序后的结果

二、信息增益比

  信息增益会使得算法倾向于选择取值多的特征,因此提出按照信息增益比来选择最优特征,信息增益比越大,特征对类别的区分度越大。

  信息增益比的定义是当前特征下的信息增益比上该特征的熵(之前所计算的熵都是计算类别变量Y的熵,而这里计算的是该特征的分布的熵,计算公式都一样,只是计算的随机变量不同而已)

三、基尼指数

  基尼的定义是:

  其中K是随机变量的所有取值个数;基尼是随机变量的基尼,决策树中是类别变量的基尼。基尼与熵类似,都可以表示随机变量的不确定性。

  基尼指数的定义是:

 

  基尼指数的计算跟条件熵的计算十分相似,几乎没有什么区别,只是一个是计算某个特征下的熵的期望,一个是计算某个特征下的基尼的期望。在选择最优特征的时候,这里是选择基尼指数最小的特征作为最优特征。

  基于基尼指数构建的CART树是二分的,等于某个特征值的划分到左子树,不等于的划分到右子树,以此类推再对左右子树划分。这样做的好处一个是可以处理连续型的特征,另一个好处是特征可以反复利用,不像ID3或者C4.5那样每次划分数据集都是特征消耗的。

划分数据集

  以上三种策略都可以计算最优特征,然后按照最优特征将数据集划分为不同子集,以此类推继续划分子集,可以递归的实现。

决策树剪枝

  剪枝是为了防止决策树过拟合,而提出的删除部分叶节点或者子树的策略。剪枝分预剪枝和后剪枝,预剪枝是在构建决策树之前就已经设置了决策树的深度、最大宽度maxBin等。后剪枝是在决策树已经生成之后,定义决策树的代价函数(损失函数),有了代价函数评估决策树的代价。然后递归的将叶节点为一个叶节点,得到新的决策树,如果新的决策树代价更小则剪枝生效。

ML——决策树模型的更多相关文章

  1. 决策树模型 ID3/C4.5/CART算法比较

    决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...

  2. 决策树模型比较:C4.5,CART,CHAID,QUEST

    (1)C4.5算法的特点为: 输入变量(自变量):为分类型变量或连续型变量. 输出变量(目标变量):为分类型变量. 连续变量处理:N等分离散化. 树分枝类型:多分枝. 分裂指标:信息增益比率gain ...

  3. chapter02 三种决策树模型:单一决策树、随机森林、GBDT(梯度提升决策树) 预测泰坦尼克号乘客生还情况

    单一标准的决策树:会根每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分类节点的顺序.Random Forest Classifier:使用相同的训练样本同时搭建多个独立的分类模型, ...

  4. 用决策树模型求解回归问题(regression tree)

    How do decision trees for regression work? 决策树模型既可以求解分类问题(对应的就是 classification tree),也即对应的目标值是类别型数据, ...

  5. 机器学习之使用sklearn构造决策树模型

    一.任务基础 导入所需要的库 import matplotlib.pyplot as plt import pandas as pd %matplotlib inline 加载sklearn内置数据集 ...

  6. Python 实现基于信息熵的 ID3 算法决策树模型

    版本说明 Python version: 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:21:07) [MSC v.1900 32 bit (Int ...

  7. R_针对churn数据用id3、cart、C4.5和C5.0创建决策树模型进行判断哪种模型更合适

    data(churn)导入自带的训练集churnTrain和测试集churnTest 用id3.cart.C4.5和C5.0创建决策树模型,并用交叉矩阵评估模型,针对churn数据,哪种模型更合适 决 ...

  8. 吴裕雄 python 机器学习——分类决策树模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...

  9. 吴裕雄 python 机器学习——回归决策树模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...

随机推荐

  1. webservice client setTimeOut

    一:eclipse生成的client,基于axis client_sub.getOptions().setTimeOutInMilliSeconds(1000*60); client_sub表示一个客 ...

  2. 在Android Studio中修改应用包名

    紧凑模式下(包名中的每个字段紧贴在一起,例如),右键单击包名,Refactor -> Rename,只能修改包名最外层的字段 分离模式下(点击设置,将Hide Empty Middle Pack ...

  3. ios对于枚举的使用

    引言: 枚举值 它是一个整形(int)  并且,它不参与内存的占用和释放,枚举定义变量即可直接使用,不用初始化. 在代码中使用枚举的目的只有一个,那就是增加代码的可读性. 使用: 枚举的定义如下: t ...

  4. 数据库连接池-配置 wallfilter

    使用缺省配置的WallFilter <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSou ...

  5. linux下自动创建设备文件节点---class

    在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的 ...

  6. android TextView 设置部分文字背景色 和 文字颜色

    通过SpannableStringBuilder来实现,它就像html里边的元素改变指定文字的文字颜色或背景色 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  7. Android Platform Version与API Level的对应表

    Platform Version API Level VERSION_CODE Notes Android 6.0 23 M Platform Highlights Android 5.1 22 LO ...

  8. Ubuntu上命令行下卸载软件

    sudo apt-get --purge remove 软件名 (加了--purge表示会删除配置) sudo apt-get autoremove (这个命令后面文章有解释) dpkg -l (查看 ...

  9. 【HDU 1754】 I Hate It

    [题目链接] 点击打开链接 [算法] 树状数组的最值查询 详见这篇文章 : https://blog.csdn.net/u010598215/article/details/48206959 [代码] ...

  10. 【前端】Element-UI 省市县级联选择器 JSON数据

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/element_cascader.html 不想自己处理的就直接下载吧 http://shamoyuu.bj.bce ...