决策树的初体验

接下来是三种经典的决策树算法的学习过程:

Step1:信息熵与信息增益
信息熵(information_entropy):是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为pk(k=1,2,…,|y|),则D的信息熵定义为:
这里写图片描述
Ent(D)的值越小,则D的纯度越高。
假定离散属性a有V个可能的取值{这里写图片描述},若使用a来对样本集D进行划分,会产生V个分支结点,其中第v个分支节点包含了D中所有在属性a上取值为这里写图片描述的样本,记为这里写图片描述。通过信息熵公式可以计算出这里写图片描述的信息熵,再考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重|这里写图片描述|/|D|,即样本数越多的分支节点的影响越大。于是,计算出用属性a样本集D进行划分所获得的“信息增益”(information_gain):
这里写图片描述
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。因此,我们可以用信息增益来进行决策树的划分属性选择。ID3决策树学习算法就是以信息增益为准则来选择划分属性。

Step2:ID3算法的弊端以及改进
由信息熵以及信息增益的计算公式,不难知道,信息增益准则对可取值数目较多的属性有所偏好。当每个分支结点包含非常少甚至只有一个样本,这些分支节点的纯度达到最大。然而,这样的决策树不具有泛化能力,无法对新样本进行有效预测。比如,数据的“编号”的信息增益是最大的,但没实际意义。于是,著名的C4.5决策树算法出现了。

Step3:C4.5算法以及信息增益率
信息增益率的公式:
这里写图片描述,
其中
这里写图片描述
称为属性a的”固有值”。属性a的可能取值数目越多(即V越大),IV(a)的值通常会越大。
需要注意的是:信息增益率准则对可取值数目较少的属性有所偏好。因此,C4.5算法并不是直接选择增一律最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

Step4:C4.5的优点
(1)可以处理连续值。
由于连续属性的可取值数目不再有限,因此,不能直接根据连续属性的可取值对结点进行划分。而C4.5可以实现将连续属性离散化:
给定样本集D和连续属性a,假定a在D上出现了V个不同的取值,将这些值进行排序,记为{这里写图片描述}。基于划分点t可将D分为子集这里写图片描述这里写图片描述。其中这里写图片描述包含那些在属性a上取值不大于t的样本,而这里写图片描述则包含那些在属性a上取值大于t的样本。显然,对相邻的属性这里写图片描述这里写图片描述来说,t在区间这里写图片描述中取任意值所产生的划分结果相同。因此,对连续属性,我们可以考察包含n-1个元素的候选划分点集合
这里写图片描述,即选择相邻的属性值的中位点作为划分点,以此选取最优划分点进行样本集合的划分。如下公式:
这里写图片描述
其中Gain(D,a,t)是样本集D基于划分点t二分后的信息增益。于是,我们就可以选择使Gain(D,a,t)最大化的划分点。需要注意的是,与离散属性不同,若当前结点划分属性为连续属性,该属性还可以作为其后代结点的划分属性。

(2)可以处理缺失值。在有缺失值的情况下,需要解决两个问题:
如何在属性值缺失的情况下进行划分属性选择?对于给定的训练集D和属性a,令这里写图片描述表示D中在属性a上没有缺失值的样本子集。显然,我们只能根据这里写图片描述来判断属性a的优劣。这种情况对应的信息增益为:
这里写图片描述
其中,
这里写图片描述
直观地看,对属性a,这里写图片描述表示无缺失值样本所占的比例,这里写图片描述表示无缺失值样本中第k类所占的比例,这里写图片描述则表示无缺失值样本中在属性a上取值这里写图片描述的样本所占的比例。
给定划分属性后,若样本在该属性上的值缺失,如何对样本进行划分?若样本x在划分属性a上的取值已知,则将x划入与其取值相对应的子结点,且样本权值在子结点中保持为这里写图片描述。若样本x在划分属性a上的取值未知,则将x同时划入所有子结点,且样本权值在与属性值这里写图片描述对应的子结点中调整为这里写图片描述这里写图片描述简单来说,就是让同一个样本以不同的概率划分到不同的子结点中。
(3)在决策树的构造过程中对树进行剪枝。采用Pessimistic Error Pruning(PEP,悲观剪枝)。

Step5:CART算法与基尼指数
Classification And Regression Tree,即分类回归树算法,简称CART算法。CART决策树采用“基尼指数”来选择划分属性,数据集D的纯度可用基尼值来度量:
这里写图片描述
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的纯度越高。属性a的基尼指数的定义为:
这里写图片描述
因此,CART算法是在候选属性集合中,选择那个使得划分后基尼指数最小的属性作为最优划分属性。

Step6:为什么说CART是二叉树,而ID3和C4.5不是?
CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分。而ID3和C4.5则不具备这个性质,因此不是二叉树。

Step7:CART算法的具体流程
CART处理连续属性的过程与C4.5类似,不过是选择划分后基尼指数最小的属性作为最优化分属性。处理离散属性时,需要依次把属性集划分为不重复的两类,然后同样选择划分后基尼指数最小的属性作为最优化分属性。举一个比较常见的例子,如下图所示:
                           这里写图片描述

图中,有房情况和婚姻状况是离散值,而年收入是连续值。
对于有无房子的离散属性的计算结果如下:
                          这里写图片描述

对于婚姻状况的离散属性的计算结果如下:
                          这里写图片描述

对于收入这一连续属性的计算结果如下:
                          这里写图片描述
最后,选择基尼指数最小的属性作为候选划分属性,并进行递归划分。

Step8:防止过拟合的常见方法:剪枝
将复杂的决策树进行简化的过程称为剪枝,它的目的是去掉一些节点,包括叶节点和中间节点。剪枝常用的方法有预剪枝和后剪枝两种。
(1)预剪枝的优缺点:预剪枝是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点的产生。预剪枝使得决策树的很多分支没有“展开”,不仅降低了过拟合的风险,还显著减少了决策树的训练和测试的时间开销。但是,有些分支的当前划分虽不能提升泛化性能,甚至可能使泛化性能暂时降低,但是在其基础上进行的后续话跟却有可能使得泛化性能显著提升。即预剪枝容易达成局部最优解。
(2)后剪枝的优缺点:后剪枝就是在决策树构建完后再去掉一些节点,通常比预剪枝决策树保留更多的分支。其欠拟合风险小,泛化性能往往优于预剪枝决策树。但是其训练时间开销比未剪枝和预剪枝决策树要大得多。常见后剪枝方法有四种:悲观错误剪枝(PEP)、最小错误剪枝(MEP)、代价复杂度剪枝(CCP)和基于错误的剪枝(EBP)。
(3)C4.5采用Pessimistic Error Pruning(PEP,悲观剪枝)。该算法被认为是当前决策树后剪枝算法中精度比较高的算法之一,但是也有存在缺陷。首先,PEP算法是唯一使用Top-Down剪枝策略,这种策略会导致与先剪枝出现同样的问题,将该结点的某子节点不需要被剪枝时被剪掉;另外PEP方法会有剪枝失败的情况出现。
虽然PEP方法存在一些局限性,但是在实际应用中表现出了较高的精度,。另外,PEP方法不需要分离训练集合和验证集合,对于数据量比较少的情况比较有利。再者,其剪枝策略比其它方法相比效率更高,速度更快。因为在剪枝过程中,树中的每颗子树最多需要访问一次,在最坏的情况下,它的计算时间复杂度也只和非剪枝树的非叶子节点数目成线性关系。
4)CART算法使用了Cost-Complexity Pruning(CCP、代价复杂度)。

参考资料:周志华_《机器学习》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值