决策树剪枝python实现_决策树剪枝问题&python代码

决策树在生长过程中有可能长得过于茂盛,对训练集学习的很好,但对新的数据集的预测效果不好,即过拟合,此时生成的模型泛化能力较差。因此,我们需要对决策树进行剪枝,使得生成的模型具有较强的泛化能力。

为了检测剪枝前后模型的分类效果是否提升,我们需要将全部数据集划分为三个子集:训练集、验证集(剪枝集)、测试集。

训练集:用于生成决策树。

验证集:用于检验剪枝前后模型分类效果变动情况。

测试集:当模型完全确定后,用于检验模型在新样本数据上的分类效果。

决策树剪枝的主要方法包括两大类:后剪枝、预剪枝。

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、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值