什么是信息增益(Information Gain)?
当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以称之为“最大熵法”。最大熵法在数学形式上很漂亮,但是实现起来比较复杂,但把它运用于金融领域的诱惑也比较大,比如说决定股票涨落的因素可能有几十甚至上百种,而最大熵方法恰恰能找到一个同时满足成千上万种不同条件的模型。
这里我们先不讨论算法(这里用的是ID3/C4.5),把一棵决策树建立起来再说。我们要建立的决策树的形式类似于“如果天气怎么样,去玩;否则,怎么着怎么着”的树形分叉。那么问题是用哪个属性(即变量,如天气、温度、湿度和风力)最适合充当这颗树的根节点,在它上面没有其他节点,其他的属性都是它的后续节点。借用信息论的概念,我们用一个统计量,“信息增益”(Information Gain)来衡量一个属性区分以上数据样本的能力。信息增益量越大,这个属性作为一棵树的根节点就能使这棵树更简洁,比如说一棵树可以这么读成,如果风力弱,就去玩;风力强,再按天气、温度等分情况讨论,此时用风力作为这棵树的根节点就很有价值。如果说,风力弱,再又天气晴朗,就去玩;如果风力强,再又怎么怎么分情况讨论,这棵树相比就不够简洁了。计算信息增益的公式需要用到“熵”(Entropy)。名词越来越多,让我们通过手工计算记住它们的计算方法,把Excel打开:
1 计算熵
我们检查的属性是是否出去玩。用Excel对上面数据的play变量的各个取值排个序(这个工作簿里把“play”这个词去掉),一共是14条记录,你能数出取值为yes的记录有9个,取值为no的有5个,我们说这个样本里有9个正例,5 个负例,记为S(9+,5-),S是样本的意思(Sample)。这里熵记为Entropy(S),计算公式为:
Entropy(S)= -(9/14)*log(9/14)-(5/14)*log(5/14)
解释一下,9/14是正例的个数与总记录之比,同样5/14是负例占总记录的比例。log(.)是以2为底的对数(我们知道以e为底的对数称为自然对数,记为ln(.),lg(.)表示以10为底的对数)。在Excel里我们可以随便找一个空白的单元格,键入以下公式即得0.940:
=-(9/14)*LOG(9/14,2)-(5/14)*LOG(5/14,2)
这里LOG(9/14,2)中的“2”表示以2为底。类似地,如果你习惯用Matlab做数学运算本,公式为
-(9/14)*log2(9/14)-(5/14)*log2(5/14)
其中“2”的含义与上同。
总结:在这个例子中,我们的输出属性(我们要检查的属性)“play”只有两个取值,同样地,如果输出属性的取值大于2,公式是对成的,一样的形式,连加就是,找到各个取值的个数,求出各自的比例。如果样本具有二元输出属性,其熵的公式为
Entropy(S) =-(p+)*log(p+)-(p-)*log(p-)
其中,p+、p-分别为正例和负例占总记录的比例。输出属性取值大于2的情况,公式是对称的。
2 分别以Wind、Humidity、Outlook和Temperature作为根节点,计算其信息增益
可以数得,属性Wind中取值为Weak的记录有Normal的记录有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
现在就可以计算出相应的信息增益了:
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为根节点。子节点重复上面的步骤。这颗树可以是这样的,它读起来就跟你认为的那样
来源:(http://blog.sina.com.cn/s/blog_5fc375650100jgxg.html) - 什么是信息增益(Information Gain)?_郑来轶_新浪博客
分享到:
相关推荐
- 选择最佳属性:首先计算所有属性的信息增益,选取信息增益最大的属性作为当前节点的分裂属性。 - 构建子树:对每个属性值创建一个子节点,然后递归地对每个子节点应用相同的过程,直到所有实例属于同一类别或...
matlab版的信息增益算法实现
4. **计算信息增益比**:对于每个特征,计算其信息增益除以基尼指数,得到信息增益比。基尼指数是另一种衡量不纯度的指标,计算公式为 `1 - ∑(p_i^2)`。 5. **选择最佳特征**:选取信息增益比最大的特征作为当前...
该算法首先计算初始集合的熵,然后分别计算以各个属性为分裂属性时的熵,将通过上面得到的数据算出以各个属性为分裂属性时的信心增益,选择具有最大的信息增益属性作为我们的分裂属性。 四、算法实现 在上面的代码...
信息增益Java代码,具体的代码实现以及数据库的链接
信息增益(information gain IG) 过滤式特征选择算法
有两个文件夹, 一个是信息增益实现的决策树 一个是基尼指数实现的决策树 数据集采用了机器学习周志华书上的西瓜数据集 工具采用了matlab 分别实现了决策树的图形可视化
自己用Python3.6.1 写的基于信息增益的决策树,信息熵函数、信息增益函数、多数表决函数、产生决策树的函数写的都比较清楚,直接下载放在python环境中就能出结果,数据用的是周志华老师的《机器学习》的表4.3。
在机器学习中,信息增益是一种用于特征选择的常用技术。它可以帮助我们确定哪些特征对于分类任务是最有用的。在 Java 中实现信息增益的代码需要几个步骤。首先,我们需要导入必要的包和类。然后,我们需要定义数据集...
2. **信息增益(Information Gain)**:信息增益是父节点的熵与所有子节点熵的加权平均值之差,用于衡量选择某个特征后数据集纯度的提升。信息增益计算公式为:`IG(D, A) = H(D) - H(D|A)`,其中`H(D)`是原始数据集...
信息增益(Information Gain, IG)是数据挖掘和机器学习领域中一个重要的概念,尤其在特征选择和决策树构建过程中起到关键作用。本压缩包文件“ig.zip”包含与信息增益相关的代码实现,虽然其具体实现是基于数据库的...
针对人物关系抽取中的效率与准确性问题进行了研究,提出一种基于信息增益的轻量级Web人物社会关系提取方法。它通过计算初始关系元组的关系描述词的信息增益值进而确定元组上下文位置并据此创建相应的关系抽取模板,...
该资源主要讲述了决策树中熵值和信息增益的概念及其在节点选择中的应用。首先,熵值表示数据的混乱程度或纯度,熵值降低意味着数据纯度提高,分类效果增强。接着,引入信息增益概念,即原始熵值与划分后熵值的差,...
这个算法主要基于信息熵和信息增益的概念来选择最优属性进行划分。下面将详细阐述ID3算法的原理、信息熵与信息增益计算及其在决策树中的应用。 1. ID3算法概述: ID3算法是一种基于离散特征的决策树学习算法。它...
3. **信息增益率计算**:如何计算信息增益率,以及为什么需要使用信息增益率而不是简单地使用信息增益。 4. **应用实例**:通过电信设备数据集,展示如何实施基于信息增益率的特征选择步骤,包括数据预处理、计算...