原创

决策树中熵和信息增益的计算,构造决策树 ID3

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://xxlcube.blog.csdn.net/article/details/38816815

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

信息熵的计算:

-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属性为已知值的加权信息熵

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的叶结点。














文章最后发布于: 2014-08-25 14:33:23
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 酷酷鲨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览