决策树后剪枝

决策树-ID3、C4.5

决策树-CART分类树

决策树-CART回归树


决策树的剪枝通过极小化决策树整体的损失函数。(决策树的生成只考虑局部最优,决策树的剪枝考虑全局最优)。

t 是树 T 的叶节点,个数为 |T|,该叶节点有 Nt 个样本点,其中 k 类的样本点有 Ntk 个,k=1,2,...,KHt(T) 为叶节点 t 上的经验熵,α0 为参数,则决策树的损失函数

所有叶节点的经验熵 + α × 所有叶节点的个数

(1)Cα(T)=t=1|T|NtHt(T)+α|T|

经验熵(特征熵)

(2)Ht(T)=kNtkNtlogNtkNt

在损失函数中,将式 (1) 右端的第 1 项记为

(3)C(T)=t=1|T|NtHt(T)=t=1|T|k=1KNtklogNtkNt

这时有

(4)Cα(T)=C(T)+α|T|

(4) 中,C(T) 表示模型对训练集的预测误差,即模型与训练集的拟合程度。|T| 表示模型复杂度,

参数 α0 控制两者之间的影响。较大的 α 促使选择较简单的模型(树),较小的 α 促使选择较复杂的模型(树)。α=0 表示只考虑模型与训练集的拟合程度,不考虑模型的复杂度。

剪枝通过优化损失函数减小模型复杂度,就是当 α 确定时,选择损失函数最小的模型,即损失函数最小的子树。

α 值确定时,子树越大,与训练集拟合越好,但模型复杂度越高;子树越小,与训练集拟合的不好,复杂度越低。损失函数表示了对两者的平衡。

(1)(4) 定义的损失函数极小化等价于正则化的极大似然估计。所以,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。


后剪枝算法:

输入:生成的决策树 T,参数 α

输出:修剪后的子树 Tα

① 计算每个叶节点的经验熵。

② 递归地从树上的叶节点向上回缩。

设一组叶节点回缩到父结点之前与之后的整体树分别为 TBTA,其对应的损失函数值分别为 Cα(TB)Cα(TA),如果

(5)Cα(TA)Cα(TB)

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

③ 返回 ②,直至不能继续为止,得到损失函数最小的子树 Tα



posted @   做梦当财神  阅读(1647)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示