转至:http://blog.csdn.net/bitcarmanlee/article/details/51488204

在信息论与概率统计学中,熵(entropy)是一个很重要的概念。在机器学习与特征工程中,熵的概念也用得灰常多。今天就把跟熵有关的东东稍微整理一下,权当笔记。

1.信息熵

熵是神马东东?信息论的开山祖师爷Shannon(中文翻译过来一般叫香农,总觉得很多文字经过翻译就不对劲,就跟人家老外翻译贱人就是矫情一样,感觉怪怪的。所以咱们还是用英文了,偷偷装个小逼)明确告诉我们,信息的不确定性可以用熵来表示: 
对于一个取有限个值的随机变量X,如果其概率分布为:

P(X=xi)=pi,i=1,2,⋯,n

那么随机变量X的熵可以用以下公式描述:

H(X)=−∑i=1npilogpi

每次看到这个式子,都会从心底里感叹数学的伟大与奇妙。在这之前,信息这东东对于人们来说,是个看着好像挺清晰实际还是很模糊的概念。Shannon用最简洁美妙的方式,告诉了整个世界信息到底应该怎么去衡量去计算。今天每个互联网人都知道,这个衡量的标准就是bit。正是由于bit的出现,才引领了我们今天信息时代的到来。所以即使把Shannon跟世界上最伟大的那些科学家相提并论,我觉得也丝毫不为过。

举个例子,如果一个分类系统中,类别的标识是c,取值情况是c1,c2,⋯,cn,n为类别的总数。那么此分类系统的熵为:

H(c)=−∑i=1np(ci)⋅log2p(ci)

更特别一点,如果是个二分类系统,那么此系统的熵为:

H(c)=p(c0)log2p(c0)+p(c1)log2p(c1)

其中p(c0)、p(c1)分别为正负样本出现的概率。

2.条件熵(Conditional Entropy)与信息增益(Information Gain)

第一节我们谈到,信息的不确定性我们用熵来进行描述。很多时候,我们渴望不确定性,渴望明天又是新的一天,希望寻找新的刺激与冒险,所谓的七年之庠就是最好的例子。但是又有很多时候,我们也讨厌不确定性,比如现在的RTB广告,很多时候广告主其实希望不管什么情况下,这个广告位都是归我所有来投广告,别人都别跟我来抢,我把广告素材准备好以后,媒体按排期给我播就行了。所以在这种情况下,我们又要竭力去消除系统的不确定性。

那怎么样去消除系统的不确定性呢?当我们知道的信息越多的时候,自然随机事件的不确定性就越小。举个简单的例子: 
如果投掷一枚均匀的筛子,那么筛子出现1-6的概率是相等的,此时,整个系统的熵可以表述为:

H(c)=−16log216×6=log26

如果我们加一个特征,告诉你掷筛子的结果出来是偶数,因为掷筛子出来为偶数的结果只可能为2,4,6,那么此时系统的熵为:

H(c)=−13log213×3=log23

因为我们加了一个特征x:结果为偶数,所以整个系统的熵减小,不确定性降低。

来看下条件熵的表达式: 
1.当特征x被固定为值xi时,条件熵为: H(c|x=xi) 
2.当特征X的整体分布情况被固定时,条件熵为:H(c|X) 
应该不难看出:

H(c|X)=−p(x=x1)H(c|x=x1)−p(x=x2)H(c|x=x2)−⋯−p(x=xn)H(c|x=xn)=−∑i=1np(x=xi)H(c|x=xi)=−∑i=1np(x=xi)p(c|x=xi)log2p(c|x=xi)=−∑i=1np(c,xi)log2p(c|x=xi)

其中,n为特征X所出现所有种类的数量。

那么因为特征X被固定以后,给系统带来的增益(或者说为系统减小的不确定度)为:

IG(X)=H(c)−H(c|X)=−∑i=1np(ci)log2p(ci)+∑i=1np(x=xi)H(c|x=xi)

举个别人文章中例子:文本分类系统中的特征X,那么X有几个可能的值呢?注意X是一个固定的特征,比如关键词”经济”,当我们说特征”经济”可能的取值时,实际上只有两个,要么出现,要么不出现。假设x代表x出现,而x¯表示x不出现。注意系统包含x但x不出现与系统根本不包含x可是两回事。 
因此固定X时系统的条件熵为:

H(C|X)=−p(x)H(c|x)−p(x¯)H(C|x¯)

特征X给系统带来的信息增益(IG)为:

IG(X)=H(c)−H(c|X)=−∑i=1np(ci)log2p(ci)+p(x)∑i=1np(ci|x)log2p(ci|x)+p(x¯)∑i=1np(ci|x¯)log2p(ci|x¯)

式子看上去很长,其实计算起来很简单,都是一些count的操作。−∑ni=1p(ci)log2p(ci)这一项不用多说,就是统计各个类别的概率,将每个类别的样本数量除以总样本量即可。p(x)∑ni=1p(ci|x)log2p(ci|x)这一项,p(x)表示特征在样本中出现的概率,将特征出现的次数除以样本总量即可。p(ci|x)表示特征出现的情况下,每个类别的概率分别为多少,也全是count操作。p(ci|x¯)操作以此类推。

3.信息增益做特征选择的优缺点

先来说说优点: 
1.信息增益考虑了特征出现与不出现的两种情况,比较全面,一般而言效果不错。 
2.使用了所有样例的统计属性,减小了对噪声的敏感度。 
3.容易理解,计算简单。

主要的缺陷: 
1.信息增益考察的是特征对整个系统的贡献,没有到具体的类别上,所以一般只能用来做全局的特征选择,而没法针对单个类别做特征选择。 
2.只能处理连续型的属性值,没法处理连续值的特征。 
3.算法天生偏向选择分支多的属性,容易导致overfitting。

4.信息增益比(Infomation Gain Ratio)

前面提到,信息增益的一个大问题就是偏向选择分支多的属性导致overfitting,那么我们能想到的解决办法自然就是对分支过多的情况进行惩罚(penalty)了。于是我们有了信息增益比,或者说信息增益率: 
特征X的熵:

H(X)=−∑i=1npilogpi

特征X的信息增益 :

IG(X)=H(c)−H(c|X)

那么信息增益比为:

gr=H(c)−H(c|X)H(X)

在决策树算法中,ID3使用信息增益,c4.5使用信息增益比。

5.Gini系数

Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树。 
Gini系数的计算方式如下:

Gini(D)=1−∑i=1np2i

其中,D表示数据集全体样本,pi表示每种类别出现的概率。取个极端情况,如果数据集中所有的样本都为同一类,那么有p0=1,Gini(D)=0,显然此时数据的不纯度最低。 
与信息增益类似,我们可以计算如下表达式:

ΔGini(X)=Gini(D)−GiniX(D)

上面式子表述的意思就是,加入特征X以后,数据不纯度减小的程度。很明显,在做特征选择的时候,我们可以取ΔGini(X)最大的那个

 

在信息论与概率统计学中,熵(entropy)是一个很重要的概念。在机器学习与特征工程中,熵的概念也用得灰常多。今天就把跟熵有关的东东稍微整理一下,权当笔记。

1.信息熵

熵是神马东东?信息论的开山祖师爷Shannon(中文翻译过来一般叫香农,总觉得很多文字经过翻译就不对劲,就跟人家老外翻译贱人就是矫情一样,感觉怪怪的。所以咱们还是用英文了,偷偷装个小逼)明确告诉我们,信息的不确定性可以用熵来表示: 
对于一个取有限个值的随机变量X,如果其概率分布为:

P(X=xi)=pi,i=1,2,⋯,n

那么随机变量X的熵可以用以下公式描述:

H(X)=−∑i=1npilogpi

每次看到这个式子,都会从心底里感叹数学的伟大与奇妙。在这之前,信息这东东对于人们来说,是个看着好像挺清晰实际还是很模糊的概念。Shannon用最简洁美妙的方式,告诉了整个世界信息到底应该怎么去衡量去计算。今天每个互联网人都知道,这个衡量的标准就是bit。正是由于bit的出现,才引领了我们今天信息时代的到来。所以即使把Shannon跟世界上最伟大的那些科学家相提并论,我觉得也丝毫不为过。

举个例子,如果一个分类系统中,类别的标识是c,取值情况是c1,c2,⋯,cn,n为类别的总数。那么此分类系统的熵为:

H(c)=−∑i=1np(ci)⋅log2p(ci)

更特别一点,如果是个二分类系统,那么此系统的熵为:

H(c)=p(c0)log2p(c0)+p(c1)log2p(c1)

其中p(c0)、p(c1)分别为正负样本出现的概率。

2.条件熵(Conditional Entropy)与信息增益(Information Gain)

第一节我们谈到,信息的不确定性我们用熵来进行描述。很多时候,我们渴望不确定性,渴望明天又是新的一天,希望寻找新的刺激与冒险,所谓的七年之庠就是最好的例子。但是又有很多时候,我们也讨厌不确定性,比如现在的RTB广告,很多时候广告主其实希望不管什么情况下,这个广告位都是归我所有来投广告,别人都别跟我来抢,我把广告素材准备好以后,媒体按排期给我播就行了。所以在这种情况下,我们又要竭力去消除系统的不确定性。

那怎么样去消除系统的不确定性呢?当我们知道的信息越多的时候,自然随机事件的不确定性就越小。举个简单的例子: 
如果投掷一枚均匀的筛子,那么筛子出现1-6的概率是相等的,此时,整个系统的熵可以表述为:

H(c)=−16log216×6=log26

如果我们加一个特征,告诉你掷筛子的结果出来是偶数,因为掷筛子出来为偶数的结果只可能为2,4,6,那么此时系统的熵为:

H(c)=−13log213×3=log23

因为我们加了一个特征x:结果为偶数,所以整个系统的熵减小,不确定性降低。

来看下条件熵的表达式: 
1.当特征x被固定为值xi时,条件熵为: H(c|x=xi) 
2.当特征X的整体分布情况被固定时,条件熵为:H(c|X) 
应该不难看出:

H(c|X)=−p(x=x1)H(c|x=x1)−p(x=x2)H(c|x=x2)−⋯−p(x=xn)H(c|x=xn)=−∑i=1np(x=xi)H(c|x=xi)=−∑i=1np(x=xi)p(c|x=xi)log2p(c|x=xi)=−∑i=1np(c,xi)log2p(c|x=xi)

其中,n为特征X所出现所有种类的数量。

那么因为特征X被固定以后,给系统带来的增益(或者说为系统减小的不确定度)为:

IG(X)=H(c)−H(c|X)=−∑i=1np(ci)log2p(ci)+∑i=1np(x=xi)H(c|x=xi)

举个别人文章中例子:文本分类系统中的特征X,那么X有几个可能的值呢?注意X是一个固定的特征,比如关键词”经济”,当我们说特征”经济”可能的取值时,实际上只有两个,要么出现,要么不出现。假设x代表x出现,而x¯表示x不出现。注意系统包含x但x不出现与系统根本不包含x可是两回事。 
因此固定X时系统的条件熵为:

H(C|X)=−p(x)H(c|x)−p(x¯)H(C|x¯)

特征X给系统带来的信息增益(IG)为:

IG(X)=H(c)−H(c|X)=−∑i=1np(ci)log2p(ci)+p(x)∑i=1np(ci|x)log2p(ci|x)+p(x¯)∑i=1np(ci|x¯)log2p(ci|x¯)

式子看上去很长,其实计算起来很简单,都是一些count的操作。−∑ni=1p(ci)log2p(ci)这一项不用多说,就是统计各个类别的概率,将每个类别的样本数量除以总样本量即可。p(x)∑ni=1p(ci|x)log2p(ci|x)这一项,p(x)表示特征在样本中出现的概率,将特征出现的次数除以样本总量即可。p(ci|x)表示特征出现的情况下,每个类别的概率分别为多少,也全是count操作。p(ci|x¯)操作以此类推。

3.信息增益做特征选择的优缺点

先来说说优点: 
1.信息增益考虑了特征出现与不出现的两种情况,比较全面,一般而言效果不错。 
2.使用了所有样例的统计属性,减小了对噪声的敏感度。 
3.容易理解,计算简单。

主要的缺陷: 
1.信息增益考察的是特征对整个系统的贡献,没有到具体的类别上,所以一般只能用来做全局的特征选择,而没法针对单个类别做特征选择。 
2.只能处理连续型的属性值,没法处理连续值的特征。 
3.算法天生偏向选择分支多的属性,容易导致overfitting。

4.信息增益比(Infomation Gain Ratio)

前面提到,信息增益的一个大问题就是偏向选择分支多的属性导致overfitting,那么我们能想到的解决办法自然就是对分支过多的情况进行惩罚(penalty)了。于是我们有了信息增益比,或者说信息增益率: 
特征X的熵:

H(X)=−∑i=1npilogpi

特征X的信息增益 :

IG(X)=H(c)−H(c|X)

那么信息增益比为:

gr=H(c)−H(c|X)H(X)

在决策树算法中,ID3使用信息增益,c4.5使用信息增益比。

5.Gini系数

Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树。 
Gini系数的计算方式如下:

Gini(D)=1−∑i=1np2i

其中,D表示数据集全体样本,pi表示每种类别出现的概率。取个极端情况,如果数据集中所有的样本都为同一类,那么有p0=1,Gini(D)=0,显然此时数据的不纯度最低。 
与信息增益类似,我们可以计算如下表达式:

ΔGini(X)=Gini(D)−GiniX(D)

上面式子表述的意思就是,加入特征X以后,数据不纯度减小的程度。很明显,在做特征选择的时候,我们可以取ΔGini(X)最大的那个

 
 

gain 基尼系数的更多相关文章

  1. 决策树与树集成模型(bootstrap, 决策树(信息熵,信息增益, 信息增益率, 基尼系数),回归树, Bagging, 随机森林, Boosting, Adaboost, GBDT, XGboost)

    1.bootstrap   在原始数据的范围内作有放回的再抽样M个, 样本容量仍为n,原始数据中每个观察单位每次被抽到的概率相等, 为1/n , 所得样本称为Bootstrap样本.于是可得到参数θ的 ...

  2. 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 ...

  3. but this usually doesn’t gain you anything.

    High Performance My SQL, Third Edition Date and Time Types My SQL has many types for various kinds o ...

  4. (转载)高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD

    (一)一个基本概念 分贝(dB):按照对数定义的一个幅度单位.对于电压值,dB以20log(VA/VB)给出:对于功率值,以10log(PA/PB)给出.dBc是相对于一个载波信号的dB值:dBm是相 ...

  5. 通俗易懂的信息熵与信息增益(IE, Information Entropy; IG, Information Gain)

    信息熵与信息增益(IE, Information Entropy; IG, Information Gain) 信息增益是机器学习中特征选择的关键指标,而学习信息增益前,需要先了解信息熵和条件熵这两个 ...

  6. 增益 Gain 分贝 dB

    https://zh.wikipedia.org/wiki/%E5%88%86%E8%B2%9D 分贝(decibel)是量度两个相同单位之数量比例的单位,主要用于度量声音强度,常用dB表示. “分” ...

  7. 基尼系数(Gini coefficient),洛伦茨系数

    20世纪初意大利经济学家基尼,于1922年提出的定量测定收入分配差异程度的指标.它是根据洛伦茨曲线找出了判断分配平等程度的指标(如下图). 设实际收入分配曲线和收入分配绝对平等曲线之间的面积为A,实际 ...

  8. 信息增益(Information Gain)(转)

    当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设.在这种情况下,概率分布最均匀,预测的风险最小.因为这时概率分布的信息熵最大,所以称之为 ...

  9. xgboost 里边的gain freq, cover

    assuming that you're using xgboost to fit boosted trees for binary classification. The importance ma ...

随机推荐

  1. WebApi用Post的方式提交Json时,获取不到值或不进对应方法的问题

    又是一个通宵,终于搞明白了. 被WebApi坑得好惨. 之前用各种方法Post上来,有时可以读到结构,但没值,有时直接就是一个Null,有时连方法都没进就跑了,只是来控制器里看了一下…… 最后好友说还 ...

  2. jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)

    这个插件的名字elevatezoom,网址为http://www.elevateweb.co.uk/image-zoom,在github上的项目首页为https://github.com/elevat ...

  3. Alpha阶段敏捷冲刺---Day1

    一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 1.昨天已完成的工作    昨天我们组全体成员在五社区五号楼719召开了紧急会议,在会议上我们梳理了编写这个程序的所有流程,并且根 ...

  4. PHP ksort() 函数

    PHP ksort() 函数 PHP Array 函数 实例 按照键名对关联数组进行升序排序: <?php $age=array("Bill"=>"60&qu ...

  5. 转:MyISAM 和 InnoDB 讲解

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISA ...

  6. linux下不同tomcat使用不同的jdk版本

    环境:Linux tomcat7 使用jdk7 tomcat 8使用jdk8 最近写好了一个程序,需要部署在测试机器上,这个测试机器上已经有了在运行的tomcat7, 我这个程序要求使用tomcat8 ...

  7. 64位windows 2003和windows xp

    msdn windows2003 64位简体中文企业版R2 sp2(cn_win_srv_2003_r2_enterprise_x64_with_sp2_vl) ed2k://|file|cn_win ...

  8. 数据库比较工具DBCompareTool for Oracle 0.2.5发布

    迁移数据库sql to oracle http://www.oracle.com/technetwork/cn/database/migration/connect-sqlserver-1945229 ...

  9. Erlang process structure -- refc binary

    Erlang 的process 是虚拟机层面的进程,每个Erlang process 都包括一个 pcb(process control block), 一个stack 以及私有heap . 这部分的 ...

  10. poj 2377 Bad Cowtractors (最大生成树prim)

    Bad Cowtractors Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) To ...