机器学习(七):决策树

决策树(Decision Tree)可以算是分类算法中最著名的模型了,因为它是基于人们最能理解的规则来构造分类器,且每一次分支都能给出解释。
决策树大家族十分庞大,这里只介绍基于决策树的单一分类模型,不包括基于深度学习的GBDT。
决策树有点类似二叉排序树,到达节点时,就比较一次,然后进入下一个节点。

度量划分

基本上来说,对于度量的选择,我们都希望,所选择的度量能够将样本划分的更纯。不纯的程度越低,类分类就越倾斜。

信息熵、基尼指数与分类误差

三个度量方式都很容易理解,只不过对于误差的处理不同。
假设c是类的个数,则各指数的计算公式如下:

Entropy=i=0c1p(i|t)log2p(i|t)Gini=1i=0c1p(i|t)2ClassificationError=1maxip(i|t)

这三类的度量看似一致,从计算上来说都可以表示划分的不纯性度量,但需要指出的是,三个指标并不等价,即存在同一批数据对于三种度量,划分属性大小不一致的情况。
需要说明的是,度量的选择对于决策树算法的性能影响很小。

信息增益

有了度量标准,那么选择属性的标准也就出来了,那就是选择的属性就是选择前后度量差最大的那个。
如果选择的度量时信息熵,那么度量差就叫做信息增益。

增益率

使用信息增益看似很合理,因为纯度越高,毫无疑问分类越好,但这种考虑有失偏颇,因为它没有规定属性取值的个数。这使得属性可能的取值个数越多,该属性越可能被选来做划分。
这个问题可能导致的直接后果就是过拟合,过拟合会导致模型的泛化能力下降。
由此需要考虑将属性的个数信息考虑进去。
于是就有了划分属性的定义, vi 代表属性v取值为 vi

p(vi)=vviSplit Info v=i=0kp(vi)log2p(vi)

增益率的定义如下:
GainRatio=GainSplit Info v

这样一来,使用信息增益就可以较好的平衡分类效果和泛化能力了。

剪枝

构建决策树模型时,过拟合是一个实际问题,随着树的深度越来越大,越来越多的噪音被考虑进去,此时预测误差会上升。
一般通过剪枝的方法避免过拟合,预剪枝后剪枝
预剪枝就是在决策树模型构建时决定是否需要减除该节点。
有多种方法能判断是否需要该节点,比如通过分裂节点的信息增益与阈值的比较,但阈值的选择很难。
还有一种方法就是根据分裂节点的泛化误差来决定,即从训练数据中分出一部分验证数据,节点分裂时(此时可以确定的是对于训练集,节点的划分是有益的),使用验证数据来评判划分是否能提高正确率,依次决定是否确定划分。

后剪枝同理也可以使用验证集作为评判标准。

即预剪枝和后剪枝都可以使用验证集作为是否分裂的标准,与决策树的构建先后无关。
但两者所获得的结果是有区别的:往往后剪枝获得的决策树要比预剪枝获得的大,且欠拟合风险很小,泛化性能往往更优,但毫无疑问的是,后剪枝的开销更大。

连续值

对于连续值,一般采用最容易理解的二分法:
比如样本中长度有如下取值:

长度1.61.71.41.21.11.92.01.80.91.11.0
labelXXYYYXXXYYY

于是先将长度排序,然后依次取相邻两个长度的中值作为二分的临界值,比较那个中值能获得最大的信息增益。下面将介绍的C4.5决策树就是采用这种方法。

缺失值

对于缺失值需要考虑两个问题:
1.样本集属性缺失,如何根据缺失的属性来选择划分节点?
在不做缺失值填充的情况下,显然只能使用在该节点没有缺失值的子样本集进行计算,然后信息增益的计算最后需要乘上一个不缺失系数(即该节点不缺失的样本集数与总样本的比)
2.预测集属性缺失
若预测时,某个属性缺失,则以一定概率将该样本划分到该节点的各个取值中。至于这个概率如何选取,参考资料决策树是如何处理不完整数据的?

斜决策树

单变量决策树的每个节点都是使用一个属性,这样生成的决策树如果用坐标空间来刻画(属性即坐标轴),划分的边界都是平行于坐标轴的。
但有时候单一的属性很难刻画分类的边缘,会造成抖动,而这个抖动只需要一条斜边就可以很好的解决了。
其实所谓的斜边就是属性的线性组合。
即节点使用多个属性的线性表达式来作为评判标准。

特点

作为一个总结,决策树的优缺点特别列出
1. 决策树不要求任何先验假设
2. 找到最佳决策树是NP完全问题,因此一般采用启发式的贪心算法
3. 决策树对于噪声的干扰有较好的鲁棒性
4. 冗余属性不会对决策树的准确率造成不利影响

三个决策树模型

这三个决策树模型分别是ID3, C4.5和CART.
其实这些决策树都是上面介绍的基本决策树的变形,之所以需要单独拿出来是因为这三者是最著名的决策树模型,且应对不同的领域。

ID3

ID3算法,使用信息增益(也即信息熵,注意不是增益率)作为划分标准 ,但和上述描述的决策树不同的是,一旦节点选择某个属性划分后,就删除该属性,即一个属性只能使用一次。这使得ID3生成的决策树很小。
从构建过程来看,这也是个标准的贪心式流程。
毫无疑问,ID3拥有决策树的大部分优缺点。

C4.5

从ID3的构建中,我们发现了ID3只是实现了最基本的决策树构建过程,诸如连续值,过拟合,缺失值等都未处理。
于是就有了基于ID3的改进版——C4.5算法。
1. 针对属性取值问题——抛弃信息增益,使用信息增益率,避免选择属性划分时偏向多取值的属性
2. 针对过拟合的问题——使用剪枝处理(预剪枝和后剪枝),避免过拟合
3. 针对数值型的属性——使用排序后取中值的测试方法,选择合适的划分
4. 针对缺失值的问题——参考上述讲解
C4.5有一些版本,有些采取了上面的全部改进,有些只采取了一两个改进,应该来说,C4.5是ID3的一次升级。本质上并未作出太大的原则性改动

CART

CART(Classification And Regression Tree)分类回归数,与上面不同的是,该算法有两大特点:
1. 使用gini指标作为分类的标准
2. 节点的决策只能是“是”或“否”,即节点采用二分类

注意节点采用二分类的实现方式,之前某个属性X有是哪个取值”A”,”B”,”C”,对于CART模型来说,如果该属性被选择作为节点,则该节点的判定条件只能是X=”A”?两个分支取是或者否两个值。
贴一个参考链接决策树之CART算法

最后CART还可以用于回归,这部分有时间在介绍。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

芙兰泣露

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值