决策树后剪枝
决策树的剪枝通过极小化决策树整体的损失函数。(决策树的生成只考虑局部最优,决策树的剪枝考虑全局最优)。
设 是树 的叶节点,个数为 ,该叶节点有 个样本点,其中 类的样本点有 个,, 为叶节点 上的经验熵, 为参数,则决策树的损失函数为
所有叶节点的经验熵 + 所有叶节点的个数
经验熵(特征熵)为
在损失函数中,将式 右端的第 项记为
这时有
式 中, 表示模型对训练集的预测误差,即模型与训练集的拟合程度。 表示模型复杂度,
参数 控制两者之间的影响。较大的 促使选择较简单的模型(树),较小的 促使选择较复杂的模型(树)。 表示只考虑模型与训练集的拟合程度,不考虑模型的复杂度。
剪枝通过优化损失函数减小模型复杂度,就是当 确定时,选择损失函数最小的模型,即损失函数最小的子树。
当 值确定时,子树越大,与训练集拟合越好,但模型复杂度越高;子树越小,与训练集拟合的不好,复杂度越低。损失函数表示了对两者的平衡。
式 、 定义的损失函数极小化等价于正则化的极大似然估计。所以,利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。
后剪枝算法:
输入:生成的决策树 ,参数 ;
输出:修剪后的子树 。
① 计算每个叶节点的经验熵。
② 递归地从树上的叶节点向上回缩。
设一组叶节点回缩到父结点之前与之后的整体树分别为 与 ,其对应的损失函数值分别为 、,如果
则进行剪枝,将父结点变为新的叶节点。
③ 返回 ②,直至不能继续为止,得到损失函数最小的子树 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)