概述
接下来是三种经典的决策树算法的学习过程:
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、代价复杂度)。。
参考资料:周志华_《机器学习》
最后
以上就是包容香烟为你收集整理的决策树的初体验的全部内容,希望文章能够帮你解决决策树的初体验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复