决策树

目录

一.属性选择

三.决策树的构建

四.优化

五.连续值和缺失值

六.常见的树

6.1 ID3

6.2 C4.5

6.3 CART

6.4 总结


一.属性选择

  Gain  节点复杂度。 Gain越高,明越复。有两种衡量方式:

 a

  描述了数据的混乱程度,越大,混乱程度越高,也就是度越低;反之,越小,混乱程度越低,度越高。  熵的计算公式如下所示:

https://images2015.cnblogs.com/blog/833682/201512/833682-20151221204156921-2018891490.png

  其中Pi表示i的数量占比。以二分类问题为例,如果两的数量相同,此类节点的度最低,等于1;如果点的数据属于同一类时,此时节点的度最高, 等于0

 b)基尼

  基尼值计算公式如下:

https://images2015.cnblogs.com/blog/833682/201512/833682-20151220210745992-582230710.png

  其中Pi表示i的数量占比。其同以上述的二分例子例,当两数量相等,基尼等于0.5  ;当点数据属于同一类时,基尼等于0  。基尼值越大,数据越不纯


决策树选择分裂属性采用3个的3个依据:  信息增益(ID3),信息增益率 C4.5), CART(基尼)

  • 信息增益

       用信息增益表示分裂前后跟的数据复度和分裂点数据复度的变化值,计算公式表示为

https://images2015.cnblogs.com/blog/833682/201512/833682-20151220210516008-785309302.png

简单理解:分裂前数据复杂度减去孩子节点的数据复杂度和。  信息增益越大,分裂后的复杂度减小的越多,分类效果越明显。  

 

  • 信息增益率

       使用信息增益作为选择分裂的条件有一个不可避免的缺点: 倾向选择分支比较多的属性进行分裂为了解决这个问题,引入了信息增益率这个概念。信息增益率是在信息增益的基础上除以分裂节点数据量的信息增益(听起来很拗口),其计算公式如下

                                                                                  https://images2015.cnblogs.com/blog/833682/201512/833682-20151220212337711-770906819.png          

       其中 Info_Gain 表示信息增益,InstrinsicInfo 表示分裂子点数据量的信息增益,其算公式为:

                                                                                             

 

其中m表示子点的数量, https://images2015.cnblogs.com/blog/833682/201512/833682-20151221204929046-373809163.png表示第Ni个子点的数据量,N表示父点数据量。

简单理解:其实InstrinsicInfo是分裂点的,如果点的数据越接近,InstrinsicInfo越大,如果子点越大,InstrinsicInfo越大,而Info_Ratio就会越小,能降低点分裂时选择点多的分裂属性的向性。信息增益率越高,明分裂的效果越好。(同一,相当于算一个增益率)

     使用信息增益 为选择分裂的条件:  倾向选择分支比较少的属性进行分

 

实战

指标

  根据属性2分裂

  根据属性2分裂

信息增益

Ent(D)    = - [ (28/44)* log(28/44) + (16/44)* log(16/44)]

Ent(D1) =  - [ (14/18)* log(14/18) + (4/18)* log(4/18)]

Ent(D2) = - [ (14/26)* log(14/26) + (12/26)* log(12/26)]

Info_Gain =  Ent(D)   -  Ent(D1) -  Ent(D2)

同理

增益率

Instrinsicinfo = - [ (18/(18+26))* log(18/(18+26)) + (26/(18+26))* log(26/(18+26))]

同理

 


二. 停止分裂的条件

   1)最小点数. (2)  熵或者基尼值小于阈值。 3)决策深度达到指定条件。(4)所有的特征已使用完,不能继续分裂


三.决策树的构建

1将所有的数据看成是一个点,入步2

2从所有的数据特征中挑一个数据特征(属性选择对节点进行分割,进入步骤3

3生成若干孩子点,每一个孩子行判断,如果足停止分裂的条件,入步4;否入步2

4设置该节点是子节点,其输出的结果为该节点数量占比最大的类别

构建算法ID3(采用增益)、C4.5(先从候选属性找出增益高于平均水平的属性,再从中选择增益率最高的)、CART(基尼值)三种,其中ID3和C4.5是分类树,CART是分类回归树。

四.优化

防止过拟合,采用剪枝:  https://blog.csdn.net/am290333566/article/details/81187562  

预剪枝: 在每一次实际对结点进行进一步划分之前,先采用验证集的数据来验证如果划分是否能提高划分的准确性。如果不能,就把结点标记为叶结点并退出进一步划分;如果可以就继续递归生成节点。

后剪枝: 进行剪枝判断的操作中,只对底端结点进行判断。一步一步收缩至每一个底端结点对验证集数据都有更好的分类准确率为止。  算量比大。

 

summary

后剪枝决策树通常比预剪枝决策树保留了更多的分支;

后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树;

后剪枝决策树训练时间开销比未剪枝决策树和预剪枝决策树都要大的多。


五.连续值和缺失值

当属性为连续值时:二分法。

Step:  对属性值排序a1,a2,a3......  an,划分取值为 (a1+a2)/2 ,  (a2+a3)/2 , ....... ,(an-1+an)/2 ,计算每一个的划分点,取增益大者。

Tip:若当前节点划分属性为连续属性,该属性还能作为其后代节点的划分属性。

 

缺失:

     处理策略

     1.  处理缺少属性值的一种策略是赋给它结点t所对应的训练实例中该属性的最常见值

     2.  另外一种更复杂的策略是为Fi的每个可能值赋予一个概率。例如,给定一个布尔属性Fi,如果结点t包含6个已知Fi_v=1和4个Fi_v=0的实例,那么Fi_v=1的概率是0.6,而Fi_v=0的概率是0.4。于是,实例x的60%被分配到Fi_v=1的分支,40%被分配到另一个分支。这些片断样例(fractional examples)的目的是计算信息增益,另外,如果有第二个缺少值的属性必须被测试,这些样例可以在后继的树分支中被进一步细分。(C4.5中使用)

     3.  简单处理策略就是丢弃这些样本


六.常见的树

6.1 ID3

https://www.cnblogs.com/yonghao/p/5096358.html

ID3是基本的决策构建算法,作决策树经典的构建算法,其具有简单、清晰易懂的特点。ID3灵活方便,但是有以下几个缺点:

 (1)采用信息增益行分裂,分裂的精确度可能没有采用信息增益率行分裂高

    2)不能连续型数据,只能通离散化将连续性数据离散型数据

    3)不能理缺省

    4)没有决策树进行剪枝理,很可能会出现过拟合的问题


6.2 C4.5

https://www.cnblogs.com/yonghao/p/5122703.html

https://blog.csdn.net/u014688145/article/details/53212112    

C4.5算法的优点是:产生的分类规则易于理解,准确率较高。

C4.5算法的缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

ID3的存在的问题,基上述1,2,4个方面行了相的改

  • 对连续值的切割

1)切割点:按照五的方式(上述)二分法设计思路--  一刀切。

      了减少算量,会做一步化:某个属性排序以后, 若前后两个类标签的一致,则该点不作切割,排除前后两个类标签相同的切割点来算的复度。

2)最切割点:对连续型属性采用信息增益进行内部择优。选择了最优分割点之后,在计算信息增益率与其他属性进行比较

  • 对缺失值的处理

缺失值:在某些情况下,可供使用的数据可能缺少某些属性的值。例如(X, y)是样本集S中的一个训练实例,X=(F1_v,F2_v, …Fn_v)。但是其属性Fi的值Fi_v未知。

     处理策略

     1.  处理缺少属性值的一种策略是赋给它结点t所对应的训练实例中该属性的最常见值

     2.  另外一种更复杂的策略是为Fi的每个可能值赋予一个概率。例如,给定一个布尔属性Fi,如果结点t包含6个已知Fi_v=1和4个Fi_v=0的实例,那么Fi_v=1的概率是0.6,而Fi_v=0的概率是0.4。于是,实例x的60%被分配到Fi_v=1的分支,40%被分配到另一个分支。这些片断样例(fractional examples)的目的是计算信息增益,另外,如果有第二个缺少值的属性必须被测试,这些样例可以在后继的树分支中被进一步细分。(C4.5中使用)

     3.  简单处理策略就是丢弃这些样本

  • 剪枝

后剪枝,采用悲观剪枝方法(PEP)。

剪枝条件:

  https://images2015.cnblogs.com/blog/833682/201601/833682-20160112211322053-1257863487.png表示子差;

https://images2015.cnblogs.com/blog/833682/201601/833682-20160112211329663-1912757565.png表示叶子点的差;

树误差的足二分布,根据二分布的性

其中 , N为子树的数据

叶子算:  


6.3 CART

https://www.cnblogs.com/yonghao/p/5135386.html    

  • 属性划分

如果是分类树CART采用GINI值衡量节点纯度;如果是回归树,采用样本方差衡量节点纯度。节点越不纯,节点分类或者预测的效果就越差。  

因此,无是分类树还是回归树CART都要选择使子点的GINI值或者回归方差最小的属性作为分裂的方案

即最小化(分类树): ,  其中  

或者(回归树):     其中

 

如果是回归树,是具体的输出值,一般选择叶子节点的中值,平均值或者众数表示。

如果是分类树,  其叶子节点的输出是一个实际的类别,选择叶子节点中数量占比最大的类别作为输出的类别。

  • 分裂

TIP: CART是一颗二叉树

对连续值的操作: 最小化分裂后的GINI值或者样本方差寻找最优分割点,将节点一分为二,同C4.5处理,详细请C4.5

对离散值的操作: 将其中一个离散独立作一个点,其他的离散生成另外一个点即可。  

e.g. 如果某离散属性一个有三个离散XYZ则该属性的分裂方法有

[{X}{YZ}] , [{Y}{XZ}] , [{Z}{XY}],分别计算每种划分方法的基尼或者本方差确定最的方法。

  • 剪枝

CART采用CCP(代价复杂度)剪枝方法 -  找到了所有的子https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140250444-1000189848.png

代价复选择节点表面差率增益最小的非叶子点,非叶子点的左右子点,若有多个非叶子点的表面差率增益相同小,则选择非叶子节点中子节点数最多的非叶子节点进行剪枝
 

令决策的非叶子https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140800835-1653693022.png

a算所有非叶子点的表面差率增益https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140810803-1471070338.png  

b选择表面差率增益https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140819507-171604546.png最小的非叶子https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140831866-73536628.png(若多个非叶子点具有相同小的表面差率增益选择节点数最多的非叶子点)。

chttps://images2015.cnblogs.com/blog/833682/201601/833682-20160116140844600-1126502165.png进行剪

表面差率增益算公式:

其中:

https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140910569-63573161.png表示叶子点的差代价,

https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140918553-2097300878.png

https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140925116-1852988504.png  为节点的错误率,  https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140932991-878466782.png为节点数据量的占比

https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140944397-1411086671.png表示子差代价:

https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140951022-1776394064.png    

https://images2015.cnblogs.com/blog/833682/201601/833682-20160116140957491-164197365.png为子节点i错误率,https://images2015.cnblogs.com/blog/833682/201601/833682-20160116141003007-1453455827.png  表示i的数据点占比,https://images2015.cnblogs.com/blog/833682/201601/833682-20160116141013882-1398176582.png表示子树节点个数。

 


6.4 总结

算法

支持模型

树结

特征选择

连续值处

缺失值处

剪枝

ID3

分类

多叉树

信息增益

不支持

不支持

不支持

C4.5

分类

多叉树

信息增益比

支持

支持

支持

CART

分类,

回归

二叉树

基尼系数,方差

支持

支持

支持

 

  

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值