决策树缺失值处理和剪枝

举报
herosunly 发表于 2021/11/19 01:40:12 2021/11/19
【摘要】 决策树缺失值处理和剪枝 缺失值处理剪枝 缺失值处理 原始数据为: 我们开始计算第一个分叉点是用哪个特征?我们对ID3算法进行修正。包含缺失值属性样本的信息增益 = p * (不包含缺失值...

决策树缺失值处理和剪枝

缺失值处理

原始数据为:
西瓜数据集
我们开始计算第一个分叉点是用哪个特征?我们对ID3算法进行修正。包含缺失值属性样本的信息增益 = p * (不包含缺失值属性样本的信息增益)。由于前面对计算过程以及比较熟悉,所以我们只在第一次分叉中计算色泽这个属性的信息增益。

Gain(all_data) = p * (Gain(not_missing_data))
Gain(not_missing_data) = H1 - H2
在这里插入图片描述
H1 = -( (6 / 14) * np.log2(6 / 14) + (8 / 14) * np.log2(8 / 14) ) = 0.985228
在这里插入图片描述
H2 = - ( (6 / 14) * ( (4 / 6) * np.log2(4 / 6) + (2 / 6) * np.log2(2 / 6) ) ) - \
( (4 / 14) * ( (2 / 4) * np.log2(2 / 4) + (2 / 4) * np.log2(2 / 4) ) ) - 0 = 0.6792696
Gain(not_missing_data) = H1 - H2 = 0.985228 - 0.6792696 = 0.305958

p为非缺失值样本个数占所有样本的个数,即14 / 17
Gain(all_data) = p * (Gain(not_missing_data)) = (14 / 17) * (0.305958) = 0.251966。

简单理解一下为什么是乘以p呢?
在这里插入图片描述

结合全概率公式,也可以表述成公式2。至于公式1和公式2为什么相等,这个数学证明暂且不证了。由于缺失值样本的信息增益为0,则公式2后面一项为0了。

剪枝

剪枝分为预剪枝和后剪枝。预剪枝指的是在决策树生长过程中,对每个结点在划分先前进行估计,如果当前结点的划分不能带来决策树泛化能力的提升(验证集指标),则停止划分并将当前结点划分标记为叶结点。

后剪枝指的是先从测试集生成一颗完整的决策树,然后自底向上地对非叶节点进行考察,若将该结点对应的子树替换成叶子结点能给决策树带来泛化能力的提升,则将该子树替换为叶结点。

结合西瓜书的实例,假如以后剪枝为例。书上讲了剪枝前和剪之后验证集的准确率的变化,实际上没有必要。只要对根节点的样本进行计算即可。如下图所示:
此图为验证集数据
在这里插入图片描述
在这里插入图片描述
我们考察结点6。我们可以看出色泽为乌黑的样本为8、9、13。其中9和13为坏瓜,8为好瓜。如果不进行划分的话,就以多数样本的类别,即坏瓜为结果。有一个错分样本。
8 清晰 -> 坏瓜(真实为好瓜)
9 稍糊 -> 好瓜(真实为坏瓜)
13 稍糊 -> 好瓜(真实为坏瓜)。
三个样本全部划分错了!,所以剪枝是比较合适的。

当然,在sklearn中其实并不是通过验证集的指标提升来作为剪枝的条件(计算量还是比较大)。而是通过树的最大深度和叶子节点中样本的最少数目作为树生长的终止条件。The default values for the parameters controlling the size of the trees (e.g. max_depth, min_samples_leaf, etc.) lead to fully grown and unpruned trees which can potentially be very large on some data sets. To reduce memory consumption, the complexity and size of the trees should be controlled by setting those parameter values.(https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html)

文章来源: blog.csdn.net,作者:herosunly,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/herosunly/article/details/86563307

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。