码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习【2】决策树中熵和信息增益的计算,构造决策树 ID3

时间:2014-08-25 15:01:05      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   java   strong   for   数据   ar   log   

信息熵很亮的是在你知道一个事件的结果后,平均会带给你多大的信息量,当事件的不确定性越大,那么要搞清它所需要的信息量也就越大,也就是信息熵越大,是无序性,不确定性的度量指标。

信息熵的计算:

-p[i]logp[i],底数为2

public static double calcEntropy(int p[]) {
		double entropy = 0;
		// 用来计算总的样本数量,p[i]/sum即i的概率
		double sum = 0;
		int len = p.length;
		for (int i = 0; i < len; i++) {
			sum += p[i];
		}
		for (int i = 0; i < len; i++) {
			entropy -= p[i] / sum * log2(p[i] / sum);
		}
		return entropy;
	}
给定一个样本数组,先一轮循环计算出样本总量,后面即可得出每个样本的概率,就可以套用公式计算了

信息增益就是信息熵的变化值,信息熵下降最快的节点就可以作为决策树的根节点,缩短树的高度

一个属性A相对样本集S的信息增益为:

gain(S,A) = H(S) - A属性为已知值的加权信息熵
bubuko.com,布布扣

outlook temperature humidity windy play
sunny hot high FALSE no
sunny hot high TRUE no
overcast hot high FALSE yes
rainy mild high FALSE yes
rainy cool normal FALSE yes
rainy cool normal TRUE no
overcast cool normal TRUE yes
sunny mild high FALSE no
sunny cool normal FALSE yes
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
rainy mild high TRUE no
如上图数据所示,根据该数据,构造出一颗决策树,将来可以根据不同的天气情况决定是否出去玩play

先计算在不知任何天气情况下的信息熵,直接看play列,yes的有9个,no的有5,所以套用公式计算信息熵

H = -9/14*log(9/14)-5/14*log(5/14) = 0.940

然后依次计算每个属性的信息熵,先看outlook属性,当outlook为已知值的时候,计算该信息熵

1、当outlook=sunny时,看play列,yes的有2个,no的有3个,计算信息熵为

H = -2/5*log(2/5)-3/5*log(3/5) = 0.971

2、当outlook=overcast时,看play列,yes的有4,no的有0,计算信息熵

H = 0

3、当outlook=rainy时,看play列,yes的有3个,no的有2个,计算信息熵

H = 0.971

再看当outlook为sunny,overcast,rainy时的概率分别为5/14,4/14,5/14

所以当outlook为已知值的时候,信息熵为5/14*0.971+4/14*0+5/14*0.971 = 0.693

所以得出outlook属性的信息增益gain=0.940-0.693 = 0.247


同理我们再计算temperature,humidity,windy的信息增益分别为0.029,0.152,0.048

由此得知,信息增益最大的属性为outlook,所以选择该节点为决策树的根节点

outlook temperature humidity windy play
  yes no   yes no   yes no   yes no yes no
sunny 2 3 hot 2 2 high 3 4 FALSE 6 2 9 5
overcast 4 0 mild 4 2 normal 6 1 TRUR 3 3    
rainy 3 2 cool 3 1                

分支Overcast的所有样例都是正例,所以成为目标分类为Yes的叶结点。














机器学习【2】决策树中熵和信息增益的计算,构造决策树 ID3

标签:style   http   color   java   strong   for   数据   ar   log   

原文地址:http://blog.csdn.net/simonchi/article/details/38816815

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!