信息熵 增益

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为根节点。子节点重复上面的步骤。

时间: 2024-07-31 02:19:30

信息熵 增益的相关文章

【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 决策书算法是一种逼近离散数值的分类算法,思路比較简单,并且准确率较高.国际权威的学术组织,数据挖掘国际会议ICDM (the IEEE International Conference on Data Mining)在2006年12月评选出了数据挖掘领域的十大经典算法中,C4.5算法排名第一.C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. 算法的主要思想就是将数据集依照特

机器学习实战笔记3(决策树)

决策树的优势就在于数据形式非常容易理解,而kNN的最大缺点就是无法给出数据的内在含义. 1:简单概念描述 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定义主要针对ID3算法.下面我们介绍信息熵的定义. 事件ai发生的概率用p(ai)来表示,而-log2(p(ai))表示为事件ai的不确定程度,称为ai的自信息量,sum(p(ai)*I(ai))称为信源S的平均信

【机器学习笔记之二】决策树的python实现

本文结构: 是什么? 有什么算法? 数学原理? 编码实现算法? 1. 是什么? 简单地理解,就是根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为几类,再继续提问.这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上. 2. 有什么算法? 常用的几种决策树算法有ID3.C4.5.CART: ID3:选择信息熵增益最大的feature作为node,实现对数据的归纳分类.C4.5:是ID3的一个改进,比ID3准确率高且快,

用Python开始机器学习(2:决策树分类算法)

http://blog.csdn.net/lsldd/article/details/41223147 从这一章开始进入正式的算法学习. 首先我们学习经典而有效的分类算法:决策树分类算法. 1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题.因此如何构建一棵好的决策树是研究的重点. J. Ross Q

【Python】决策树的python实现

[Python]决策树的python实现 2016-12-08 数据分析师Nieson 1. 决策树是什么? 简单地理解,就是根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为几类,再继续提问.这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上. 2. 决策树有什么算法? 常用的几种决策树算法有ID3.C4.5.CART: ID3:选择信息熵增益最大的feature作为node,实现对数据的归纳分类. C4.5:是I

云端大数据实战记录-大数据推荐

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 这是博主第一次大数据实战的经历,之前都是自己写一些算法然后测试很小的数量级.这次是真正接触到TB集的数据,而且完全是在云端处理.下面就把这次的经历简单分享一下. 首先简单介绍一下这次比赛的环境吧: 1.云:采用的是阿里云 2.数据:从四月十五号到八月十五号期间,用户两千多万的购买行为(包括时间,购买.收藏.购物车的次数) 3.工具:阿里提供的xlab(里面有很多算法,随机森林.逻辑回归.knn等).

机器学习入门指引<一>

机器学习,作为门时髦.热门的计算机应用技术,特别是随着深度学习的流行,推动"大数据+深度模型"的模式,为人工智能和人机交互的发展提供巨大的空间. 和数据挖掘一样,利用大量的数据分析建立有效的模型以便提供分类或者决策支持,机器学习也是利用经典的算法(聚类,SVM,神经网络,深度学习等)建立数据模型,不同的是机器学习偏向于算法的设计:更直接的说,机器学习,就是一些建立模型进行数据分析的算法包. 作为典型的机器学习的方法,人工神经网络模型的应用经典而又广泛.NN(neural network

【机器学习算法-python实现】决策树-Decision tree(2) 决策树的实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 接着上一节说,没看到请先看一下上一节关于数据集的划分数据集划分.如今我们得到了每一个特征值得信息熵增益,我们依照信息熵增益的从大到校的顺序,安排排列为二叉树的节点.数据集和二叉树的图见下. (二叉树的图是用python的matplotlib库画出来的) 数据集: 决策树: 2.代码实现部分 由于上一节,我们通过chooseBestFeatureToSplit函数已经能够确定当前数据集中的信息熵最大的

云大数据实战记录-大数据推荐

前言 WHY 云:为什么我们须要云.大数据时代我们面对两个问题,一个是大数据的存储.一个是大数据的计算. 由于数据量过大,在单个终端上运行效率过差,所以人们用云来解决这两个问题. WHAT IS 云:云得益于分布式计算的思想.举个简单的样例.运行一千万个数据每一个数据都乘以10并输出,在个人pc上须要大概20分钟.假设是100台电脑做这个工作.可能仅仅用几十秒就能够完毕.云就是我们将复杂的工作通过一定的算法分配给云端的n个server,这样能够大大提高运算效率. How 云:云的实现也就是分步式