参考博文http://blog.youkuaiyun.com/tianguokaka/article/details/9018933
在分类回归树中可以使用的后剪枝方法有多种,比如:代价复杂性剪枝、最小误差剪枝、悲观误差剪枝等等。这里我们只介绍代价复杂性剪枝法。
对于分类回归树中的每一个非叶子节点计算它的表面误差率增益值α。
是子树中包含的叶子节点个数;
是节点t的误差代价,如果该节点被剪枝;
r(t)是节点t的误差率;
p(t)是节点t上的数据占所有数据的比例。
是子树Tt的误差代价,如果该节点不被剪枝。它等于子树Tt上所有叶子节点的误差代价之和。
比如有个非叶子节点t4如图所示:
已知所有的数据总共有60条,则节点t4的节点误差代价为:
子树误差代价为:
以t4为根节点的子树上叶子节点有3个,最终:
找到α值最小的非叶子节点,令其左右孩子为NULL。当多个非叶子节点的α值同时达到最小时,取最大的进行剪枝。
各人理解:其实并不需要这么复杂,只需要使用当前节点,比如T4中,[错误的样本数/总样本数-SUM(叶子节点错误的样本数/总样本数)]/(叶子数-1)
即[ 7/60-(2+0+3)/60 ] / (3-1)=1 / 60
关于为什么选最小的alpha值,可以将alpha理解成从当前节点到划分结束,即到叶节点,误差的一个减少值,alpha越小,说明误差期间减少的越少,既然花这么大功夫,误差才减少了那么一丢丢,所以就宁愿不要,即减去剩下的部分,将当前节点作为叶节点。