李航. 统计学习方法[M]. 清华大学出版社, 2012.
5.4 决策树的剪枝(pruning)
剪枝是从已生成的树上裁掉一些子树或叶节点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。决策树的剪枝往往通过极小化决策树整体的损失函数或代价函数来实现。
设树的叶结点个数为,是树的叶结点,该叶结点有个样本点,其中类的样本点有个,为叶结点上的经验熵,为参数,则决策树学习的损失函数可以定义为:
其中表示模型对训练数据的预测误差,即模型与训练数据的拟合程度;表示模型复杂度。剪枝,就是当确定时,选择损失函数最小的模型,即损失函数最小的子树。
决策树剪枝算法
输入:生成算法产生的整个树,参数
输出:修剪后的子树
(1) 计算每个结点的经验熵
(2) 递归地从树的叶结点向上回缩。如果回缩到父结点后损失函数变小,则进行剪枝,父结点变为新的叶结点;
(3) 返回(2)直到不能继续为止。
5.5 CART算法
分类与回归树(classification and regression tree, CART)同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”。
-
5.5.1 CART生成
- 5.5.1.1 回归树的生成(最小二乘回归树)
一颗回归树对应着输入空间(即特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入空间划分为个单元,并且在每个单元上有一个固定的输出值,于是回归树模型可表示为
当输入空间划分确定时,可以用平方误差来表示回归树对于训练数据的预测误差,用平方误差最小化的准则求解每个单元上的最优输出值。易知,的最优值为中所有输入实例对应的输出的均值,即。
下面用启发式的方法,选择第个变量和它的取值,作为切分变量(splitting variable)和切分点(splitting point),并定义两个区域
和
然后寻找最优切分变量和最优切分点。具体地,求解
对固定输入变量可以找到最优切分点。遍历所有输入变量,找到最优的切分变量及其最优切分点,构成一个对。依此将输入空间划分为两个区域。接着对每个区域重复上述划分过程,直到满足停止条件为止。
* **5.5.1.2 分类树的生成**
定义(基尼指数)
分类问题中,假设由个类,样本点属于第类的概率为,则概率分布的基尼指数定义为:
对于给定的样本集合D,其基尼指数为。
如果样本集合D根据特征A是否取某一可能值a被分割为和两部分,即
和
则在特征A的条件下,集合D的基尼指数定义为
基尼指数表示集合D的不确定性,基尼指数表示经分割后集合D的不确定性。基尼指数越大,样本集合的不确定性越大。
CART分类树生成算法
每次在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数Gini(D,A)最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征和最优切分点,从现结点生成两个子结点,将训练数据集依次分配到两个子结点中去。
- 5.5.2 CART剪枝
CART剪枝分为两步:①首先从生成算法产生的决策树底端开始不断剪枝,直到的根结点,形成一个子树序列;②然后通过交叉验证法在独立的验证集上对子树序列进行测试,从中选出最优子树。
CART剪枝算法
输入:CART算法生成的决策树
输出:最优决策树
(1) 设,,。
(2) 自下而上地对各内部结点计算、以及
其中,表示以为根结点的子树,是对训练数据的预测误差,是的叶结点个数。
(3) 对的内部结点进行剪枝,并对叶结点以多数表决法决定其类,得到树。
(4) 设,,。
(5) 如果T_k不是由根结点及两个叶结点构成的树,则回到步骤(2);否则令。
(6) 采用交叉验证法在子树序列中选择最优子树。
Breiman等人证明:
可以用递归的方法对树进行剪枝。将从小增大,,产生一系列的区间;剪枝得到的子树对应着区间的最优子树序列,序列中的子树是嵌套的。
具体地,从整体树开始剪枝。对的任意内部结点t,以t为单位结点树的损失函数是
以为根结点的子树的损失函数是
当或充分小时,有不等式。当再增大时,不等式反向。只要,与有相同的损失函数值,而的结点少因此比更可取,对进行剪枝。
为此,对中每一内部结点,计算
它表示剪枝后整体损失函数减少的程度。在中剪去最小的,将得到的子树作为,同时将最小的设为。为区间的最优子树。
如此剪枝下去,直到得到根结点。在这一过程中,不断增加的值,产生新的区间。