关于信息增益(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),计算公式为:
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的记录有Normal的记录有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
最后按照信息增益最大的原则选Outlook为根节点。子节点重复上面的步骤。这颗树可以是这样的,它读起来就跟你认为的那样、
关于信息增益(information gain)相关推荐
- 什么是信息增益(Information Gain)?
参考链接: 什么是信息增益(Information Gain)? 信息熵到底是什么 首先建立一棵决策树.信息增益是一个统计量,用来描述一个属性区分数据样本的能力.信息增益越大,那么决策树就会越简洁.这 ...
- 什么是信息增益(Information Gain)
当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设.在这种情况下,概率分布最均匀,预测的风险最小.因为这时概率分布的信息熵最大,所以称之为 ...
- 最大信息熵增益_信息熵(Entropy)、信息增益(Information Gain)
1. 信息熵:H(X) 描述X携带的信息量. 信息量越大(值变化越多),则越不确定,越不容易被预测. 对于抛硬币问题,每次有2种情况,信息熵为1 对于投骰子问题,每次有6中情况,信息熵为1.75 下面 ...
- python get score gain_什么是“熵和信息增益”?(What is “entropy and information gain”?)...
什么是"熵和信息增益"?(What is "entropy and information gain"?) 我正在读这本书( NLTK ),令人困惑. 熵被定义 ...
- 论文阅读 An Information Gain Formulation for Active Volumetric 3D Reconstruction
这是一篇讲基于3D重建这个场景,如何更好地计算information gain的 好像是2016ICRA 也是uzh实验室的 An Information Gain Formulation for A ...
- java 信息增益_对信息增益(IG,Information Gain)的理解和计算
可能理解的不对. 决策树构建中节点的选择靠的就是信息增益了. 信息增益是一种有效的特征选择方法,理解起来很简单:增益嘛,肯定是有无这个特征对分类问题的影响的大小,这个特征存在的话,会对分类系统带来多少 ...
- ig信息增益 java_信息增益(IG,Information Gain)的理解和计算
可能理解的不对. 决策树构建中节点的选择靠的就是信息增益了. 信息增益是一种有效的特征选择方法,理解起来很简单:增益嘛,肯定是有无这个特征对分类问题的影响的大小,这个特征存在的话,会对分类系统带来多少 ...
- Information Gain 计算 python实现
from math import logdef I(*args):total = sum(args) + 0.0result = 0.0for i in args:if i == 0:result + ...
- IG (information gain)
IG(t)=H( C )-H(C/T) 特征T的信息增益等于:整体C的信息量减去已知特征t时的信息量. 信息量通过熵来表达. H( C )是整体的信息熵 Ci为类别 H(C/T)是已知特征T时的信息量 ...
最新文章
- zabbix3.0禁用guest用户
- Linux下通过PXE服务器安装Linux系统
- Python 微信机器人-通过wxpy库向指定名称的好友发送微信消息实例演示
- 4.8 这和大脑有什么关系-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
- 安信证券王环:安信证券数据中台建设历程
- 14 Java NIO vs IO-翻译
- java中文乱码问题的原因是什么?怎么解决中文乱码问题?
- 记录您的里程和社区运行情况:Java EE 7真实体验
- thinkphp v5.0.11漏洞_Thinkphp 5.0远程代码执行漏洞
- 发现一个 WPF/E Asp.net Server Control
- paper reading:Part-based Graph Convolutional Network for Action Recognition
- 开源大数据:Databricks Lakehouse
- 捕获asp.net下的未处理异常
- 一个接口文档模板的API设计流程
- 假显卡测试软件,如何使用软件检测真假显卡软件验证方法简介
- 解决 fast api “detail“: “There was an error parsing the body“问题
- python 强类型 弱类型_Python 到底是强类型语言,还是弱类型语言?
- mysql sniffer 源码_MySQL 抓包工具 - MySQL Sniffer 使用小结 (含带general_log日志)
- [翻译]Linter简介-摘自维基百科
- 【转】超级珍贵的卤水秘方大全!
热门文章
- 【c++数据结构】栈混洗的甄别算法
- 公链,仍然是区块链产业的根基!
- 分销APP联盟商家入驻商城系统开发
- 简述java什么是继承_Java 继承简述
- c语言编程能力风暴,学编程得从娃娃抓起:Abilix 能力风暴 发布 全新教育机器人伯牙...
- indesign如何画弧线_InDesign钢笔工具怎么使用
- SWAPIDC服务器销售模板,记录利用swapidc搭建IDC销售网站教程
- php 根据时间获取二十四节气
- 教你快速爬取哔哩哔哩整部番剧的视频弹幕
- 有机化学研究生博士生为什么被要求长时间工作