京公网安备 11010802034615号
经营许可证编号:京B2-20210330
ID3算法
ID3和C4.5都是由澳大利亚计算机科学家Ross Quinlan开发的决策树构建算法,其中C4.5是在ID3上发展而来的。
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一棵决策树。ID3相当于用极大似然法进行概率模型的选择。 下面我们给出一个更加正式的ID3算法的描述:
若D中所有实例属于同一类Ck,则T为单结点树,并将类Ck作为该结点的类标记,返回T;
若A=∅,则T为单结点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T;
否则,计算A中各特征对D的信息增益,选择信息增益最大的特征Ag;
(1) 如果Ag的信息增益小于阈值ϵ,则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T;
(2) 否则,对Ag的每一可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对第i个子结点,以Di为训练集,以A−{Ag}为特征集,递归地调用步骤(1)~(3),得到子树Ti,返回Ti。
下面我们来看一个具体的例子,我们的任务是根据天气情况计划是否要外出打球:

首先来算一下根节点的熵:

然后再分别计算每一种划分的信息熵,比方说我们选择Outlook这个特征来做划分,那么得到的信息熵为

据此可计算采用Outlook这个特征来做划分时的信息增益为
同理,选用其他划分时所得到之信息增益如下:

取其中具有最大信息增益的特征来作为划分的标准,然后你会发现其中一个分支的熵为零(时间中阈值可以设定来惩罚过拟合),所以把它变成叶子,即得

对于其他熵不为零(或者大于预先设定的阈值)的分支,那么则需要做进一步的划分

根据上述的规则继续递归地执行下去。最终,我们得到了如下一棵决策树。
C4.5算法
C4.5是2006年国际数据挖掘大会票选出来的十大数据挖掘算法之首,可见它应该是非常powerful的!不仅如此,事实上,C4.5的执行也相当的straightforward。
C4.5算法与ID3算法相似,C4.5算法是由ID3算法演进而来的。C4.5在生成的过程中,用信息增益比来选择特征。下面我们给出一个更加正式的C4.5算法的描述:
如果D中所有实例属于同一类Ck,则置T为单结点树,并将Ck作为该结点的类,返回T;
如果A=∅,则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,计算A中各特征对D的信息增益比,选择信息增益比最大的特征Ag;
(1) 如果Ag的信息增益比小于阈值ϵ,则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
(2) 否则,对Ag的每一可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对结点i,以Di为训练集,以A−{Ag}为特征集,递归地调用步骤(1)~(3),得到子树Ti,返回Ti。
How to do it in practice?
易见,C4.5跟ID3的执行步骤非常类似,只是在划分时所采用的准则不同。我们这里不再赘述。但是这里可以来看看在实际的数据分析中,该如何操作。我们所使用的数据是如下所示的一个csv文件,文件内容同本文最初给出的Play Ball例子中的数据是完全一致的。
使用Weka进行数据挖掘是非常容易的,你不再需要像R语言或者MATLAB那样编写代码或者调用函数。基于GUI界面,在Weka中你只需要点点鼠标即可!首先我们单击“Explorer”按钮来打开操作的主界面,如下图所示。

然后我们单击“Open File…”,并从相应的目录下选择你要用来进行模型训练的数据文件,如下图所示。

Weka提供了非常易于操作的各种数据预处理功能,你可以自己尝试探索一下。注意到属性Day其实在构建决策树时是不需要的,我选中该属性,并将其移除,如下图所示。

完成数据预处理后,我们就可以开始进行模型训练了。因为我们是要建立决策树,所以选择“Classify”选项卡,然后在“Classifier”中选择J48。你可以能会疑惑我们不是要使用C4.5算法建立决策树吗?为什么要选择J48呢?其实J48是一个开源的C4.5的Java实现版本(J48 is an open source Java implementation of the C4.5 algorithm),所以J48就是C4.5。 数据分析师培训

然后你可以自定义的选择“Test options”中的一些测试选项,这里我们不做过多说明。然后单击“Start”按钮,Weka就为我们建立了一棵决策树,你可以从“Classifier output”栏目中看到模型训练的一些结果。但是对于决策树而言,你可以觉得文字看起来还不够直观。不要紧,Weka还为你提供了可视化的决策树建模呈现。为此,你需要右键单击刚刚训练好的模型,然后从右键菜单中选择“Visualize tree”,如下图所示。

最后我们得到了一棵与前面例子中相一致的决策树,如下图所示。
在后续的决策树系列文章中,我们将继续深入探讨CART算法等相关话题。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在机器学习建模与数据分析实战中,特征维度爆炸、冗余信息干扰、模型泛化能力差是高频痛点。面对用户画像、企业经营、医疗检测、 ...
2026-03-26在这个数据无处不在的时代,数据分析能力已不再是数据从业者的专属技能,而是成为了职场人、管理者、创业者乃至个人发展的核心竞 ...
2026-03-26在CDA(Certified Data Analyst)数据分析师的能力体系中,线性回归是连接描述性统计与预测性分析的关键桥梁,也是CDA二级认证的 ...
2026-03-26在数据分析、市场研究、用户画像构建、学术研究等场景中,我们常常会遇到多维度、多指标的数据难题:比如调研用户消费行为时,收 ...
2026-03-25在流量红利见顶、获客成本持续攀升的当下,营销正从“广撒网”的经验主义,转向“精耕细作”的数据驱动主义。数据不再是营销的辅 ...
2026-03-25在CDA(Certified Data Analyst)数据分析师的全流程工作中,无论是前期的数据探索、影响因素排查,还是中期的特征筛选、模型搭 ...
2026-03-25在当下数据驱动决策的职场环境中,A/B测试早已成为互联网产品、运营、营销乃至产品迭代优化的核心手段,小到一个按钮的颜色、文 ...
2026-03-24在统计学数据分析中,尤其是分类数据的分析场景里,卡方检验和显著性检验是两个高频出现的概念,很多初学者甚至有一定统计基础的 ...
2026-03-24在CDA(Certified Data Analyst)数据分析师的日常业务分析与统计建模工作中,多组数据差异对比是高频且核心的分析场景。比如验 ...
2026-03-24日常用Excel做数据管理、台账维护、报表整理时,添加备注列是高频操作——用来标注异常、说明业务背景、记录处理进度、补充关键 ...
2026-03-23作为业内主流的自助式数据可视化工具,Tableau凭借拖拽式操作、强大的数据联动能力、灵活的仪表板搭建,成为数据分析师、业务人 ...
2026-03-23在CDA(Certified Data Analyst)数据分析师的日常工作与认证考核中,分类变量的关联分析是高频核心场景。用户性别是否影响商品 ...
2026-03-23在数据工作的全流程中,数据清洗是最基础、最耗时,同时也是最关键的核心环节,无论后续是做常规数据分析、可视化报表,还是开展 ...
2026-03-20在大数据与数据驱动决策的当下,“数据分析”与“数据挖掘”是高频出现的两个核心概念,也是很多职场人、入门学习者容易混淆的术 ...
2026-03-20在CDA(Certified Data Analyst)数据分析师的全流程工作闭环中,统计制图是连接严谨统计分析与高效业务沟通的关键纽带,更是CDA ...
2026-03-20在MySQL数据库优化中,分区表是处理海量数据的核心手段——通过将大表按分区键(如时间、地域、ID范围)分割为多个独立的小分区 ...
2026-03-19在商业智能与数据可视化领域,同比、环比增长率是分析数据变化趋势的核心指标——同比(YoY)聚焦“长期趋势”,通过当前周期与 ...
2026-03-19在数据分析与建模领域,流传着一句行业共识:“数据决定上限,特征决定下限”。对CDA(Certified Data Analyst)数据分析师而言 ...
2026-03-19机器学习算法工程的核心价值,在于将理论算法转化为可落地、可复用、高可靠的工程化解决方案,解决实际业务中的痛点问题。不同于 ...
2026-03-18在动态系统状态估计与目标跟踪领域,高精度、高鲁棒性的状态感知是机器人导航、自动驾驶、工业控制、目标检测等场景的核心需求。 ...
2026-03-18