信息增益(Information Gain)(转)
当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以称之为“最大熵法”。最大熵法在数学形式上很漂亮,但是实现起来比较复杂,但把它运用于金融领域的诱惑也比较大,比如说决定股票涨落的因素可能有几十甚至上百种,而最大熵方法恰恰能找到一个同时满足成千上万种不同条件的模型。
这里我们先不讨论算法(这里用的是ID3/C4.5),把一棵决策树建立起来再说。我们要建立的决策树的形式类似于“如果天气怎么样,去玩;否则,怎么着
怎么着”的树形分叉。那么问题是用哪个属性(即变量,如天气、温度、湿度和风力)最适合充当这颗树的根节点,在它上面没有其他节点,其他的属性都是它的后
续节点。借用信息论的概念,我们用一个统计量,“信息增益”(Information
Gain)来衡量一个属性区分以上数据样本的能力。信息增益量越大,这个属性作为一棵树的根节点就能使这棵树更简洁,比如说一棵树可以这么读成,如果风力
弱,就去玩;风力强,再按天气、温度等分情况讨论,此时用风力作为这棵树的根节点就很有价值。如果说,风力弱,再又天气晴朗,就去玩;如果风力强,再又怎
么怎么分情况讨论,这棵树相比就不够简洁了。计算信息增益的公式需要用到“熵”(Entropy)。名词越来越多,让我们通过手工计算记住它们的计算方
法,把Excel打开:
1 计算熵
我们检查的属性是是否出去玩。用Excel对上面数据的play变量的各个取值排个序(这个工作簿里把“play”这个词去掉),一共是14条记录,你能数出取值为yes的记录有9个,取值为no的有5个,我们说这个样本里有9个正例,5
个负例,记为S(9+,5-),S是样本的意思(Sample)。这里熵记为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:
这里LOG(9/14,2)中的“2”表示以2为底。类似地,如果你习惯用Matlab做数学运算本,公式为
其中“2”的含义与上同。
总结:在这个例子中,我们的输出属性(我们要检查的属性)“play”只有两个取值,同样地,如果输出属性的取值大于2,公式是对成的,一样的形式,连加就是,找到各个取值的个数,求出各自的比例。如果样本具有二元输出属性,其熵的公式为
=-(p+)*log(p+)-(p-)*log(p-)
其中,p+、p-分别为正例和负例占总记录的比例。输出属性取值大于2的情况,公式是对称的。
2
分别以Wind、Humidity、Outlook和Temperature作为根节点,计算其信息增益
可以数得,属性Wind中取值为Weak的记录有Normal的记录有8条,其中正例6个,负例2个;同样,取值为Strong的记录6个,正例负例个3个。我们可以计算相应的熵为:
现在就可以计算出相应的信息增益了:
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(Normal)=0.592
以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
最后按照信息增益最大的原则选Outlook为根节点。子节点重复上面的步骤。这颗树可以是这样的,它读起来就跟你认为的那样
信息增益(Information Gain)(转)的更多相关文章
- 通俗易懂的信息熵与信息增益(IE, Information Entropy; IG, Information Gain)
信息熵与信息增益(IE, Information Entropy; IG, Information Gain) 信息增益是机器学习中特征选择的关键指标,而学习信息增益前,需要先了解信息熵和条件熵这两个 ...
- Theoretical comparison between the Gini Index and Information Gain criteria
Knowledge Discovery in Databases (KDD) is an active and important research area with the promise for ...
- 信息增益(IG,Information Gain)的理解和计算
决策树构建中节点的选择靠的就是信息增益了. 信息增益是一种有效的特征选择方法,理解起来很简单:增益嘛,肯定是有无这个特征对分类问题的影响的大小,这个特征存在的话,会对分类系统带来多少信息量,缺了他行不 ...
- 决策树算法一:hunt算法,信息增益(ID3)
决策树入门 决策树是分类算法中最重要的算法,重点 决策树算法在电信营业中怎么工作? 这个工人也是流失的,在外网转移比处虽然没有特征来判断,但是在此节点处流失率有三个分支概率更大 为什么叫决策树? 因为 ...
- 【Machine Learning】决策树案例:基于python的商品购买能力预测系统
决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...
- 【Machine Learning】机器学习の特征
绘制了一张导图,有不对的地方欢迎指正: 下载地址 机器学习中,特征是很关键的.其中包括,特征的提取和特征的选择.他们是降维的两种方法,但又有所不同: 特征抽取(Feature Extraction): ...
- 从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看
从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 最近在面试中,除了基础 & 算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全 ...
- (转)Decision Tree
Decision Tree:Analysis 大家有没有玩过猜猜看(Twenty Questions)的游戏?我在心里想一件物体,你可以用一些问题来确定我心里想的这个物体:如是不是植物?是否会飞?能游 ...
- Web挖掘技术
一.数据挖掘 数据挖掘是运用计算机及信息技术,从大量的.不全然的数据集中获取隐含在当中的实用知识的高级过程.Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用.Web 数据 ...
随机推荐
- Java基础之一:Java开发环境配置
Java 开发环境配置 window系统安装java 下载JDK,地址:http://www.oracle.com 在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Window ...
- FastAdmin 学习线路 (2018-06-09 更新)
FastAdmin 学习线路 以下为常规线路,非常规可跳过. FastAdmin 学习线路 基础 HTML CSS DIV Javascript 基础 jQuery php 基础 对象 命名空间 进阶 ...
- PHP安全性漫谈
最近刚做完两个PHP的网站项目,客户虽然没有安全性的相关需求,但是自己不能放过对自己的要求,何况对以后做电子商务的项目相当有帮助,呵呵,早准备早超生,经过查看PHP 帮助和相关资料~~~~ ...
- java 面向对象 — 多态
注意:如果用父类引用指向子类对象的时候.不可以调用,子类中有但是父类中没有的方法. 抽象 方法没有具体方法,以分号结束.例:public abstract void call(); 1.接口必须要有a ...
- Android中Parcelable与Serializable接口用法
转自: Android中Parcelable接口用法 1. Parcelable接口 Interface for classes whose instances can be written to a ...
- Hive 安装操作
本篇为安装篇较简单: 前提:1: 安装了hadoop-1.0.4(1.0.3也可以)正常运行2:安装了hbase-0.94.3, 正常运行 接下来,安装Hive,基于已经安装好的hadoop,步骤如下 ...
- PHP中的=>,->,@,&,::,%
在php中数组默认键名是整数,也可以自己定义任意字符键名(最好是有实际意义).如: $css=array('style'=>'0',‘color’=>‘green‘), 则$css['st ...
- Sql Server 2016数据库生成带数据的脚本
步骤:右键点击对应数据库->任务->生成脚本 在弹出的会话框中选择需要的对象,点击下一步,在设置和编写脚本选项中,点开高级按钮(如图)选择架构和数据点击确定就可以了. 提醒:如果你在数据库 ...
- ubuntu sudo apt-get update与sudo apt-get upgrade的作用及区别,以及python pip的安装
在UBUNTU下,我们维护一个源列表,源列表里面都是一些网址信息,这每一条网址就是一个源,这个地址指向的数据标识着这台源服务器上有哪些软件可以安装使用.编辑源命令: sudo gedit /etc/a ...
- 20165233 Java第七、十章学习总结
20165233 2017-2018-2 <Java程序设计>第五周学习总结 教材学习内容总结 ch07 内部类:Java支持在一个类中声明另一个类,这样的类称为内部类,而包含内部类的类称 ...