信息熵

信息熵 (information entropy)是度量样本集合纯度最常用的一种指标。假定当前样本集合 中的第 类样本所占的比例为 (k = 1,2...), 则 D 的信息熵为

Ent(D) 的值越小,则D的纯度越高 .

  • 计算信息熵时约定 : 如果 p = 0,则  = 0
  • Ent(D)的最小值是0,最大值是
  • |X| 表示X的数量,比如表示样本D的数量,下同.

假定随机变量X有两个取值0和1

X 0 1
p(x) p 1-p

则图像是,

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns x = np.arange(0,1,0.01)
y = -x*np.log2(x) -(1-x)*np.log2(1-x) sns.set()
plt.grid(visible=True, which='major', linestyle='-')
plt.grid(visible=True, which='minor', linestyle='--', alpha=0.5)
plt.minorticks_on()
plt.xlabel('x')
plt.ylabel('H(x)')
plt.plot(x,y)
# plt.show()
plt.savefig('./h.png')

条件熵

概率定义: 随机变量X在给定条件下随机变量Y的条件熵,公式如下,

或者换一种符号表示,

假定离散属性 a(西瓜的色泽)有V 个可能的取值{} (比如 {青绿,乌黑,浅白,墨绿 ..  })等等吧  ,如果使用a 来对样本集D(西瓜) 进行划分 ,则会产生 V 个分支节点,其中第v 个分支节点包含了D 中所有在属性a上的取值为 的样本 ,记作 .

信息增益

根据信息熵的计算公式, 我们可以计算出的信息熵 ,再考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重 ,也就是样本数越多的分支节点影响越大,于是可以计算出用 a 属性对样本D进行划分所获得的"信息增益"(information gain)

代入,

一般来说, 信息增益越大,则意味着使用属性a进行划分所获得的"纯度提升"越大  .因此可以用信息增益来进行决策树的划分属性选择.

下面以西瓜数据集为例, 该数据集包含17个样本,用以学习一棵能预测没刨开的是不是好瓜的决策树. 显然   , 下图中可以看到,正例 占 8/17 , 反例占 9/17,

然后我们计算出当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感} 中每个属性的信息增益. 以属性"色泽" 为例 ,它有两个可能的取值 :{青绿,乌黑,浅白} .使用该属性对D进行划分, 则可得到 3个 子集 ,分别记为 D1 (色泽=青绿) D2(色泽=乌黑) D3(色泽=浅白).

子集D1 包含的编号{1,4,6,10,13,17} , 正例(是)占 p1 = 3/6 ,反例(否) 占 p2 = 3/6  ;

子集D2 包含的编号 {2,3,7,8,9,15} , 正例占 p1 = 4/6 , 反例占 p2 = 2/6 ;

子集D3 包含的编号 {5,11,12,14,16} ,正例占p1 =  1/5 , 反例占p2 =  4/5 ;

可计算出"色泽"划分之后所获得的信息熵为:

于是 , 计算出属性 " 色泽"的信息增益为 :

显然这里 Gain(D,纹理) = 0.381 信息增益最大, 于是他被选为划分属性.

然后,决策树学习算法将每一个分支节点做进一步划分. 以图中的一个分支节点("纹理= 清晰") 为例, 该节点包含的样例集合  中有编号 {1,2,3,4,5,8,10,15} 的9 个样例,可用的属性集合为 { 色泽,根蒂,敲声,脐部,触感}; 基于 计算出各属性的信息增益:

"根蒂" , "脐部" , "触感" 3 个属性均取得最大的信息增益 ,可用选择其中一个作为划分属性, 最终得到:

增益率

事实上用信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,我们会使用 "增益率" ,来选择最优划分属性  , 增益率定义为 :

其中

称为属性 a 的"固有值" ,属性a 取值数目越多(V越大) ,则 IV(a) 的值通常越大, 需要注意的是增益率准则对可取值数目较少的属性有所偏好,信息增益对可取值数目多的属性有所偏好, 折中一下就是先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的.

摘自 : 西瓜书

参考 : [机器学习]信息&熵&信息增益 - 风痕影默 - 博客园

信息增益以及增益率划分属性相关推荐

  1. 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5

    推荐阅读:纯度:信息熵:信息增益 关键词: 纯度:信息熵:信息增益:增益率:ID3:C4.5:基尼指数:预剪枝:后剪枝 4.1基本流程 关键词:决策树(decision tree) 决策树是一种分类方 ...

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

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

  3. 【数据挖掘】决策树 分类 ( 抽取分类规则 | 过拟合 | 剪枝 | 先剪 | 后剪 | 连续数值离散化 | 最优化分点 | 增益率选择划分属性 )

    文章目录 I . 决策树 分类规则抽取 II . 决策树 过拟合 与 剪枝 III . 决策树 剪枝 先剪 与 后剪 对比 IV . 连续属性 离散化处理 ( 二分法 | 最优划分点 ) V . 根据 ...

  4. 决策树(信息熵、增益率、基尼指数)

    目录 前言 一.决策树是什么? 二.实验过程 1.选择数据集中各个决策属性的优先级 1.1信息熵 1.2增益率 1.3基尼指数 2.决策树的构造 2.1创建决策树: 2.2准备数据: 2.3.读取和保 ...

  5. 增益和增益率,计算代码

    决策树中的属性评价指标 1.信息增益(information gain) 2.增益率(gain ratio) 的代码计算(C++)(python) C++: #include <iostream ...

  6. 决策树——信息熵,熵增益率,基尼系数的计算说明

    决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于 ...

  7. C4.5决策树生成算法完整版(Python),连续属性的离散化, 缺失样本的添加权重处理, 算法缺陷的修正, 代码等

    C4.5决策树生成算法完整版(Python) 转载请注明出处:©️ Sylvan Ding ID3算法实验 决策树从一组无次序.无规则的事例中推理出决策树表示的分类规则,采用自顶向下的递归方式,在决策 ...

  8. 决策树-缺失值和连续值处理及属性划分

    决策树是一个树结构(可以是二叉树或非二叉树),其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个输出类别.使用决策树进行决策的过程就是从根节点开始 ...

  9. 决策树-特征属性选择划分

    决策树是一个树结构(可以是二叉树或非二叉树),其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个输出类别.使用决策树进行决策的过程就是从根节点开始 ...

最新文章

  1. Android判断应用是否拥有某种权限
  2. golang 检查ip地址格式 是否正确
  3. 【题解】弃疗Nim (2019,5.23)
  4. 真实AIS数据,解码,可视化
  5. Java集合之LinkedHashMap源码分析
  6. mongodb mysql json数据类型_mongodb 数据格式补充
  7. 列表推导式 python原理_python之列表推导式
  8. 超60万人抢购!魅族这波营销火了
  9. Centos7.6 编译安装heartbeat,及遇到的问题。
  10. 【Anaconda安装包】如何在Ananconda环境下安装CV2(opencv)
  11. python打不开text_python-无法启动并使用TextBlob运行
  12. 视觉SLAM算法框架解析(3) SVO
  13. 经典 55道 MySQL面试题及答案
  14. seo伪原创/百度链接推送/原创检测工具,python超简单POST案例
  15. 百度地图 创建应用
  16. Java实现按分数排名,同分同名次
  17. 【C++】多态之组合与聚合
  18. 分享两个视频转场作品
  19. Windows BitLocker驱动器加密
  20. 跨境电商亚马逊运营的五大小技巧你都知道哪些

热门文章

  1. 从唱歌到作诗书法,腾讯AI Lab虚拟人艾灵技能再进化
  2. Use Beamer
  3. whatsapp协议api接口
  4. 用 ZEGO Avatar 做一个虚拟人|虚拟主播直播解决方案
  5. 中断和异常 in 操作系统【操作系统学习笔记】
  6. 微信互动大屏 霸屏 抢红包 源码及所需技术
  7. 高防服务器的优点是什么?
  8. oracle OMF
  9. Jeesite中部署定时任务,定时任务tomcat部署详细,定时任务在spring项目中部署
  10. 【微服务学习笔记】一、认识微服务及微服务组件