转至: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. hdu 3699 10 福州 现场 J - A hard Aoshu Problem 暴力 难度:0

    Description Math Olympiad is called “Aoshu” in China. Aoshu is very popular in elementary schools. N ...

  2. docker把web jar包制作成镜像

    1.新建一个spring boot项目 并使用maven打成jar包,放到linux(centos7)环境上. 运行 java -jar hello.jar  后结果如下(这里项目对外提供的端口是90 ...

  3. mysql "Your password has expired...."错误解决方案

    mysql -u root -p 进入mysql命令界面,然后输入 set password = password("新密码"); 参考:http://blog.csdn.net/ ...

  4. Nginx 静态资源缓存配置

    示例 # Media: images, icons, video, audio, HTC location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|m ...

  5. C语言--第三次作业

    要求一 . 1)C高级第三次PTA作业(1) 题目6-1 1.设计思路      (1)主要描述题目算法          第一步:将月份分别赋值:          第二步:利用switch语句,输 ...

  6. 《DSP using MATLAB》Problem 2.7

    1.代码: function [xe,xo,m] = evenodd_cv(x,n) % % Complex signal decomposition into even and odd parts ...

  7. 在C#中调用Java生成的jar包文件的方法

    C#工程调用Java已生成的jar包步骤如下: 一.使用IKVM.NET组件 首先到IKVM官网(http://www.ikvm.net)下载组件,下载地址:https://sourceforge.n ...

  8. 打造基于jQuery的智能选择输入框

    UPDATE:修正了在FireFox下显示的问题,重新copy CSS即可 写完这个名字忽然觉得有点标题党的嫌疑,但是又不知道什么样的名字比较合适,那就暂且这样吧. 今天要讲的东西比较简单,其中会用到 ...

  9. socket编程---SCTP

    sctp_sndrcvinfo结构体 sctp_event_subscribe结构体 更多的关于SCTP的结构体http://aisxyz.iteye.com/blog/2408978 SCTP套接字 ...

  10. pthread调度策略,优先级和竞争范围

    实时调度:操作系统在有限的时间内提供特定水平的服务能力.受限制的响应时间不一定是块的反应,意味着可预知的响应速度.如果系统定义_POSIX_THRAED_PRIORITY_SCHEDULING,它为线 ...