分析文件生成决策树c语言代码,机器学习之决策树学习id3算法原理分析与c语言代码实现(24页)-原创力文档...

机器学习之决策树学习-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∈Values(A):属性 A 的所有可能取值的集合,比如表 1 中对于属性 Outlook,v 的取值

为 Sunny、Overcast 和 Rain。

|Sv|:属性 A 中属性值为 v 的样本数,比如表 1 中属性 Outlook 的属性值等于 Sunny 的样本数是 5,属性值等于 Overcast 的样本数是 4,属性值等于 Rain 的样本数是 5。

|S|:训练样例的样本总数,表 1 中|S|等于 14。

Entropy(Sv):训练样例里属性 A 中属性值为 v 的训练样本的熵,稍后会进一步详细说明

其计算方法。

现在我们介绍训练样例的熵的计算方法,还是先给出熵的计算公式,然后再进一步说明

公式中每个成员的含义:

p⊕:训练样例中目标属性为正(Yes)的样本数的比例,在表 1 中样本总数为 14,目标属

性为正(Yes)的样本数为 9,所以 p⊕等于 9/14。

pΘ:训练样例中目标属性为负(No)的样本数的比例,在表 1 中样本总数为 14,目标属性为负(No)的样本数为 5,所以 pΘ 等于 5/14。

所以该训练样例的熵 Entropy(S)=-(9/14)×log2(9/14)-(5/14)×log2(5/14)=0.940。

接下来我们详细介绍信息增益公式中 Entropy(Sv)的计算方法,以计算属性类型为

Outlook的信息增益来进行说明。

属性 Outlook 的属性值 v 的取值范围为{Sunny, Overcast, Rain},所以计算熵 Entropy(S

v)

就相当于要分别计算 Entropy(SSunny)、Entropy(SOvercase)和 Entropy(SRain),每个代表 v取不同

的值时的熵。

先介绍 v取值 Sunny时 Entropy(SSunny)的计算方法。在表 1 的训练样例中,v=Sunny的

训练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值