决策树剪枝西瓜书实现_第五章 决策树(第4节 决策树的剪枝)

本文介绍了决策树的剪枝过程,旨在简化决策树模型,防止过拟合。通过极小化损失函数来实现,详细阐述了剪枝算法,包括计算结点的经验熵,递归回缩叶结点,以及如何得到损失函数最小的子树。剪枝是决策树学习中从局部到整体优化模型的重要步骤。
摘要由CSDN通过智能技术生成

四、决策树的剪枝

上一篇文章说了,由于决策树生成算法过多地考虑如何提高对训练数据的正确分类,从而构建过于复杂的决策树,这样产生的决策树往往对训练数据的分类很准确,却对未知的测试数据的分类没有那么准确,即出现过拟合现象

我们需要对已生成的决策树进行简化,这个简化的过程我们称之为剪枝(pruning)。

具体就是剪掉一些不重要的子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。

说白了,剪枝的目的就是得到最优的决策树模型。这个模型不仅对训练训练数据有很好的分类,对预测数据也能很好地预测。

决策树的剪枝往往通过极小化决策树整体的损失函数(loss funtion)代价函数(cost funtion)来实现。

下面我们来叙述一下一个常用的简单决策树学习的剪枝算法

(先假设模型的相关变量)

设树

叶结点个数
是树
叶结点,该叶结点有
样本点,其中
类的样本点有
个,
为叶结点
上的
经验熵
为参数,则决策树学习的
损失函数可以定义为:

其中经验熵

我们为了式子看起来简单好看,将损失函数的第一项记作:

这样,损失函数就可以表示为:

(看起来很完美~~~~~)

如果你看到了这里,说明你是不怕难的人,但是可能对上面的表达式还是一知半解,无法真正理解。没关系,我在这里将我整个理解过程分享出来,尽力帮助你的理解。

首先我们要知道那些假设变量的含义:

比如对于下面这棵树

ceb6f136905c5f33795f4e70b7370a2e.png

叶结点个数

叶结点:t (用变量t来代指叶结点,我们可知,

)

叶结点对应的采样点个数

(每个叶结点对应着整个样本空间或训练集的一个子空间或子集,可知,
)

每个叶结点对应的子空间中,属于k类的样本点个数

,其中
(就比如第一个叶结点,即t=1,它对应的子空间中样本点的个数为
,这
个样本点中属于各个类别的样本点数分别为
)

叶结点t的经验熵:

,可以参考上一篇的经验熵相关的内容。

上述就是我自己的理解。

我们回到模型

中,第一项
表示模型对训练数据的
预测误差,即模型与训练数据的 拟合程度
表示模型的
复杂度。如何理解呢?从公式
中可以看出来,一个树的叶结点越多,即模型越复杂,
就越小。极端情况如每一个实例样本点都对应一个叶结点,我们知道此时一般是过拟合的,此时模型对训练数据完全正确分类,
;相反如果叶结点较少,即模型较为简单时,
就越大。极端情况如只有一个叶结点,这个叶结点包含了所有的实例样本点,此时
相对较小(可能远小于1,接近于0),
就非常大。所以就有了一个
平衡机制在里面:如下图

0dc2b54d47260e5c59c3377c103eeb91.png

剪枝,就是

确定时,选择损失函数最小的模型。

与上一篇《决策树的生成》相比,决策树的生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。而决策树剪枝通过优化损失函数还考虑了减小模型的复杂度。

决策树生成学习局部的模型,而决策树剪枝学习整体的模型。

下面介绍剪枝算法:

输入:生成算法产生的整个树T,参数

输出:修剪后的子树

(1) 计算每个结点的经验熵

(2) 递归地从树的叶结点向上回缩。

设一组叶结点回缩到其父结点之前与之后的整体树分别为

,其对应的损失函数值分别是
,如果

则进行剪枝,即将父结点变为新的叶结点。

(3) 返回(2) ,直至不能继续为止,得到损失函数最小的子树

3f4deb32800b77027f22a9f2fd7826c5.png

注意:决策树的剪枝算法可以由一种动态规划的算法实现。(这方面内容。。。嗯。。先留着吧)。

小小心得:刚开始的时候脑袋是大的,看着十分头痛。多次想着要不明天再看吧,但是人要成长,总是需要去做困难的事才行。硬着头皮,一字一句,发现还是很容易理解的,都是纸老虎而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值