CART后剪枝理解

转载https://blog.csdn.net/zhengzhenxian/article/details/79083643

最近也是要找工作,在看李航的《统计学方法》
在决策树部分基本都能明白(可能我明白的的是错的)
对于CART剪枝的细节不是很明白
看了这个博主写的CART决策树部分,觉得讲得不错,细节满满
有一点个人理解,写一写

首先输入:生成好的回归/分类树
它没有类似正则化的惩罚项,所以拟合的不错,我们可以把它想象成:没有人惩罚它之前,他都是最优的
CART后剪枝理解_第1张图片
T为任意子树,C(T)为预测误差,可以是平方误差也可以是基尼指数,|T|为子树T的叶子节点个数,注意是叶子节点,α 是参数,C(T)衡量训练数据的拟合程度,|T|衡量树的复杂度(即大小),α 权衡拟合程度与树的复杂度。

书上写的也很清楚,
α↑,对叶子多的树惩罚严重,叶子数↓,树就简单
考虑极端情况
α=0,这不就是生成好的,什么多余操作也没有的树嘛,肯定是叶子最多的
α=∞,就算只有1个结点,惩罚项也接近∞,更别说再加一个叶子节点了。所以最优就是1个结点。

和师弟讨论为什么要用α序列来制造子树序列,进而得到最优树呢?
书上讲的是,对于固定的α,一定存在使损失函数Cα(T)最小的子树。
但是这个情况只针对α为某个确定值时,一旦这α变大或者变小,或许存在另一个子树t使得损失函数Cα(t)≤Cα(T),我们无法确定,所以必须遍历整个子树的结构才知道对应的子树是否是最优,那么怎么遍历整个树的子结构,那就是按照书上的序列来构造

从整体树T0开始,对T0的任意内部结点t,以t为单节点树的损失函数为
Cα(t) = C(t) + α
本来也是有|T|的,但是只有一个节点,|T|=1

以t为根节点的子树Tt的损失函数为
Cα(Tt) = C(Tt) + α|Tt|

当α=0或者足够小时,有不等式
Cα(Tt) < Cα(t)

这里可以理解成剪枝前,树属于那种拟合效果很好的结构,各叶子节点内的混乱度就会很低,那么C(T)就会小
剪枝后,该内部结点的所有叶子节点全部坍缩到这个内部结点t,也就是1个节点包含所有t内的样本,这时候分类的话,只能选数量最多的类当做这个t的输出,这时候的结点混乱程度变大,C(t)变大,因为这时候α足够小,惩罚系数还不够大。

渐渐α↑,肯定有相等的一天,我们假设此时是α1,此时两种结构的损失函数一样大
但是单节点的 t 结构更简单,泛化能力更好,所以在相等时选择剪枝。

这时候我们发现,未剪枝的T0所谓的最优时期只在α∈(0,α1),
这里为什么是从0开始,因为前面虽然写的对任意内部结点,但是实际上还是从深度最深的内部结点开始,从下热上,动态规划,减少多余计算。
CART后剪枝理解_第2张图片
我们假设T0是完整树,T1是从下而上第一次剪枝,以此类推
我们可以联想Ti只是在α∈(a,b),a
也就是在
CART后剪枝理解_第3张图片
Ti在αi ~ αi+1内是最优的
αi ~ αi+1内随便取值,Ti是最优的

然后,这个树结构啊,一旦确定下来,那么他的C(T)就确定下来了,就是他的经验损失,我么你可以看做是一个常数,只是不同结构下这个常数的值不一样,叶子节点越多,这个常数越小,因为拟合的好,经验损失少,反之也是。

观察损失函数
在这里插入图片描述
我们把α当做自变量,Cα(T)当做因变量,看做y=ax+b
那么|T|就是x的系数,α就是x

CART后剪枝理解_第4张图片

图中的Ti代表的是子树。不是代表截距值。
随着剪枝的进行,经验损失越来越大,对于y=ax+b的截距b就越来越大
那么剪枝后,叶子节点越来越少,对应系数a也渐渐变小,直线的斜度越来越小,那么相交的点就是αi的取值,在这一点,损失相等

至于为什么要从小到大计算。从下而上剪枝,我们举个例子α4,假设我们从完整树开始,就要对随机的内部结点t2进行剪枝,好的,我们计算了T0和T2的临界值,但是此时最优模型确在T1上,因为此时,T0相对于T0是未剪枝的状态,结果未剪枝的损失更大,意思是说你要想越过一个最优状态,去直接剪枝到下下个最优状态,是不可能求得最优解的,中间会使得其他结点的损失升高,因为损失是全局的。

转载https://blog.csdn.net/zhengzhenxian/article/details/79083643
这个博主写的好,我只是从另外的方面理解了下

你可能感兴趣的:(机器学习)