预剪枝:在划分之前,所有样例集中在根节点,之后判断属性的划分是否会提升验证集精度以决定是否继续进行划分。
特点:预剪枝使得决策树的很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。但另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。
后剪枝:先从训练集生成一颗完整决策树,然后评估决策树中结点对精度有无提高,若剪枝后会提升,则进行剪枝;若剪枝后未得到提高(包括无影响),则可以保留。
特点:后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但后剪枝决策树过程实在生成完全决策树之后进行的。并且要自底向上地对树中的所有非叶节点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大很多。