机器学习笔记(7)——C4.5决策树中的缺失值处理

缺失值处理是C4.5决策树算法中的又一个重要部分,前面已经讨论过连续值和剪枝的处理方法:

机器学习笔记(5)——C4.5决策树中的连续值处理和Python实现

机器学习笔记(6)——C4.5决策树中的剪枝处理和Python实现

现实任务中,通常会遇到大量不完整的样本,如果直接放弃不完整样本,对数据是极大的浪费,例如下面这个有缺失值的西瓜样本集,只有4个完整样本。

在构造决策树时,处理含有缺失值的样本的时候,需要解决两个问题:

(1)如何在属性值缺失的情况下选择最优划分属性?

(2)选定了划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?

以上两个问题在周志华老师的《机器学习》书中有详细的讲解。但是还有一个问题:

(3)决策树构造完成后,如果测试样本的属性值不完整,该如何确定该样本的类别?

书中没有介绍,好在昆兰在1993年发表的文章中提供了解决方案。下面我们对以上3个问题逐一讨论。

1. 选择最优划分属性

之前的算法中,我们选择信息增益最大的属性作为最优划分属性,那么对于有缺失值的属性,其信息增益就是无缺失值样本所占的比例乘以无缺失值样本子集的信息增益。

Gain(D,a)=\rho \times Gain(\tilde{D},a)

其中\rho是属性a上无缺失值样本所占的比例;\tilde{D}是属性a上无缺失值的样本子集。回顾一下ID3算法中,信息增益的计算方法:

Ent(D)=-\sum_{k=1}^{|Y|}p_klog_2p_k        Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)

色泽:

Ent(\tilde{D})=-(\frac{6}{14}log_2\frac{6}{14}+\frac{8}{14}log_2\frac{8}{14})=0.985

\tilde{D}^1,\tilde{D}^2,\tilde{D}^3分别表示“色泽”属性上取值为“青绿”、“乌黑”、“浅白”的样本子集。

Ent(\tilde{D^1})=-(\frac{2}{4}log_2\frac{2}{4}+\frac{2}{4}log_2\frac{2}{4})=1

Ent(\tilde{D^2})=-(\frac{4}{6}log_2\frac{4}{6}+\frac{2}{6}log_2\frac{2}{6})=0.918

Ent(\tilde{D^3})=-(\frac{0}{4}log_2\frac{0}{4}+\frac{4}{4}log_2\frac{4}{4})=0

Gain(\tilde{D},a) = 0.985-\left (\frac{4}{14}\times1+ \frac{6}{14}\times0.918+\frac{4}{14}\times0\right ) = 0.306

Gain(D,a)=\rho \times Gain(\tilde{D},a) = \frac{14}{17}\times0.306=0.252

同样可以计算出其他几个属性的信息增益:

属性 色泽 根蒂 敲声 纹理 脐部 触感
信息增益 0.252 0.171 0.145 0.424 0.289 0.006

 

 

 

因此,选择“纹理”作为根节点进行划分。编号为{1,2,3,4,5,6,15}的7个样本进入“纹理=清晰”的分支,编号为{7,9,13,14,17}的5个样本进入“纹理=稍糊”的分支,编号为{11,12,16}的3个样本进入“纹理=模糊”的分支。

那么选定了划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?(也就是问题2)

重点来了:对于编号为8和10的缺失值样本,将分别以7/15、5/15、3/15的权重划分到以上3个分支。也就是说,将缺失值样本按不同的概率划分到了所有分支中,而概率则等于无缺失值样本在每个分支中所占的比例。

这里引入了权重的概念,在学习开始时,样本的默认权重为1,对于无缺失值的样本,划分到子节点时其权重保持不变。

样本有了权重,我们需要对信息增益的计算公式做一些改进

  • 65
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值