C4.5算法缺失值处理

  作为2008年《数据挖掘十大算法》(Springer LNCS)位居榜首的分类决策树算法,C4.5具有较完备的处理流程,较全面得涵盖了决策树族算法特征。目前对于C4.5算法的简单应用较多,而本文主要总结其中的缺失值处理步骤,其余部分初略介绍。

(ps: 知识均来源了网络, 本文仅做总结,旨在供个人回顾学习)

(1)C4.5算法简介:

  C4.5算法是由Ross Quilan开发的,是对ID3算法的扩展改进,为经典的 分类决策树算法

具体改进点:

  • 增加对连续特征属性的处理。
  • 增加对训练数据属性值缺失的处理
  • 应用信息增益率作为特征选择依据,替代ID3的信息增益。
  • 提供剪枝方法。
(1.1)信息增益率

信息增益率 : G a i n R a t i o ( D , A ) = G a i n ( D , A ) H A ( D ) 训练数据集 D 关于特征值 A 的熵 : H A ( D ) = − ∑ i = 1 n D i D l o g 2 D i D 信息增益 : G a i n ( D , A ) = E n t ( D ) − ∑ v = 1 V D v D E n t ( D v ) 信息增益率: GainRatio(D,A) = \frac{Gain(D,A)}{H_A(D)}\\ 训练数据集D关于特征值A的熵:H_A(D)=-\sum^{n}_{i=1}\frac{D_i}{D}log_2\frac{D_i}{D}\\ 信息增益:Gain(D,A)=Ent(D)-\sum^V_{v=1}\frac{D^v}{D}Ent(D^v) 信息增益率:GainRatio(D,A)=HA(D)Gain(D,A)训练数据集D关于特征值A的熵:HA(D)=i=1nDDilog2DDi信息增益:Gain(D,A)=Ent(D)v=1VDDvEnt(Dv)

(1.2)连续特征属性处理

  使用连续属性离散化,与CART回归树的连续值二分很类似。

  给定样本集D和连续属性A,假定A在D上出现了n个不同的取值,将这些值从小到大进行排序,记为{a1, a2, …, an},寻求 划分点 t 可将D分为两个子集。其中 a i a_i ai a i + 1 a_{i+1} ai+1 为相邻取值,t 在 [ a i , a i + 1 ) [a_i, a_{i+1}) [ai,ai+1) 中取任何值, 划分结果均相同,故取 t = a i + a i + 1 2 t=\frac{a_i+a_{i+1}}{2} t=2ai+ai+1 。即 w w w 个取值的连续属性,被抽象为选取 w − 1 w-1 w1 个切分点中的最优切分点。

  缺点为:对于多连续属性数据,计算量过大。

(1.3)剪枝

  以下视频对常用的剪枝方法,均做了详细讲解(5.5节),请移步查看:

  https://www.bilibili.com/video/BV1No4y1o7ac?p=41&vd_source=8b1d70c5247a5bc08f831cea66e74fba

(1.4)python代码实现

  代码参考1.0:http://www.hzcourse.com/web/refbook/detail/9970/226

  来自黄智濒老师的《现代决策树模型及其编程实践》一书,为简单的C4.5决策树实现,适用于对C4.5算法的初步认识学习。

在这里插入图片描述
(点击源代码,C4.5部分代码位于Chapter02)

  不足点:未涉及缺失值处理, 无法处理离散属性和连续属性同时存在的数据。

(2)缺失值处理

  出自Ross Quilan在 C4.5: Programms for Machine Learning 中提供的解决方案。本文仅讲解在模型建立阶段所涉及的缺失值处理,在测试数据中的缺失值应尽量避免,故不作叙述。

主要包含两部分:

  • 选择特征属性时:在有缺失情况下,如何选择最优属性进行子树划分。
  • 缺失样本的处理:选择好属性后,属性缺失样本划入哪个子节点。

名词补充:

  • D ′ 表示 D 中属性 A 上无缺失的数据集; D'表示D中属性A上无缺失的数据集; D表示D中属性A上无缺失的数据集;
  • D v ′ 表示 D ’中属性 A 取值为 a v 的子集; {D^v}'表示D’中属性A取值为a^v的子集; Dv表示D中属性A取值为av的子集;
  • D k ′ 表示 D ′ 中属于第 k 类的子集; D_k'表示D'中属于第k类的子集; Dk表示D中属于第k类的子集;
  • w x 表示样本 x 的权重 w_x表示样本x的权重 wx表示样本x的权重
  • 未缺失样本占全量样本比例: ρ = ∑ x ∈ D ′ w x ∑ x ∈ D w x \rho=\frac{\sum_{x\in{D'}}w_x}{\sum_{x\in{D}}w_x} ρ=xDwxxDwx
  • 未缺失样本中A属性每类值的占比: γ v ′ = ∑ x ∈ D v ′ w x ∑ x ∈ D ′ w x \gamma_v'=\frac{{\sum_{x\in{{D^v}'}}w_x}}{{\sum_{x\in{D'}}w_x}} γv=xDwxxDvwx
(2.1)选择最优属性进行划分

  对前述信息增益进行拓展,引入缺失值情况,求得拓展后信息增益率。故可计算各属性(属性切分点)的最优子集划分方式。
G a i n ( D , A ) = ρ × G a i n ( D ′ , A ) = ρ × ( E n t ( D ′ ) − ∑ v = 1 V γ v ′ E n t ( D v ’ ) ) Gain(D,A)=\rho\times Gain(D',A)\\ =\rho\times (Ent(D') - \sum^V_{v=1}\gamma_v'Ent({D^v}’))\\ Gain(D,A)=ρ×Gain(D,A)=ρ×(Ent(D)v=1VγvEnt(Dv))

(2.2)含缺失样本划入子树节点

  引入权重概念,并将含缺失值样本经权值计算后,划入所有子树节点。可理解为将同一个样本以不同的概率划入到不同的结点中。

权值迭代规则:

  • 样本初始权值均为1
  • 无缺失样本递归划入子树权值不变,仍为1
  • 含缺失样本 w x = γ v ′ . w x w_x=\gamma_v'.w_x wx=γv.wx
(2.3)例题计算

  西瓜案例:https://blog.csdn.net/leaf_zizi/article/details/83503167

(2.4)python代码实现

  代码参考2.0:https://download.csdn.net/download/leaf_zizi/10867159

  引入了缺失值处理模块,且考虑了同时包含离散、连续属性的数据。

参考:

[机器学习算法推导&python手写实现] https://zhuanlan.zhihu.com/p/393071835

[机器学习笔记(7)——C4.5决策树中的缺失值处理] https://blog.csdn.net/leaf_zizi/article/details/83503167

[现代决策树模型及其编程实践] 黄智濒 编著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值