机器学习之决策树学习-ID3算法-原理分析与C语言代码实现.pdf
机器学习之决策树学习-ID3 算法
原理分析与C 语言代码实现
作者:wxh5055 保留所有版权
本文先通过一个被经常使用的实例来简单说明决策树学习中ID3 算法的基本原理,然后
详细介绍ID3 算法以及用C 语言实现的方法,文章的最后给出ID3 算法的完整的C 语言代码。
该实例的训练样本数据如表 1 所示。该训练样例的目标属性是 PlayTennis(打网球),即
根据各属性类型 Outlook(天气)、Temperature(温度)、Humidity(湿度)和 Wind(风强度)的属性
值判断某一天是否打网球(Yes or No) 。
Day Outlook Temperature Humidity Wind PlayTennis
Dl Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
Dl0 Rain Mild Normal Weak Yes
Dl1 Sunny Mild Normal Strong Yes
Dl2 Overcast Mild High Strong Yes
Dl3 Overcast Hot Normal Weak Yes
Dl4 Rain Mild High Strong No
表 1:ID3 算法使用的训练样例
ID3 算法即是根据上面的训练样例,自顶向下构造出一棵决策树。该决策树的最终形式
如图1(Tom M. Mitchell, Machine Learning):
图1:ID3 算法生成的决策树
现在的问题是,如何确定决策树的根结点是 Outlook,而不是其他的属性类型?这就是
本文介绍的ID3 算法需要详细说明的问题,也是ID3 算法的核心问题,即选择哪个属性作为
决策树的根结点。
为了确定选择哪个属性作为决策树的根结点,我们需要引入一个叫“信息增益
(information gain)”的概念,ID3 算法就是选择信息增益最大的属性作为决策树的根结点。我
们先给出信息增益的计算公式,然后再进一步说明公式中每个成员的含义:
Gain(S,A):属性A 在训练样例S 中的信息增益,在表1 中A 的取值为Outlook、Temperature 、
Humidity 和Wind 。
Entropy(S):训练样例的熵,稍后会进一步说明熵的计算方法。
v ∈Va lues(A):属性A 的所有可能取值的集合