信息增益与熵

在信息论中,熵被用来衡量一个随机变量出现的期望值。变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大,熵是整个系统的平均消息量。 信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。 他的计算公式是:H(x)=E[I(xi)]=E[ log(1/p(xi)) ]=-∑p(xi)log(p(xi)) (i=1,2,..n)。自信息,又称信息本体,用来衡量单一事件发生时所包含的信息量的多少。如果事件发生的机率是P(x),则信息本体I(x)的定义就是:-log(P(x))。互信息(Mutual Information)是一有用的信息度量,它是指两个事件集合之间的相关性。(PMI)
        在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量。所谓信息量,其实就是熵。信息增益的计算过程如下:
1 计算熵

我们检查的属性是是否出去玩。用Excel对上面数据的play变量的各个取值排个序(这个工作簿里把“play”这个词去掉),一共是14条记录,你能数出取值为yes的记录有9个,取值为no的有5个,我们说这个样本里有9个正例,5 个负例,记为S(9+,5-),S是样本的意思(Sample)。这里熵记为Entropy(S),计算公式为:

Entropy(S)= -(9/14)*log(9/14)-(5/14)*log(5/14)

解释一下,9/14是正例的个数与总记录之比,同样5/14是负例占总记录的比例。log(.)是以2为底的对数(我们知道以e为底的对数称为自然对数,记为ln(.),lg(.)表示以10为底的对数)。在Excel里我们可以随便找一个空白的单元格,键入以下公式即得0.940:

=-(9/14)*LOG(9/14,2)-(5/14)*LOG(5/14,2)

这里LOG(9/14,2)中的“2”表示以2为底。类似地,如果你习惯用Matlab做数学运算本,公式为

-(9/14)*log2(9/14)-(5/14)*log2(5/14)

其中“2”的含义与上同。

总结:在这个例子中,我们的输出属性(我们要检查的属性)“play”只有两个取值,同样地,如果输出属性的取值大于2,公式是对成的,一样的形式,连加就是,找到各个取值的个数,求出各自的比例。如果样本具有二元输出属性,其熵的公式为

Entropy(S) =-(p+)*log(p+)-(p-)*log(p-)

其中,p+、p-分别为正例和负例占总记录的比例。输出属性取值大于2的情况,公式是对称的。

2 分别以Wind、Humidity、Outlook和Temperature作为根节点,计算其信息增益

可以数得,属性Wind中取值为Weak的记录有8条,其中正例6个,负例2个;同样,取值为Strong的记录6个,正例负例个3个。我们可以计算相应的熵为:

Entropy(Weak)=-(6/8)*log(6/8)-(2/8)*log(2/8)=0.811

Entropy(Strong)=-(3/6)*log(3/6)-(3/6)*log(3/6)=1.0

现在就可以计算出相应的信息增益了:

Gain(Wind)=Entropy(S)-(8/14)*Entropy(Weak)-(6/14)*Entropy(Strong)=0.940-(8/14)*0.811-(6/14)*1.0=0.048

这个公式的奥秘在于,8/14是属性Wind取值为Weak的个数占总记录的比例,同样6/14是其取值为Strong的记录个数与总记录数之比。

同理,如果以Humidity作为根节点:

Entropy(High)=0.985 ; Entropy(Normal)=0.592

Gain(Humidity)=0.940-(7/14)*Entropy(High)-(7/14)*Entropy(Normal)=0.151

以Outlook作为根节点:

Entropy(Sunny)=0.971 ; Entropy(Overcast)=0.0 ; Entropy(Rain)=0.971

Gain(Outlook)=0.940-(5/14)*Entropy(Sunny)-(4/14)*Entropy(Overcast)-(5/14)*Entropy(Rain)=0.247

以Temperature作为根节点:

Entropy(Cool)=0.811 ; Entropy(Hot)=1.0 ; Entropy(Mild)=0.918

Gain(Temperature)=0.940-(4/14)*Entropy(Cool)-(4/14)*Entropy(Hot)-(6/14)*Entropy(Mild)=0.029

这样我们就得到了以上四个属性相应的信息增益值:

Gain(Wind)=0.048 ;Gain(Humidity)=0.151 ; Gain(Outlook)=0.247 ;Gain(Temperature)=0.029

时间: 2024-10-18 20:06:44

信息增益与熵的相关文章

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

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

决策树之信息与熵的计算

一.引言 之前提到的k-近邻算法是分类数据最简单最有效的算法.k-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据.而且,k-近邻数据必须保全全部数据集,如果训练数据集的很大,必须使用大量的存储空间,此外k-近邻算法必须对数据集中的每个数据计算距离,这是非常耗时的.另外,对于数据的基础结构信息,它也是无能为力的. 另一种分类算法就是“决策树算法”.对待一个数据,决策树使用多个决策判断确定最终的分类,举个小例子说明一下:给定一个动物,判断什么动物的分类,首先“它是哺乳类动物

[梁山好汉说IT] 熵的概念 & 决策树ID3如何选择子树

记录对概念的理解,用梁山好汉做例子来检验是否理解正确. 1. 事物的信息和信息熵 a. 事物的信息(信息量越大确定性越大): 信息会改变你对事物的未知度和好奇心.信息量越大,你对事物越了解,进而你对事物的好奇心也会降低,因为你对事物的确定性越高.如果你确定一件事件的发生概率是100%,你认为这件事情的信息量为0——可不是吗,既然都确定了,就没有信息量了:相反,如果你不确定这件事,你需要通过各种方式去了解,就说明这件事是有意义的,是有信息量的. b. 信息熵:为了抽象上述模型,聪明的香农总结出了信

决策树-ID3

id3:无法直接处理数值型数据,可以通过量化方法将数值型数据处理成标称型数据,但涉及太多特征划分,不建议 决策树:的最大优点在于可以给出数据的内在含义,数据形式非常容易理解: 决策树介绍:决策树分类器是带有种植的流程图,终止块表示分类结果 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不明感,可以处理不相关的数据:可以将此分类器存储于硬盘上,是个持久化的分类器 缺点:可能会发生过度匹配问题 使用数据类型:数值型和标称型 knn:不便于展现数据的内在含义:每用一次都要学习,不是持久化分类器

《机器学习实战》菜鸟学习笔记(三)决策树

老规矩,Talk is cheap, show me your code. #-*-coding:utf-8-*- from math import log def calcShannonEnt(datsSet): #长度 numEntries = len(dataSet) #字典统计 labelCounts = {} #遍历特征 for featVec in dataSet: #最后一维特征(分类) currentLabel = featVec[-1] #如果不在字典中,则添加进字典 #可以写

机器学习实战之第三章 决策树(Decision Tree)

第3章 决策树 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script> 决策树 概述 决策树(Decision Tree)算法主要用来处理分类问题,是最经常使用的数据挖掘算法之一. 决策树 场景 一个叫做 "二十个问题" 的游戏,游戏的规则很简单:参与游戏的一

【读书笔记】机器学习实战-决策树(1)

简述算法 上一章的kNN更像是应用统计知识来进行科学的预测,它可以完成许多分类任务.但是最大的缺点就是无法给出数据的内在含义,而决策树算法数据形式非常便于理解.决策树的结果经常会应用到专家系统当中. 构建一棵决策树的流程: 检测数据集中每一个子祥的属性是否属于同一类 if so return 类标签: else 寻找划分数据集的最好特征 划分数据集 创建分支结点 for 每个划分的子集 调用createBranch并增加返回结果到分支结点中 return 分支结点 决策树的一般流程 收集数据 准

模式识别(Pattern Recognition)学习笔记(二十九)--决策树的剪枝

在有限的样本下,如果决策树生长得很大,树枝很多,那么就有可能导致有限样本中对采样的偶然性或噪声比较敏感,导致过学习,从而范化能力差. 首先来看一幅图,如图: 上图是一次测试中用ID3算法得到的有关决策树的大小与在训练数据和测试数据上的正确率的关系,不难看出,出现了过学习,如果样本不足够多,随着决策树达到一定规模大小,训练数据上的正确率会不断增加,而在测试数据上的正确率不增反降,因此像这种只要生长到叶节点只包含单一类样本的方法来构建决策树的算法是存在瑕疵的,我们的目标是要兼顾训练数据上的正确率和测

python机器学习实战(二)

python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7159775.html 前言 这篇notebook是关于机器学习监督学习中的决策树算法,内容包括决策树算法的构造过程,使用matplotlib库绘制树形图以及使用决策树预测隐形眼睛类型. 操作系统:ubuntu14.04(win也ok)   运行环境:anaconda-python2.7-jupyter notebook    参考书籍:机器学习