决策树在生长过程中有可能长得过于茂盛,对训练集学习的很好,但对新的数据集的预测效果不好,即过拟合,此时生成的模型泛化能力较差。因此,我们需要对决策树进行剪枝,使得生成的模型具有较强的泛化能力。
为了检测剪枝前后模型的分类效果是否提升,我们需要将全部数据集划分为三个子集:训练集、验证集(剪枝集)、测试集。
训练集:用于生成决策树。
验证集:用于检验剪枝前后模型分类效果变动情况。
测试集:当模型完全确定后,用于检验模型在新样本数据上的分类效果。
决策树剪枝的主要方法包括两大类:后剪枝、预剪枝。
1.后剪枝
指先允许决策树自由生长,然后对其进行修剪。主要剪枝思想是将“子树”替换为叶子节点,即取消某个内部节点将其变为叶子节点,观察模型的分类效果是否有提升。
(1)后剪枝的优点:
后剪枝比预剪枝会保留更多的节点,不容易出现“欠拟合”问题。
(2)后剪枝的缺点:
因为是先生成树,再对树进行剪枝,因此,时间开销比预剪枝大。
(3)常用的是,先构建一棵决策树,然后根据特征重要性,筛选出重要的特征,再构建新的决策树。
具体操作,参见我的另一篇文章:Cara:随机森林Python实战zhuanlan.zhihu.com
(4)一些后剪枝算法包括:REP(Reduced-Error Pruning)、PEP(Pesimistic-Error Pruning)、CCP(cost complexity pruning)。
①REP(Reduced-Error Pruning):自下而上剪枝,即将叶子节点合并到上位节点中去。
现有一个生成好的决策树如下,共1~10个节点。
Step 1: 尝试将叶子节点4删掉,则叶节点8、9、10合并为一个节点(命名为节点11),节点11的类别我们用节点8、9、


3450

被折叠的 条评论
为什么被折叠?



