决策树为什么要进行剪枝处理和决策树的剪枝策略,以及后剪枝方法——代价复杂度(CCP)算法剪枝系数的计算

本文深入探讨决策树剪枝的必要性,包括预剪枝和后剪枝两种策略,解释如何通过剪枝减少过拟合风险,提高模型泛化能力。特别介绍了CART算法的后剪枝方法——代价复杂度算法,以及剪枝系数α的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

决策树的剪枝处理

为什么要进行决策树的剪枝处理呢?

决策树的过拟合的风险很大,因为理论上来说可以将数据完全分的开,如果树足够大,每个叶子节点就剩下了一个数据。那么,这就会造成模型在训练集上的拟合效果很好,但是泛化能力很差,对新样本的适应能力不足。所以,对决策树进行剪枝,可以降低过拟合的风险。

决策树的剪枝策略

决策树的剪枝策略分为预剪枝和后剪枝

  • 预剪枝

预剪枝就是边建立决策时边进行剪枝的操作。在决策树生成的过程中,对每个节点在划分前向首先进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶子节点。

预剪枝可以:限制树的深度,叶子节点个数,叶子节点的样本数,信息增益量等。

  • 后剪枝

当建立完决策树后再进行剪枝操作。后剪枝是先从训练集生成一棵完整的决策树,然后自底向上地对非叶子节点进行考察,若将该节点对应的子树替换为叶子节点能够带来决策树泛化性能的提升,将该子树替换为叶子节点。

通过一定的衡量标准。这里讲的是CART算法的后剪枝方法——代价复杂度算法,即CCP算法。

CART算法请参考博文

T T T表示树

C ( T ) C(T) C(T)表示当前损失

T l e a f T_{leaf} Tleaf表示分裂后的叶子节点数

α ≥ 0 \alpha\ge0 α0为参数

C α ( T ) C_\alpha(T) Cα(T)表示损失函数的正则化

α ∣ T l e a f ∣ \alpha|T_{leaf}| αTleaf实际上是损失函数的正则项

下面是代价复杂度算法的基本思想:

C α ( T ) = C ( T ) + α ∣ T l e a f ∣ C_\alpha(T) = C(T)+\alpha|T_{leaf}| Cα(T)=C(T)+αTleaf

C ( T ) C(T) C(T)表示当前损失,实际上就是求分类后叶子节点的经验熵期望,计算方式为当前叶节点的样本数与当前叶结点的熵值的乘积。也就是说,叶子节点含有的样本数越多,那么这个分类效果就越混乱,损失值越大。

熵的计算参考我的博文

C ( T ) = ∑ t = 1 ∣ T l e a f ∣ N t H t ( T ) \begin{aligned}C(T) =\sum_{t=1}^{|T_{leaf}|} N_tH_t(T)\end{aligned} C(T)=t=1TleafNtHt(T)

N t N_t Nt表示该叶结点含有的样本点个数

那么, C α ( T ) = ∑ t = 1 ∣ T l e a f ∣ N t H t ( T ) + α ∣ T l e a f ∣ \begin{aligned}C_\alpha(T) = \sum_{t=1}^{|T_{leaf}|} N_tH_t(T)+\alpha|T_{leaf}|\end{aligned} Cα(T)=t=1TleafNtHt(T)+αTleaf

α ∣ T l e a f ∣ \alpha|T_{leaf}| αTleaf是修正项,它是基于复杂度的考虑。当叶节点分裂后与不分裂的熵值相等,实际上没有进行任何分类,但是我们认为不分类的情况更好,因为,分类后树的复杂度会更高。加了修正项后,如果 α = 0 \alpha=0 α=0表示未剪枝的树损失更小,也就是熵更小,如果 α → ∞ \alpha \to \infty α表示剪枝到根节点更好,因为叶结点的个数占了主导地位。修正项 α ∣ T l e a f ∣ \alpha|T_{leaf}| αTleaf可以避免过拟合。 α \alpha α值的设置可以更好的避免出现完全树和根节点这种极短情况,所以可以避免过拟合。

  • 剪枝系数 α \alpha α的计算

假设当前对以 t t t为根节点的子树 T t T_t Tt剪枝,剪枝后只保留 t t t本身,而删除掉所有的子节点

剪枝后的损失函数为 C α ( t ) = C ( t ) + α C_\alpha(t)=C(t)+\alpha Cα(t)=C(t)+α

剪枝前的损失函数为 C α ( T t ) = C ( T t ) + α ∣ T l e a f ∣ C_\alpha(T_t) = C(T_t)+\alpha|T_{leaf}| Cα(Tt)=C(Tt)+αTleaf

令二者相等可得到 α = C ( t ) − C ( T ) ∣ T l e a f ∣ − 1 \begin{aligned}\alpha = \frac{C(t)-C(T)}{|T_{leaf}|-1}\end{aligned} α=Tleaf1C(t)C(T),因为损失相同,那么就取复杂度小的,所以就可以剪枝。 α \alpha α就是节点 t t t的剪枝系数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值