先简单介绍一下概念

:表示随机变量的不确定性。
条件熵:在一个条件下,随机变量的不确定性。
信息增益:熵 - 条件熵。在一个条件下,信息不确定性减少的程度。通俗地讲,X(明天下雨)是一个随机变量,X的熵可以算出来, Y(明天阴天)也是随机变量,在阴天情况下下雨的信息熵我们如果也知道的话(此处需要知道其联合概率分布或是通过数据估计)即是条件熵。两者相减就是信息增益。原来明天下雨例如信息熵是2,条件熵是0.01(因为如果是阴天就下雨的概率很大,信息就少了),这样相减后为1.99,在获得阴天这个信息后,下雨信息不确定性减少了1.99。是很多的。所以信息增益大。也就是说,阴天这个信息对下雨来说是很重要的。所以在特征选择的时候常常用信息增益,如果IG(信息增益大)的话那么这个特征对于分类来说很关键。 决策树就是这样来找特征的。
熟悉决策树的人都知道ID3以及C4.5两种算法,当然也非常清楚信息增益以及信息增益率两个概念。
信息增益(Info Gain)用于ID3,Gini用于CART,信息增益率(Info Gain Ratio)用于C4.5。
信息增益率:假设某个属性存在大量的不同值,决策树在选择属性时,将偏向于选择该属性,但这肯定是不正确(导致过拟合)的。因此有必要使用一种更好的方法,那就是C4.5中使用的信息增益率(Info Gain Ratio),其考虑了分支数量和尺寸的因素,使用称为内在信息(Intrinsic Information)的概念。
内在信息(Intrinsic Information),可简单地理解为表示信息分支所需要的信息量,其计算公式如下:IntrinsicInfo(S,A)=−sumfrac|Si||S|log2frac|Si||S|信息增益率则计算如下:gainratio(Attribute)=fracgain(Attribute)IntrinsicInfo(Attribute)。实际上可以看出,属性的重要性会随着其内在信息(Intrinsic Information)的增大而减小。 信息增益率作为一种补偿(Compensate)措施来解决信息增益所存在的问题,但是它也有可能导致过分补偿,而选择那些内在信息很小的属性,这一点可以尝试:首先,仅考虑那些信息增益超过平均值的属性,其次再比较信息增益。
gini:在CART里面划分决策树的条件是采用Gini Index,定义如下:gini(T)=1−sumnj=1p2j,其中,( p_j )是类j在T中的相对频率,当类在T中是倾斜的时,gini(T)会最小。将T划分为T1(实例数为N1)和T2(实例数为N2)两个子集后,划分数据的Gini定义如下:ginisplit(T)=fracN1Ngini(T1)+fracN2Ngini(T2),然后选择其中最小的( gini_{split}(T) )作为结点划分决策树

有关计算

1. 信息论里的熵

因此先回忆一下信息论中有关信息量(就是“熵”)的定义。说有这么一个变量X,它可能的取值有n多种,分别是x1,x2,……,xn,每一种取到的概率分别是P1,P2,……,Pn,那么X的熵就定义为:

意思就是一个变量可能的变化越多(反而跟变量具体的取值没有任何关系,只和值的种类多少以及发生概率有关),它携带的信息量就越大

2. 分类系统里的熵

对分类系统来说,类别C是变量,它可能的取值是C1,C2,……,Cn,而每一个类别出现的概率是P(C1),P(C2),……,P(Cn),因此n就是类别的总数。此时分类系统的熵就可以表示为:

3. 信息增益和熵的关系

信息增益是针对一个一个的特征而言的,就是看一个特征t,系统有它和没它的时候信息量各是多少,两者的差值就是这个特征给系统带来的信息量,即增益。系统含有特征t的时候信息量很好计算,就是刚才的式子,它表示的是包含所有特征时系统的信息量。

问题是当系统不包含t时,信息量如何计算?我们换个角度想问题,把系统要做的事情想象成这样:说教室里有很多座位,学生们每次上课进来的时 候可以随便坐,因而变化是很大的(无数种可能的座次情况);但是现在有一个座位,看黑板很清楚,听老师讲也很清楚,于是校长的小舅子的姐姐的女儿托关系 (真辗转啊),把这个座位定下来了,每次只能给她坐,别人不行,此时情况怎样?对于座次的可能情况来说,我们很容易看出以下两种情况是等价的:(1)教室 里没有这个座位;(2)教室里虽然有这个座位,但其他人不能坐(因为反正它也不能参与到变化中来,它是不变的)。

对应到我们的系统中,就是下面的等价:(1)系统不包含特征t;(2)系统虽然包含特征t,但是t已经固定了,不能变化。

我们计算分类系统不包含特征t的时候,就使用情况(2)来代替,就是计算当一个特征t不能变化时,系统的信息量是多少。这个信息量其实也有专门的名称,就叫做“条件熵”,条件嘛,自然就是指“t已经固定“这个条件。

但是问题接踵而至,例如一个特征X,它可能的取值有n多种(x1,x2,……,xn), 当计算条件熵而需要把它固定的时候,要把它固定在哪一个值上呢?答案是每一种可能都要固定一下,计算n个值,然后取均值才是条件熵。而取均值也不是简单的 加一加然后除以n,而是要用每个值出现的概率来算平均(简单理解,就是一个值出现的可能性比较大,固定在它上面时算出来的信息量占的比重就要多一些)。

因此有这样两个条件熵的表达式:

这是指特征X被固定为值xi时的条件熵,


这是指特征X被固定时的条件熵,注意与上式在意义上的区别。从刚才计算均值的讨论可以看出来,第二个式子与第一个式子的关系就是:


具体到我们文本分类系统中的特征t,t有几个可能的值呢?注意t是指一个固定的特征,比如他就是指关键词“经济”或者“体育”,当我们说特征“经济”可能的取值时,实际上只有两个,“经济”要么出现,要么不出现。一般的,t的取值只有t(代表t出现)和(代表t不出现),注意系统包含t但t 不出现与系统根本不包含t可是两回事。

因此固定t时系统的条件熵就有了,为了区别t出现时的符号与特征t本身的符号,我们用T代表特征,而用t代表T出现,那么:


与刚才的式子对照一下,含义很清楚对吧,P(t)就是T出现的概率,就是T不出现的概率。这个式子可以进一步展开,其中的

另一半就可以展开为:

因此特征T给系统带来的信息增益就可以写成系统原本的熵与固定特征T后的条件熵之差:

公式中的东西看上去很多,其实也都很好计算。比如P(Ci),表示类别Ci出现的概率,其实只要用1除以类别总数就得到了(这是说你平等的看待每个类别而忽略它们的大小时这样算,如果考虑了大小就要把大小的影响加进去)。再比如P(t),就是特征T出现的概率,只要用出现过T的文档数除以总文档数就可以了,再比如P(Ci|t)表示出现T的时候,类别Ci出现的概率,只要用出现了T并且属于类别Ci的文档数除以出现了T的文档数就可以了。

从以上讨论中可以看出,信息增益也是考虑了特征出现和不出现两种情况,与开方检验一样,是比较全面的,因而效果不错。但信息增益最大的问题 还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而 无法做“本地”的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。

一个实例

任务:

根据天气预测否去打网球

数据:

这个数据集来自Mitchell的机器学习,叫做是否去打网球play-tennis,以下数据仍然是从带逗号分割的文本文件,复制到纪事本,把后缀直接改为.csv就可以拿Excel打开:*play-tennis data,其中6个变量依次为:编号、天气{Sunny、Overcast、Rain}、温度{热、冷、适中}、湿度{高、正常}、风力{强、弱}以及最后是否去玩的决策{是、否}。一个建议是把这些数据导入Excel后,另复制一份去掉变量的数据到另外一个工作簿,即只保留14个观测值。这样可以方便地使用Excel的排序功能,随时查看每个变量的取值到底有多少。*/NO. , Outlook , Temperature , Humidity , Wind , Play
1 , Sunny , Hot , High , Weak , No
2 , Sunny , Hot , High , Strong , No
3 , Overcast , Hot , High , Weak , Yes
4 , Rain , Mild , High , Weak , Yes
5 , Rain , Cool , Normal , Weak , Yes
6 , Rain , Cool , Normal , Strong , No
7 , Overcast , Cool , Normal , Strong , Yes
8 , Sunny , Mild , High , Weak , No
9 , Sunny , Cool , Normal , Weak , Yes
10 , Rain , Mild , Normal , Weak , Yes
11 , Sunny , Mild , Normal , Strong , Yes
12 , Overcast , Mild , High , Strong , Yes
13 , Overcast , Hot , Normal , Weak , Yes
14 , Rain , Mild , High , Strong , No

用决策树来预测:

决策树的形式类似于“如果天气怎么样,去玩;否则,怎么着怎么着”的树形分叉。那么问题是用哪个属性(即变量,如天气、温度、湿度和风力)最适合充当这颗树的根节点,在它上面没有其他节点,其他的属性都是它的后续节点。

那么借用上面所述的能够衡量一个属性区分以上数据样本的能力的“信息增益”(Information Gain)理论。

如果一个属性的信息增益量越大,这个属性作为一棵树的根节点就能使这棵树更简洁,比如说一棵树可以这么读成,如果风力弱,就去玩;风力强,再按天气、温度等分情况讨论,此时用风力作为这棵树的根节点就很有价值。如果说,风力弱,再又天气晴朗,就去玩;如果风力强,再又怎么怎么分情况讨论,这棵树相比就不够简洁了。

用熵来计算信息增益:

1 计算分类系统熵
类别是 是否出去玩。取值为yes的记录有9个,取值为no的有5个,即说这个样本里有9个正例,5 个负例,记为S(9+,5-),S是样本的意思(Sample)。那么P(c1) = 9/14, P(c2) = 5/14
这里熵记为Entropy(S),计算公式为:
Entropy(S)= -(9/14)*log2(9/14)-(5/14)*log2(5/14)用Matlab做数学运算
2 分别以Wind、Humidity、Outlook和Temperature作为根节点,计算其信息增益我们来计算Wind的信息增益
当Wind固定为Weak时:记录有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
现在就可以计算出相应的信息增益了:
所以,对于一个Wind属性固定的分类系统的信息量为 (8/14)*Entropy(Weak)+(6/14)*Entropy(Strong)
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为根节点。子节点重复上面的步骤。这颗树可以是这样的,它读起来就跟你认为的那样:

信息增益、信息增益率、gini、特征选择、决策树相关推荐

  1. 决策树 信息熵 条件熵 基尼系数 信息增益 信息增益率 CART 随机森林

    决策树: 决策树是一种树形结构,树内部每个节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表一个分类类别.通过训练数据构建决策树,可以对未知数据进行分类, 上面的决策树深度depth ...

  2. 一文理清楚:熵,条件熵,KL散度(相对熵),交叉熵,联合熵,信息增益,信息增益比,GINI系数

    熵 熵是表示随机变量不确定性的度量. 设 X X X是一个有N个取值有限的随机变量,其概率分布为: P ( X = i ) = p i , i = 1 , 2... N P(X=i)=p_i , i= ...

  3. gini系数 决策树_案例7:机器学习--使用决策树实现泰坦尼克号乘客生存率预测...

    一.决策树简介 1.1 什么是决策树? 决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树. ...

  4. gini系数 决策树_决策树系列--ID3、C4.5、CART

    决策树系列,涉及很好算法,接下来的几天内,我会逐步讲解决策树系列算法 1.基本概念 首先我们理解什么是熵:熵的概念最早源于物理学,用于度量一个热力学系统的无序程度.在信息论里面,信息熵是衡量信息量的大 ...

  5. 决策树信息增益|信息增益比率|基尼指数实例

    今天以周志华老师的西瓜为例,复盘一下三种决策树算法. 文章目录 信息增益(ID3算法) 信息增益比率(C4.5算法) 基尼指数(CART算法) 数据: 信息增益(ID3算法) 信息熵表示信息的混乱程度 ...

  6. gini系数 决策树_SKlearn中分类决策树的重要参数详解

    classsklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samp ...

  7. python XGBoost分类器 和 基于树的特征选择 决策树法

    目录 绪论 1. 导入包和数据 2. 分割训练集和测试集 3. 不进行特征选择直接用xgb分类 3.1. xgb直接建模 3.2. 输出图片特征重要性 3.3. 模型评价 4. 进行特征选择后的分类 ...

  8. 机器学习中的特征选择——决策树模型预测泰坦尼克号乘客获救实例

    在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择.属性选择或变量子集选择.它是指:为了构建   模型而选择相关特征(即属性.指标)子集的过程.使用特征选择技术 ...

  9. 数据挖掘中的数据分类

    分类.决策树与模型评估 分类 决策树 分类算法 分类 分类就是通过学习一个目标函数F,把每个属性集x映射到一个预先定义好的类标号y上.目标函数也被称为分类模型. 建模分为两种目的,一种是描述性建模一种 ...

  10. 决策树系列3:信息增益、增益率、基尼系数 (史上最详尽)

    引言 上回说道,决策树最核心的部分是如何选择最优划分属性,今天我们看看经典的三种最优划分算法. 本次内容是决策树的核心,<大数据茶馆>力求做到通俗的前提下推导细致.循序渐进.全程举例,希望 ...

最新文章

  1. 1030 完美数列(二分解法)
  2. sql 中的导航函数 FIRST_VALUE, LAST_VALUE
  3. C语言sizeof运算符
  4. php session 效率,大量php session临时文件带来的服务器效率问题
  5. C++基础知识简答题
  6. Cassandra集群配置
  7. windows查看linux端口,Linux和Windows下查看端口详解
  8. Python 异常处理——处理默认错误类型以外错误
  9. php面试题之五——PHP综合应用(高级部分)
  10. 如何快速重置OUTLOOK2013,2016到初始配置状态,outlook 修改数据文件位置
  11. word 的脚注横线和文字怎么调整为左对齐?
  12. 【HANA系列】SAP HANA中null变成问号的问题
  13. B2B 网关软件 以新颖的模式 让企业步入新常态
  14. web前端面试题(必背面试题)
  15. 计算机基础知识刷题app,计算机考试刷题app
  16. Azkaban Flow 2.0的使用
  17. 基于 RSSHub 搭建 RSS 生成器(群晖 Docker)
  18. WIFI提示“已连接,但无法访问互联网”
  19. A Primer on Memory Consistency and Cache Coherence—第五章 Relaxed Memory Model
  20. 集合框架-Comparator和Comparable的区别

热门文章

  1. 去除微信顶部的“防欺诈盗号,请勿支付或输入qq密码”
  2. ZBrush:开启右键导航并关闭右键弹出菜单
  3. 车联网系统的组成概述
  4. virtuoso根据原理图绘制版图并联接_版图绘制及Virtuoso软件工具使用说明.ppt
  5. 使用Kali Linux进行ARP断网攻击
  6. python界面小程序
  7. Mysql修改数据目录(迁移到挂载盘-5.7版本)
  8. Elasticsearch基本查询关键字介绍
  9. 单片机机器人电机超声波
  10. 机器视觉(5)-realsense相机使用教程