第五章决策树.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)=−[Nt​Nt1​​logNt​Nt1​​+Nt​Nt2​​logNt​Nt2​​+⋯+Nt​Ntk​​logNt​Ntk​​]=−k∑​Nt​Ntk​​logNt​Ntk​​
α ≥ 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=1∑T​NNt​​Ht​(T)+α∣T∣=N∑t=1T​Nt​Ht​(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=1∑T​Nt​Ht​(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α​。
这个算法就是要计算剪枝前后树的熵是否有变化,变小则剪枝,否则不剪
第五章决策树.5.2 剪枝
如上图所示,要求变化,红圈部分是剪枝前后不变的部分,可以不用计算,只计算剪枝部分。
在这个基础上还有CART算法,不展开。

上一篇:三角形某角取到最大值时


下一篇:等差等比数列综合