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

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

信息熵的计算:

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

时间: 2024-11-06 22:45:39

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

决策树中的熵和基尼指数

决策树是一种很基本的分类与回归方法,但正如前面博文机器学习排序算法:RankNet to LambdaRank to LambdaMART中所讲的LambdaMART算法一样,这种最基本的算法却是很多经典.复杂.高效的机器学习算法的基础.关于什么是决策树,网上一搜就会有很多博客文章,所以本文并不想讨论这个话题.本文想讨论的是决策树中两个非常重要的决策指标:熵和基尼指数.熵和基尼指数都是用来定义随机变量的不确定性的指标.下面先介绍什么是随机变量的不确定性. 1. 随机变量的不确定性 什么是随机变量

算法干货----决策树算法中的熵与信息增益

什么是决策树?为什么要用决策树? 决策树是一种二分树,或是多分数.对于大量数据的细分工作有很大帮助.在日常生活中,决策树的算法可谓是每天都在用.小到用户分类,大到辅助决策.实际上他的使用很多. 至于为什么要用到决策树,个人认为就是因为这种算法简单.代码实现起来主要就是IF-ELSE就可以实现.可这一算法的发展也是从ID3--->C4.5----->C5.0. 它的主要步骤就两个:1,建树 2,剪树 如何建树,就是如何分你的数据,按照哪种特性?比如人口统计数据,是按年龄,身高,体重,学历....

吴裕雄--天生自然python机器学习:决策树算法

我们经常使用决策树处理分类问题’近来的调查表明决策树也是最经常使用的数据挖掘算法. 它之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它 是如何工作的. K-近邻算法可以完成很多分类任务,但是它最大的缺点就是无法给出数据的内 在含义,决策树的主要优势就在于数据形式非常容易理解. 决策树很多任务都 是为了数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列 规则,机器学习算法最终将使用这些机器从数据集中创造的规则.专家系统中经常使用决策树,

就是要你明白机器学习系列--决策树算法之悲观剪枝算法(PEP)

前言 在机器学习经典算法中,决策树算法的重要性想必大家都是知道的.不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确了.由于完全决策树对训练样本的特征描述得“过于精确” ,无法实现对新样本的合理分析, 所以此时它不是一棵分析新数据的最佳决策树.解决这个问题的方法就是对决策树进行剪枝,剪去影响预测精度的分支.常见的剪枝策略有预剪枝(pre -pruning)技术和后剪枝(post -pruning )技术两种.预剪

B-概率论-熵和信息增益

目录 熵和信息增益 一.熵(Entropy) 二.条件熵(Conditional Entropy) 三.联合熵(Joint Entropy) 四.相对熵(Relative Entropy) 4.1 相对熵的性质 五.交叉熵(Cross Entropy) 六.相对熵.交叉熵和熵的关系 七.信息增益(Information Gain) 八.信息增益比(Information Gain Ratio) 九.一张图带你看懂熵和信息增益 更新.更全的<机器学习>的更新网站,更有python.go.数据结构

机器学习算法的R语言实现(二):决策树

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树

摘要: Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree),本文介绍了CART用于离散标签分类决策和连续特征回归时的原理.决策树创建过程分析了信息混乱度度量Gini指数.连续和离散特征的特殊处理.连续和离散特征共存时函数的特殊处理和后剪枝:用于回归时则介绍了回归树和模型树的原理.适用场景和创建过程.个人认为,回归树和模型树

机器学习总结(八)决策树ID3,C4.5算法,CART算法

本文主要总结决策树中的ID3,C4.5和CART算法,各种算法的特点,并对比了各种算法的不同点. 决策树:是一种基本的分类和回归方法.在分类问题中,是基于特征对实例进行分类.既可以认为是if-then规则的集合,也可以认为是定义在特征空间和类空间上的条件概率分布. 决策树模型:决策树由结点和有向边组成.结点一般有两种类型,一种是内部结点,一种是叶节点.内部结点一般表示一个特征,而叶节点表示一个类.当用决策树进行分类时,先从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到子结点.而

机器学习实战-决策树(ID3)

//==================================================== 决策树的构造: 构造决策树时,需要解决的第一个问题是,当前数据集上那个特征在划分数据是起决定性作用.为了找到决定性特征,我们必须使用某种度量来评估每个特征.完成评估之后,找到决定性特征,使用该特征划分数据,原始的数据集就被划分为几个数据子集.这个子集会发布在第一个决策点的所有分支.如果某个分支下的数据属于同一类型,则当前已经准确划分数据分类.如果数据子集内的数据不属于同一类型,则需要重复