代价复杂度剪枝

363 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

图片.png

叶节点数据分布:

T8:{类1:3,,类2:2}

T9:{类1:0,类2:2}

T10:{类1:6,类2:3}

图片.png

该算法为子树Tt定义了代价(cost)和复杂度(complexity),以及一个可由用户设置的衡量代价与复杂度之间关系的参数α,其中,代价指在剪枝过程中因子树Tt被叶节点t替代而增加的错误分类样本数,复杂度表示剪枝后减少的叶结点数,α则表示剪枝后树的复杂度降低程度与代价之间的关系,定义为:

图片.png

其中, 

|N1|:子树Tt中的叶节点数; 

R(t):结点t的错误代价,计算公式为R(t)=r(t)*p(t),  r(t)为结点t的错分类别样本率,p(t)为落入结点t的样本占所有样本的比例; 

R(Tt):子树Tt错误代价,计算公式为R(Tt)=∑R(i),i为子树Tt的叶节点。

 

CCP剪枝算法分为两个步骤:

1.对于完全决策树T的每个非叶结点计算α值,循环剪掉具有最小α值的子树,直到剩下根节点。在该步可得到一系列的剪枝树{T0,T1,T2......Tm},其中T0为原有的完全决策树,Tm为根结点,Ti+1为对Ti进行剪枝的结果;

 

  1. 从子树序列中,根据真实的误差估计选择最佳决策树。

继续上例

图片.png

图片.png

这三种剪枝方法Scikit_learn都已经实现,我们不需要进行编程来实现它,后续我们会告诉大家它的Scikit_learn实现方法。

 

此处参考论文:

l  Judea Pearl, Heuristics, Addison-Wesley, 1984

l  Pessimistic Decision tree pruning based on Tree size