决策树是一种用于分类的树结构。如图所示,它由结点(node)和有向边(directed edge)组成,结点包括内部结点(internal node)和叶结点(leaf node),内部结点表示一个特征或属性,叶结点表示一个类。
那么决策树如何进行分类呢?首先,从根结点开始,根据待分类数据的某一特征值对其进行划分,分配到相应子结点,因此,每一个子结点都对应了该特征的一个取值。像这样递归进行,直到到达叶结点。
上一部分提到决策树根据特征值对数据进行划分,不同的特征选择方式可以得到不同的决策树,而我们想得到的决策树,它不仅能很好地拟合训练数据,还有较好的泛化能力。
那么该怎么选特征呢?一个基本准则是,每一步都递归地选择最优特征,可以对各个子数据集达到最后的分类结果。
如何评价特征的优劣呢?这就不得不提到信息增益和信息增益比这两个概念了。
说到信息增益,不得不先提一提熵(entropy)和条件熵(conditional entropy)。
熵是表示随机变量不确定性的度量,定义如下:
条件熵表示在已知随机变量X的条件下,随机变量Y的不确定性,定义如下:
当熵和条件熵中的概率由数据估计得到时,就分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)。
信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少程度。定义如下:
回到原来的问题,该如何评价特征的优劣呢?我们就用信息增益!在这里,信息增益表示了由于特征A而使得对数据集D的分类的不确定性减少的程度。信息增益大的特征就具有更强的分类能力啦~
具体如何根据信息增益选择特征呢?用这个方法:对训练数据集(或子集)D,计算其每个特征的信息增益,比较它们的大小,选择信息增益最大的特征。
了解了信息增益后,信息增益比就很好理解了,信息增益比是信息增益关于特征的值的熵之比,具体如下:
ID3算法的基本思想是从根结点开始,在每一个结点上都计算所有可能的特征的信息增益,然后选出信息增益最大的一个特征作为该结点的特征;然后不断递归进行,构建决策树。也就是说 ,ID3算法每一步都选择信息增益最大的特征作为结点的分类特征,构建子结点。
C4.5算法与ID3算法相似,区别在于,C4.5算法用信息增益比来选择特征。
按以上生成方式递归地产生决策树容易过拟合,即在训练集上分类效果非常好,但是泛化能力不强,对于其他数据集分类效果并没有那么准确。其原因是,构建出的决策树往往过于复杂,那么解决这个问题的办法就是通过剪枝算法降低树结构的复杂度。
剪枝是一个从已生成的树上裁掉一些子树或者叶结点,并将其根结点或父节点作为新的叶结点的过程。
剪枝往往通过最小化整体损失函数(loss function)或代价函数(cost function)来实现。损失函数具体定义如下:
C(T)表示模型预测误差,衡量了拟合程度;|T|表示模型复杂度。损失函数制衡了拟合程度和模型复杂度之间的平衡。
剪枝的总体目标是令损失函数最小化,因此剪枝算法的基本思想是如果剪枝回缩后损失的函数值比不剪枝更小,那么就剪枝回缩,不然不剪枝。
分类树与回归树(classification and regression tree, CART)模型是应用广泛的决策树学习方法,既可用于分类,也可用于回归。
CART算法由两步组成:
(1)决策树生成:基于训练数据生成决策树,决策树要尽可能大,拟合度尽可能高
(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,剪枝的标准为令损失函数最小。
接下来我们分别来看看CART生成算法和剪枝算法。
对于回归树,用平方误差最小化准则;对于分类树,用基尼指数(Gini index)最小化准则,进行特征选择,递归地构建决策树。
回归树的生成
在输出变量Y为连续变量时,我们选用回归树。
给定训练数据集为 D=(x1,y1),(x2,y2),…,(xN,yN) D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N )
假设输入空间被划分为m个单元 R1,R2,…,Rm R 1 , R 2 , … , R m ,每个单元的输出值为 cm c m , I I 为指示函数,回归树模型可表示为
训练误差为 ∑xi∈Rm(y−f(xi))2 ∑ x i ∈ R m ( y − f ( x i ) ) 2
cm c m 最优值为 cm^=ave(yi|xi∈Rm) c m ^ = a v e ( y i | x i ∈ R m )
如何对输入空间进行划分呢?采用的办法是,遍历所有特征和特征的取值,找到最优切分变量 x(j) x ( j ) 和最优切分点 s s ,满足
对于每一个区域都迭代地重复上述划分过程,直到满足停止条件,就生成了一棵回归树。
分类树的生成
分类树用基尼指数来选择最优特征,同时确定最优二值切分点。其中,基尼指数定义如下:
分类树的算法步骤与回归树算法步骤相似,只不过分类树用基尼指数来选择最优特征和确定切分点。具体算法步骤如下:
CART剪枝算法由两步构成:
(1)从决策树 T0 T 0 底端不断剪枝,直到到达根结点,得到子树序列 T0,T1,…,Tn T 0 , T 1 , … , T n
(2)通过交叉验证法,在独立的验证集上对子树序列进行测试,从中选择最优子树 Tα T α 。
具体剪枝算法为:
参考:
李航 - 统计学习方法