ID3学习笔记

根据http://leon-a.iteye.com/blog/181958中提供的英文原版看了下ID3的原理,其实主要是信息熵的运用和增益Gain计算二者结合起来用于判定决策,有一些小细节没明白,不过也不纠结于过于细致的东西了。


ID3  

首先,ID3是分类算法

其次,ID3是通过一个准备好的样例集建立一个decision tree来分类

 

样例(examples)属于不同的类别(classes)

树的叶节点(leafnode)包含了类别的名称,非叶节点就是决策节点,决策节点是一个属性测试,延伸出来的不同分支对应该属性的不同的数值。

ID3算法使用信息增益(IG)来决定哪一个属性将成为决策节点

这句没看懂: The advantageof learning a decision tree is that a program, rather than a knowledgeengineer, elicits knowledge from an expert. 

 

ID3算法由J. Ross Quinlan最早在悉尼大学提出,1975年的Machine Learning, vol. 1, no. 1,基于概念学习系统算法。用到训练集C


Step 1:

如果 所有C中实例都是positive,

创建YES节点,并停止

如果 所有C中实例都是negative

创建NO节点,并停止

否则

选择一个特征F,并有数值v1,…..vn能够表示F,创建一个决策节点

其实这里第三条才有意义,前两条就是全为POS或者全为NEG,就没法儿判定,只能把以后所有的测试实例都归为相同的类别

Step 2:

根据特征F的数值V将训练集C分成c1,c2…等子集(数量无所谓?


Step 3:

对每一个子集再次使用该算法,需要注意的是特征需要人工选取

 

 


如果ID3通过这个属性完美的分类了训练集,那么则说明基于该属性的分类很成功,否则,将迭代n个子集,来得到最好的属性(otherwise itrecursively operates on the n (where n = number of possible values of anattribute) partitioned subsets to get their "best" attribute)


采样数据有以下几点要求:

1.       属性数值 —— 每个实例对应于该属性的数值都应该存在

2.       定义好的类别

3.       离散的类别

4.       大量的实例 —— 必须通过大量有效的实例才能建立有效的分类树模型

 

属性的选取:

怎样确定哪一种属性最好?使用了信息增益方法来计算一个属性区分不同的训练实例能力,选择最高信息量的属性用于分类。

为了定义增益,借用信息熵的概念,熵能测量一个属性的信息量。

 

信息熵描述:

Given a collection S of c outcomes 
Entropy(S) = S -p(I) log2 p(I) 
where p(I) is the proportion of S belonging toclass I. S is over c. Log2 is log base 2. 
Note that S is not an attribute but the entiresample set. 

举例:

如果S是一个14个实例组成的集合,其中9个YES和5个NO,

那么

Entropy(S) = - (9/14) Log2 (9/14) - (5/14) Log2 (5/14) =0.940 

如果所有的成员都属于同一个类别,那么S的信息熵为0.

熵的范围为0-1

 

增益Gain(S,A)是S在属性A上的信息增益,定义如下:

 

Gain(S, A) = Entropy(S) - S ((|Sv| / |S|) * Entropy(Sv))    (这个公式太烂了写得,跟举例不一样….

 

S is each value v of all possible values of attribute A 
Sv = subset of S for which attribute A has valuev 
|Sv| = number of elements in Sv 
|S| = number of elements in S 

 

举例:

S集合中一种属性是风速,风速分为强弱两类,

S中仍有9个YES和5个NO

假设发生了8次弱风和6次强风

对于弱风,其中有6次YES和2次NO

对于强风,其中有3词YES和3次NO

 

Entropy(S)-(8/14)*Entropy(Sweak)-(6/14)*Entropy(Sstrong)

Entropy(S)、Entropy(Sweak)、Entropy(Sstrong)都可以通过信息熵的计算方法得出


得到:

Gain(S,Wind)  =  0.048;

对于每个特征,增益都会计算一次,最高值的增益将用于决策点。

 



ID3的举例:

我们让ID3通过天气来决定是否适合打棒球,通过两周的数据采集来作为训练集。

目标是对“我们能打棒球吗?”进行分类 分类为YES和NO两种结果

 

天气属性:{outlook,temperature,humidity,windspeed}

Outlook = { sunny,overcast,rain };

Temperature = { hot,mid,cool };

Humidity = { high,normal };

Wind = {weak,strong };

 

S训练集如下:

Day Outlook Temperature Humidity Wind Play ball 
D1 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  StrongYes  
D8 Sunny  Mild High  Weak No  
D9 Sunny  Cool Normal  Weak Yes  
D10 Rain  Mild Normal  Weak Yes  
D11 Sunny  Mild Normal  StrongYes  
D12 Overcast  Mild High  StrongYes  
D13 Overcast  Hot Normal  WeakYes  
D14 Rain  Mild High  Strong No  

首先,对不同特征进行增益计算,得到如下结果:

Gain(S, Outlook) = 0.246 
Gain(S, Temperature) = 0.029 
Gain(S, Humidity) = 0.151 
Gain(S, Wind) = 0.048 (calculated in example 2) 

可以看到outlook属性的增益值最大,将其用于根结点

 

其次,根据outlook进行分类,分为两个子集后再计算增益

貌似结果这块儿介绍的不好?

 

得到的结果既能表现为树形,也能表现为描述型

总体来看,ID3简单易用,目前多个领域在使用它,其最主要的用途是代替手工建立分类模型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值