本文继续在前面几种决策树的基础上对C4.5进行说明。
本文主要分为:
- c4.5算法介绍
- 信息增益率
- 连续属性处理
- 缺失值处理
- 决策树可视化方法
- 几种经典决策树总结
c4.5是在id3的基础上加以改进的,关于其中涉及到的有关概念和公式,可参考前面几种决策树介绍:遥感之机器学习树集成模型
1 C4.5算法介绍
C4.5是由Ross Quinlan开发的,是对他的早期的ID3算法的扩展。C4.5生成的也是分类决策树。
2011年,Weka机器学习软件的作者将C4.5算法描述为"一个具有里程碑意义的决策树程序,可能是迄今为止在实践中应用最广泛的机器学习主力算法"。
C4.5是ID3的继承者,相对于ID3算法,C4.5算法的改进主要有:
●增加了对连续特征属性的处理,通过排序连续属性值并挑选阈值,将连续特征属性值划分为高于阈值的属性和小于或等于阈值的属性。
●增加了对属性值缺失的训练数据的处理。
●挑选特征属性依据信息增益率,而不是信息增益。
●创建树后进行修剪,试图通过用叶子节点进行替换来删除那些没有帮助的分支。
2 信息增益率
对于离散随机变量X和样本数据集合S,给定另一个随机变量A,它代表样本数据集合S的另一个属性,它的取值可能是{a1,a2,a3,...,aw},这样根据随机变量A的取值,样本集合S被划分为w个子集合SA(ai),ai∈{a1,a2,a3,...,aw}。其中,
则信息增益率定义如下:
采用信息增益率替代信息增益来寻找最优分割特征。信息增益率的定义是信息增益IG(S,A)和特征熵HA(S)的比值,对于特征熵,特征的取值越多,特征熵就倾向于越大。
3 连续属性的处理
对于连续值的问题,需要将连续值离散化。在这里只做二类划分,即将连续值划分到两个区间,分割点取两个临近值之间的任意值。给定样本集S和连续属性A,假定A在S上出现了w个不同的取值,将这些值从小到大排序,记为{a1,a2,...,aw}。ai和ai+1是相邻的取值,则t在区间[ai,ai+1)中取任意值所产生的划分结果相同。因此,对连续属性A,我们可考察包含w-1个候选分割点的集合。然后就可以像离散属性那样来考察这些分割点,选取最优的分割点进行样本集合的划分。当决策树的节点数量比较多、连续型属性数量比较多、连续型属性中任一属性取值又比较多时,算法的计算量是相当大的,这将会在很大程度上影响决策树的生成效率。
4 缺失值的处理
对于缺失值的问题,我们需要解决三个问题,
第一是在 有缺失值的情况下如何选择划分的属性,也就是如何得到一个合适的信息增益率;
第二是选 定划分属性后,如何处理该属性缺失特征的样本;
第三是决策树构造完成后,如果测试样本的某些属性值出现缺失,该如何确定该测试样本的类别。Ross Quinlan在C4.5:Programms for Machine Learning中提供了解决方案。
1. 第一个问题(选择特征属性时)
在C4.5算法中,选择信息增益率最大的属性作为最优的划分属性。当样本存在属性值缺失时,这些样本不会产生任何信息增益。因此,当计算该属性的信息增益时,其信息增益等于无缺失值样本所占的比例乘以无缺失值样本子集的信息增益。具体定义如下:
其中α表示无缺失值样本所占的比例,S表示原数据集,S′表示不含缺失值的数据子集。
2. 第二个问题(出现缺失值的样本的处理)
C4.5算法建议将所有出现缺失值的样本发送至所有子节点,但其权重通过与该子节点的样本在所有非缺失值的样本中的比例相乘而减弱。最开始各样本的权重w都为1。每个具有缺失值的样本的权重被调整为当前分支中未缺失样本数所占总未缺失样本数的比例。
3. 第三个问题(待预测样本出现缺失值的处理)
利用决策树进行预测时,如果遇到测试特征属性A的节点,而对于该预测样本,其特征属性A出现缺失,那么所有的可能性都会被探讨。因此,对于每个可能的子节点都要进行预测。我们保留每个子节点的分布,并将其加入。最后,选择用于预测的类是具有最大概率值的类。
5 决策树的5中可视化方法
决策树的可视化展示是决策树分析中的重要支撑工具。本节将讨论在Python中实现决策树可视化的5种方法。这5种可视化方法分别为:
●直接使用matplotlib绘制决策树。
●用sklearn.tree.export_text方法打印树的文本表示。
●用sklearn.tree.plot_tree方法绘图(需要matplotlib)。
●用sklearn.tree.export_graphviz方法绘图(需要graphviz)。
●用dtreeviz包绘制(需要dtreeviz和graphviz)。
其中推荐第三种方法较为简单,无需安装过多的其他库。
6 cart/id3/c4.5总结
根据前面的几节分别介绍经典的决策树算法,主要包括CART、ID3和C4.5算法及其实现。还介绍了如何在经典决策树生成前对样本数据集进行缺失值和连续数据离散化的处理,以及最后对决策树结果的评估和决策树的可视化方法。
关于cart/id3算请参考专栏:遥感之机器学习树集成模型
- CART算法总是创建一棵二元树(二叉树),这简化了决策树的规模,提高了生成决策树的效率。由于二叉树的特性,CART运算速度较快。CART在适用分类算法的同时也能进行回归算法,其中CART使用的基尼不纯度量可以减少大量的对数运算。
- ID3算法的核心思想是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。算法采用自顶向下的贪婪搜索遍历可能的决策树空间。但ID3只能处理特征属性为离散数据类型的数据集,且ID3不支持剪枝。
- 相比于ID3算法,C4.5算法使用信息增益率作为划分标准,用于克服信息增益的缺点(信息增益偏向于具有大量取值的特征属性),并且增加了连续特征离散化和缺失值的处理,解决了ID3只能处理离散数据的问题。针对连续值问题,根据信息增益比最大找到相应的特征后,按照特征和分割点将数据划分左右两部分,之后对两部分进一步构建子节点,而对离散特征,选择最优特征后,将根据所有特征属性分别划分数据集,构建子节点,即连续值属性将数据划分两部分,而离散特征将数据划分不止两部分。
补充:
**>对分类问题,在ID3算法和C4.5算法基础上的改进版本C5.0,**其算法原理与C4.5一致,都是采用信息增益率来进行特征选择。但C5.0采用提升法来提高模型准确率,构建决策树的时间要比C4.5算法快数倍且生成的决策树规模也更小,对计算内存占用也较少。同样,C5.0算法也只能解决分类问题。此外,C5.0同C4.5算法一样,具有一个将决策树转化为符号规则的算法,算法在转化过程中会进行规则前件合并、删减等操作,因此最终规则集的泛化性能可能优于原决策树。C5.0算法更适合解决大数据集的分类问题。
7 本文总结
本文主要对c4.5做了简单介绍以及划分的指标介绍,特别针对连续值和缺失值如何进行处理做了说明,以及介绍了几种可视化决策树的方法。
如果对具体的详细示例有兴趣,可以参考本专栏的参考书目:
<现代决策树模型及其编程实践:从传统决策树到深度决策树 黄智濒>
其电子书和其相关的源码可通过下述咨询链接获取:资源获取
欢迎点赞,收藏,关注,支持小生,打造一个好的遥感领域知识分享专栏。
时欢迎私信咨询讨论学习,咨询讨论的方向不限于:地物分类/语义分割(如水体,云,建筑物,耕地,冬小麦等各种地物类型的提取),变化检测,夜光遥感数据处理,目标检测,图像处理(几何矫正,辐射矫正(大气校正),图像去噪等),遥感时空融合,定量遥感(土壤盐渍化/水质参数反演/气溶胶反演/森林参数(生物量,植被覆盖度,植被生产力等)/地表温度/地表反射率等反演)以及高光谱数据处理等领域以及深度学习,机器学习等技术算法讨论,以及相关实验指导/论文指导等多方面。