决策树如何做剪枝
预剪枝
就是在决策树生成过程中,在每次划分时,考虑是否能够带来决策树性能的提升。如果可以提升决策树的性能则会进行划分。如果不能则会停止生长。
一般的方法有如下几种:
- 当树的深度达到一定的规模,则停止生长。
- 达到当前节点的样本数量小于某个阈值的时候。
- 计算每次分裂对测试集的准确性提升,当小于某个阈值,或不再提升甚至有所下降时,停止生长。
- 当信息增益,增益率和基尼指数增益小于某个阈值的时候不在生长。
优缺点
- 优点:思想简单,算法高效,采用了贪心的思想,适合大规模问题。
- 缺点:提前停止生长,有可能存在欠拟合的风险。
后剪枝
- 错误率降低剪枝(REP)
- 悲观剪枝(PEP)
- 代价复杂度剪枝(CCP)
- 最小误差剪枝(MEP)
- CVP (Critical Value Pruning)
- OPP (Optimal Pruning)
本文以西瓜书为例,错误率降低剪枝(REP)。
将数据分为训练集和测试集,用训练集去生成一颗完整的决策树,用测试集去剪枝。
该算法将树上的每个节点都作为剪枝的候选对象,通过如下步骤进行剪枝操作:
- step1:删除以此节点为根节点的树,
- step2:使其成为叶子结点,赋予该节点最常见的分类
- step3:对比删除前和删除后的性能是否有所提升,如果有则进行删除,没有则保留。