• gain 基尼系数


    转至: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不出现。注意系统包含xx不出现与系统根本不包含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)=1i=1np2i

    其中,D表示数据集全体样本,pi表示每种类别出现的概率。取个极端情况,如果数据集中所有的样本都为同一类,那么有p0=1Gini(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不出现。注意系统包含xx不出现与系统根本不包含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)=1i=1np2i

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

    上面式子表述的意思就是,加入特征X以后,数据不纯度减小的程度。很明显,在做特征选择的时候,我们可以取ΔGini(X)最大的那个
     
     
  • 相关阅读:
    Python中__new__()方法的使用和实例化
    python __str__ , __repr__区别
    python中%r和%s的区别
    面向对象进阶
    getattr(sys.modules[__name__], func_name)
    os.path.dirname(__file__)使用
    bound和unbound方法,类的绑定和非绑定是什么
    基于python中staticmethod和classmethod的区别(详解)
    python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
    python @classmethod 的使用场合
  • 原文地址:https://www.cnblogs.com/zhangbojiangfeng/p/6806546.html
Copyright © 2020-2023  润新知