转至: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. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 10

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2411] 版本控制:https://git.coding.net/liuyy08 ...

  2. 使用eclipse启动系统时报错“ java.lang.OutOfMemoryError: PermGen space”问题的解决

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76571611 本文出自[我是干勾鱼的博客] 有的时候,使用eclipse启动系统 ...

  3. matlab 将一堆文件名读到一个文本里面windows版本里

    有点坑: 在windows下,这么写,打印时也会把\n当成字符串打印出来 path= strcat('/home/wang/Desktop/trainset/num0/',file(i).name,' ...

  4. 高性能Mysql学习笔记之事务

    传送门 什么是事务? 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就会执行该组查询.如果其中有任何一条语句因为崩溃或其他原因无 ...

  5. 第2本MATLAB书

    前面看的<DSP using MATLAB>后面还有两章,其内容太难了,看不下去,暂时放放: 因为工作中需要MATLAB和电磁场的相关知识,从网上找了本 初步翻了翻,里面有代码有图片,英文 ...

  6. streamsets microservice pipeline 试用

    实际上还是一个pipeline,只是添加了一些规则以及内嵌的http server 方便我们对于基于http 或者类似轻量 协议数据的处理 基本环境 使用docker&& docker ...

  7. ballerina 学习十九 安全编程

      ballerina 内部提供了几种常用的安全开发模型,token 认证(jwt) basic auth jwt 安全 参考代码 import ballerina/http; http:AuthPr ...

  8. Django 思维导图

  9. oracle12c之 表空间维护总结

    1.1.创建永久表空间 In the CDB:SQL> CONNECT system@cdb1SQL> CREATE TABLESPACE cdb_users DATAFILE'/home ...

  10. CenOS中的yum配置文件CentOS-Base.repo里面的参数都是何含义? souhu CentOS-Base.repo

    souhu  yum服务器CentOS-Base.repo 将$releasever替换为操作系统版本号 # CentOS-Base.repo # # The mirror system uses t ...