@chanvee
2015-09-10T13:36:07.000000Z
字数 2499
阅读 3782
数据挖掘
决策树
决策树是一种简单的机器学习方法。决策树经过训练之后,看起来像是以树状形式排列的一系列if-then语句。一旦我们有了决策树,只要沿着树的路径一直向下,正确回答每一个问题,最终就会得到答案。沿着最终的叶节点向上回溯,就会得到一个有关最终分类结果的推理过程。今天要总结的包括三种决策树算法:ID3,C45和CART,其中ID3和C45常用来解决分类问题,CART常用来解决回归问题。
ID3是最基础的一种决策树算法,其思想就是根据特征(feature)的值逐步把数据分类,直到所有的叶子节点属于同一个类型结束。那么这些特征及其值应该怎么来选呢,这里我们就要引入一个概念叫做熵,熵最早是由香农为了解决对系统信息量化度量的问题而提出的,它的计算公式如下:
在引入熵之后,接下来我们就可以解决上面的问题了。方法是根据某一个特征划分数据集,其划分前后信息熵会有变化,优先选择的特征是让给让信息熵变化最大或者信息熵增益比最大的特征。根据这样的准侧,我们就可以递归的生成决策树了。
C45算法是在ID3算法上的改进,它与ID3算法最大区别在于其不是根据信息熵增益最大来选择特征,而是根据信息熵增益率来选择。这是因为信息增益存在的一个问题:假设某个属性存在大量的不同值,在划分时将每个值成为一个结点,这样决策树在选择属性时,将偏向于选择该属性,但这肯定是不正确(导致过拟合)的。因此有必要使用一种更好的方法,那就是C4.5中使用的信息增益率(Info Gain Ratio),其考虑了分支数量和尺寸的因素,使用称为内在信息(Intrinsic Information)的概念[1]。 信息熵增益率计算如下:
设样本集S按照离散属性
CART(Classification and Regression Trees)分类回归树,它使用基尼不纯度(Gini Impurity)来决定划分,基尼不纯度的定义为:
节点内的平方残差为:
这里只简单的介绍一下思想。之所以要剪枝,是因为当决策树分支太多或深度太深,就很有可能出现过拟合,因此需要剪枝。一种很naive的方法是预剪枝,就是当树的深度大于某个阈值时停止,但是我们很难去定义这个阈值;另外一种方法时当熵的增加小于某个阈值时停止,这种方法存在的问题是决策树的构建过程中,往往是在熵增加很小后然后熵才会较大的增加。因此,常用的剪枝方法是后剪枝。所谓后剪枝是指在树创建成功后再进行剪枝操作,其方法是,对具有相同节点的一组节点进行检查,判断如果将其合并,熵的增加小于某个阈值的话则进行合并(剪枝)。