第五章决策树.5.2 剪枝


本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考: 在线Latex公式

导入

模型常常会出现过拟合的现象,造成过拟合的原因有:
1.训练epoch太多(解决方法是早停)
2.模型太复杂(降低模型复杂度:减少参数,网络层数减少,剪枝)

剪枝

1.复杂的模型结构往往可能会造成过拟合的现象。
2.剪枝的目的是在决策树构造结束后,去裁掉部分枝桠以此降低模型复杂度。
后剪枝:生成树之后再剪枝。
预剪枝:在生成树的过程中干预生成过程,使得模型倾向于不生成复杂的模型。
设树 T T T的叶节点个数为 ∣ T ∣ |T| T t t t是树 T T T的叶节点,该叶节点有 N t N_t Nt个样本点,其中 k k k类的样本点有 N t k N_{tk} Ntk个, k = 1 , 2 … , K k=1,2…,K k=1,2,K H t ( T ) H_t(T) Ht(T)为叶节点 t t t上的经验熵
H t ( T ) = − [ N t 1 N t log ⁡ N t 1 N t + N t 2 N t log ⁡ N t 2 N t + ⋯ + N t k N t log ⁡ N t k N t ] = − ∑ k N t k N t log ⁡ N t k N t H_t(T)=-\left[\cfrac{N_{t1}}{N_t}\log \cfrac{N_{t1}}{N_t}+\cfrac{N_{t2}}{N_t}\log \cfrac{N_{t2}}{N_t}+\cdots+\cfrac{N_{tk}}{N_t}\log \cfrac{N_{tk}}{N_t}\right]\\=-\sum_k \cfrac{N_{tk}}{N_t}\log \cfrac{N_{tk}}{N_t} Ht(T)=[NtNt1logNtNt1+NtNt2logNtNt2++NtNtklogNtNtk]=kNtNtklogNtNtk
α ≥ 0 \alpha≥0 α0为参数,则决策树学习的损失函数可以定义为:
C α ( T ) = ∑ t = 1 T N t N H t ( T ) + α ∣ T ∣ = ∑ t = 1 T N t H t ( T ) N + α ∣ T ∣ C_\alpha(T)=\sum_{t=1}^T\cfrac{N_t}{N}H_t(T)+\alpha|T|\\ =\cfrac{\sum_{t=1}^TN_tH_t(T)}{N}+\alpha|T| Cα(T)=t=1TNNtHt(T)+αT=Nt=1TNtHt(T)+αT
上式中分母N代表训练集中所有的样本数量,是一个固定值,因此去掉后就和书上的形式是一样的了:
C α ( T ) = ∑ t = 1 T N t H t ( T ) + α ∣ T ∣ C_\alpha(T)=\sum_{t=1}^TN_tH_t(T)+\alpha|T| Cα(T)=t=1TNtHt(T)+αT
这个式子的第一项是希望整棵树的经验熵越小越好,第二项则是希望树的节点越少越好,如果去掉某个节点对整棵树的熵影响不大,则模型倾向去掉这个节点。 α \alpha α是惩罚因子。将上式可以写为:
C α ( T ) = C ( T ) + α ∣ T ∣ C_\alpha(T)=C(T)+\alpha|T| Cα(T)=C(T)+αT

剪枝算法

输入:生成算法产生的整个树 T T T,参数 α \alpha α
输出:修剪后的子树 T α T_\alpha Tα
(1)计算每个结点的经验熵。
(2)递归地从树的叶结点向上回缩。
设一组叶结点回缩到其父结点之前与之后的整体树分别为 T B T_B TB T A T_A TA,其对应的损失函数值分别是 C α ( T A ) C_\alpha(T_A) Cα(TA) C α ( T B ) C_\alpha(T_B) Cα(TB),如果
C α ( T A ) ≤ C α ( T B ) C_\alpha(T_A)\le C_\alpha(T_B) Cα(TA)Cα(TB)
则进行剪枝,即将父结点变为新的叶结点。
(3)返回(2),直至不能继续为止,得到损失函数最小的子树 T α T_\alpha Tα
这个算法就是要计算剪枝前后树的熵是否有变化,变小则剪枝,否则不剪
在这里插入图片描述
如上图所示,要求变化,红圈部分是剪枝前后不变的部分,可以不用计算,只计算剪枝部分。
在这个基础上还有CART算法,不展开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值