错误率降低剪枝和悲观剪枝

173 阅读2分钟

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

l  减少分类错误裁剪法,即错误率降低剪枝(REP)

该方法把树上的每个节点都做为考察对象(叶节点除外),至于是否修剪这个节点需要通过一个新的数据集进行测试。其流程如下:

  1. 选择一个节点,删除该节点所属子树,把其转化为叶节点

  2. 投票法决定叶节点分类标签,具体做法把与该节点相关的数据集中的多数类当做该节点的类。

  3. 输入新数据,测试修剪后的树和未修剪的树,如果修剪后的树在测试数据集中的分类错误比较少或者和原来的树的分类错误一样多,那么该子树就可以被替换成叶子节点。

  4. 然后在选择新的节点,重复上面的做法。节点的选择由下向上逐一进行(沿着一条线一直到根节点),最终遍历所有节点,直至没有任何节点可以替换使得测试数据集的表现得以改进时,算法就可以终止。

总结:其实质就是用测试集检验训练好的模型,如果预测效果不好,就是过拟合,直接进行剪枝,如果剪枝后的树预测效果好,就用剪枝后的树即可。

 

l  悲观剪枝(用于C4.5算法)

PEP剪枝算法是在C4.5决策树算法中提出的, 其实质就是一颗子树(具有多个叶子节点)用一个叶子节点来替代,比起REP剪枝法,它不需要一个单独的测试数据集。

PEP算法首先确定这个叶子节点的经验错误率。对于一颗叶子节点,它包含N个样本(示例),其中有E个分类错误,那么该叶子节点的错误率为(E)/N。加上0.5惩罚因子,最终为(E+0.5)/N。对于拥有m个叶子的一个子树来说,它的错误率e为:

图片.png

接下来用一个最优叶节点代替整个子树,也就是把子树的根节点—整个树的节点换成叶节点。这个新的最优叶节点的类别标签应为多数类的类别标签。假设k为这个新叶子节点的错判个数,但是也要加上0.5,即k+0.5。然后我们按照下列不等式来判断是否对子树进行叶节点替换:

  图片.png

此不等式的右边为常用判别不等式。