cart树剪枝

当前子树的损失函数:

Ca(T)=C(T)+a|T|, 其中C(T)为对训练数据的预测误差,|T|为树的叶子结点数目,反映模型的复杂度。对固定的a,一定存在使损失函数Ca(T)最小的子树,将其表示为Ta, 极端情况,当 a=0时,整体树是最优的,当a>时,根节点组成的单节点树是最优的。

对应于每一个参数\alpha,剪枝后的子树是唯一的。在算法中,给定参数\alpha,找寻损失函数最小的子树T_{\alpha},也就是说<\alpha,T_{\alpha}>是一一对应的!并不存在一个\alpha对应于多个子树。CART剪枝算法中将用到该基本假设。因为当a大的时候,最优子树Ta偏小,当a小的时候,最优子树Ta偏大。

从最宏观的角度去考虑的话,就是利用\alpha生成T_{\alpha}。CART剪枝算法的核心思想就是说,一个复杂的决策树,不管多复杂,都能生成有限个数的子树,我们记作\{T_0,T_1,...,T_n\}那么我们只要找寻到对应于每一个子树的\alpha,即得到对应的子树!没错,抽象一下,从【有限个数的T_\alpha】中找寻对应的【\alpha

\alpha =0或者充分小:
C_{\alpha}(T_t) < C_{\alpha}(t)
决策树叶结点越多,不确定性越低。

当增大\alpha时,总有那么一个点,能够使得:
C_{\alpha}(T_t) = C_{\alpha}(t)

当继续增大\alpha时,
C_{\alpha}(T_t) > C_{\alpha}(t)
所以我们只要取\alpha_1 = \frac{C(t)-C(T_t)}{\vert T_t\vert-1}时,当且仅当\alpha \ge \alpha_1时,剪枝必然发生。

剪枝已经发生,此时,对应于每一个子结点t会生成不同的\alpha我们记作\alpha(t),由此得: C_{\alpha}(t) = C(t)+\alpha(t)
剪枝的决策树什么时候最优?对于当前参数\alpha(t)而言,能够找到这样的t,使得 \min_{t}\{C(t)+\alpha(t)\}
然而在这里为了能够求得\alpha的一个序列,直接最小化了
\min_{t}(\frac{C(t)-C(T_t)}{\vert T_t\vert-1})
找的\alpha即找到了子结点t,即完成了剪枝,即找到了最优子树T_1

有了上述的步骤,为了得到决策树T_0的所有子序列,直接递归下去,直到根节点即可。在这一过程中,不断地增加\alpha的值,产生新的区间。

 

 采用交叉验证法在子树序列中选取最优子树。

 

https://www.zhihu.com/question/22697086

 

posted @   合唱团abc  阅读(823)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示