信息熵,信息增益,增益率的理解

西瓜数据集D如下:

编号色泽根蒂敲声纹理脐部触感好瓜
1青绿蜷缩浊响清晰凹陷硬滑
2乌黑蜷缩沉闷清晰凹陷硬滑
3乌黑蜷缩浊响清晰凹陷硬滑
4青绿蜷缩沉闷清晰凹陷硬滑
5浅白蜷缩浊响清晰凹陷硬滑
6青绿稍蜷浊响清晰稍凹软粘
7乌黑稍蜷浊响稍糊稍凹软粘
8乌黑稍蜷浊响清晰稍凹硬滑
9乌黑稍蜷沉闷稍糊稍凹硬滑
10青绿硬挺清脆清晰平坦软粘
11浅白硬挺清脆模糊平坦硬滑
12浅白蜷缩浊响模糊平坦软粘
13青绿稍蜷浊响稍糊凹陷硬滑
14浅白稍蜷沉闷稍糊凹陷硬滑
15乌黑稍蜷浊响清晰稍凹软粘
16浅白蜷缩浊响模糊平坦硬滑
17青绿蜷缩沉闷稍糊稍凹硬滑

信息熵: 描述信息的混乱程度,越接近1越混乱(纯度越低),0则不混乱(纯度越高)

  • 信息熵是描述集合D的混乱程度(纯度)的值
  1. 以西瓜数据集为例,前7列(包含编号列)均为属性列,不是划分类别的指标,此例上一个瓜是否为好瓜是判断类别的唯一标准,则按照好瓜(是),好瓜(否)分为2类,即二分类问题
  2. 故D的信息熵仅由最后一列(好瓜)进行计算
  3. 简单看来:
  • 好瓜的比例:(记为P(好瓜));
  • 坏瓜的比例:(记为P(坏瓜)),
  • 进行一次对比,最混乱情况也就是各一半,纯度最高情况则全部是好瓜/坏瓜.
  1. 如出现多个类别,则每个类别占比相同时最混乱,只有一个类别数据时纯度最高
  2. 举例说明
    • (例1) 情况1.2的纯度大于情况1.1
      ( 情况 1.1 ) : P 好瓜 = 1 2 , P 坏瓜 = 1 2 (情况1.1):P_{ 好瓜} = \frac12,P_{坏瓜} = \frac12 (情况1.1):P好瓜=21,P坏瓜=21
      ( 情况 1.2 ) : P 好瓜 = 1 10 , P 坏瓜 = 9 10 (情况1.2):P_{ 好瓜} = \frac1{10},P_{坏瓜} = \frac9{10} (情况1.2):P好瓜=101,P坏瓜=109
    • (例2) 情况2.2的纯度大于情况2.1
      ( 情况 2.1 ) : P 好瓜 = 2 10 , P 坏瓜 = 8 10 (情况2.1):P_{ 好瓜} = \frac2{10},P_{坏瓜} = \frac8{10} (情况2.1):P好瓜=102,P坏瓜=108
      ( 情况 2.2 ) : P 好瓜 = 1 10 , P 坏瓜 = 9 10 (情况2.2):P_{ 好瓜} = \frac1{10},P_{坏瓜} = \frac9{10} (情况2.2):P好瓜=101,P坏瓜=109
    • 这样看来,在二分类问题中,取每个情况取最大的pk,比较大小,越大的纯度越高即可
    • 但是三分类问题就会有点问题
    • (例3) 情况3.2的纯度大于情况3.1
      ( 情况 3.1 ) : P 1 = 6 10 , P 2 = 2 10 , P 3 = 2 10 (情况3.1):P_1 = \frac6{10},P_2 = \frac2{10},P_3 = \frac2{10} (情况3.1):P1=106,P2=102,P3=102
      ( 情况 3.2 ) : P 1 = 6 10 , P 2 = 3 10 , P 3 = 1 10 (情况3.2):P_1 = \frac6{10},P_2 = \frac3{10},P_3 = \frac1{10} (情况3.2):P1=106,P2=103,P3=101
  3. 在例3的情况下,仅仅比较最大值6/10都是一样的,那么就需要比较第二大的值,3/10>2/10,故3.2的纯度大于情况3.1
  4. 由此可见,比较两个样本D信息熵的方法有了
  5. 但是不太方便,如果要用一个值来量化纯度(混乱程度),思路很清晰,同一个情况(一个集合D)中的分类占比越大,则对纯度程度的贡献就越大.即在(情况3.2)中 6/10的纯度意义 > 3/10 > 1/10
  6. 使用log函数可以实现8提到的要求.pk值越小,则log(pk)会更小.选用以2为底的对数函数,故当前样本集合D中第k类样本所占比例为pk(k=1,2,3,…,|y|),则D的信息熵为:
    E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D) = -\sum\limits _{k=1}^{|y|}p_klog_2p_k Ent(D)=k=1ypklog2pk

信息增益: 使用某个属性a对样本集D进行划分所能获得的纯度提升程度

  1. 计算信息增益的目的,是选出一个属性,可以最大的划分数据
  2. 则:
    信息增益 = 混乱程度 − 使用 a 进行划分后的混乱程度 信息增益 = 混乱程度 - 使用a进行划分后的混乱程度 信息增益=混乱程度使用a进行划分后的混乱程度
  3. 则:
    使用 a 进行划分后的混乱程度 = 即每个子集的混乱程度乘以各自的权重之和 使用a进行划分后的混乱程度 = 即每个子集的混乱程度乘以各自的权重之和 使用a进行划分后的混乱程度=即每个子集的混乱程度乘以各自的权重之和
  4. 又混乱程度可以使用信息熵Ent(D)进行计算
  5. 则可以推导,计算公式为:
    G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a) = Ent(D) - \sum\limits _{v=1}^V \frac{|Dv|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)
  • 注:
    ∣ D ∣ 即表示集合 D 中的元素个数 |D| 即表示集合D中的元素个数 D即表示集合D中的元素个数

以西瓜数据集举例说明

  • D包含若干属性,若使用某个属性a(即样本中的某列,例如色泽)对D进行划分,将D划分为多个子集
  • 以西瓜数据为例,如使用属性色泽进行划分,则一共有3个属性值,则将全部数据划分为3个子集,即:
    D 按照色泽划分 = D 青绿 ∪ D 乌黑 ∪ D 浅白 D_{按照色泽划分} = D_{青绿} \cup D_{乌黑} \cup D_{浅白} D按照色泽划分=D青绿D乌黑D浅白
  • 故a在D上的信息增益为:
    G a i n ( D , 色泽 ) = E n t ( D ) − ( ∣ D 青绿 ∣ ∣ D ∣ E n t ( D 青绿 ) + ∣ D 青绿 ∣ ∣ D ∣ E n t ( D 乌黑 ) ∣ D 浅白 ∣ ∣ D ∣ E n t ( D 浅白 ) ) Gain(D,{色泽}) = Ent(D) - (\frac{|D_{青绿}|}{|D|}Ent(D_{青绿}) +\frac{|D_{青绿}|}{|D|}Ent(D_{乌黑}) \frac{|D_{浅白}|}{|D|}Ent(D_{浅白}) ) Gain(D,色泽)=Ent(D)(DD青绿Ent(D青绿)+DD青绿Ent(D乌黑)DD浅白Ent(D浅白))
  • 可以看出,属性(色泽)对样本集D进行划分所能获得的纯度提升程度即为:Gain(D,色泽). 如每次都选择提升程度最大的一个,则决策树的分支越少.

增益率:排除子集数量对信息增益的影响

  1. 上文中求信息增益中,我们是忽略掉编号这一列的,因为按照编号属性进行计算信息增益,会划分17个子集,每个子集的信息熵Ent均为0,则信息增益Gain就是D的信息熵Ent
    G a i n ( D , 编号 ) = E n t ( D ) − ( 0 + 0 + . . . . + 0 ) = E n t ( D ) = 0.998 Gain(D,{编号}) = Ent(D) - (0 + 0 + .... +0) = Ent(D) = 0.998 Gain(D,编号)=Ent(D)(0+0+....+0)=Ent(D)=0.998
  2. 显然,这个信息增益非常高,单却是没有意义的,按照编号建立决策树,将会建立一个一层17分支的决策树.
  3. 故,我们需要找到一个方法,解决信息增益对数数目校多的属性偏好这一个问题
  4. 如使用Gain直接除V的数量(V是D按照属性a分组的所有子集,即D的子集数量),好像可以处理掉数目较多属性偏好的这个问题
    G a i n ( D , 编号 ) V = 0.998 17 = 0.058 \frac {Gain(D,{编号})}{V} = \frac{0.998}{17} = 0.058 VGain(D,编号)=170.998=0.058
  5. 但是更适合的方法是除以IV(a),称为属性a的’固有值’(Intrinsic Value,IV),也称’ 分离信息 ’ (Split information):算法如下:
    I V ( D , a ) = S p l i t I n f o r m a t i o n ( D , a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(D,a) =SplitInformation(D,a) = -\sum\limits _{v=1}^{V}\frac {|D^v|}{|D|}log_2\frac{|D^v|}{|D|} IV(D,a)=SplitInformation(D,a)=v=1VDDvlog2DDv
  6. 故增益率定义为
    G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( D , a ) Gain\_ratio(D,a) = \frac{Gain(D,a)}{IV(D,a)} Gain_ratio(D,a)=IV(D,a)Gain(D,a)
  7. 但是会带来一个新的问题,这个增益率会对数目较少的属性,有更强的偏好.(正好与信息增益的偏好相反)
    8.故C4.5决策树算法,不是直接取增益率最高的属性,而是使用了一个启发式: 从候选划分属性中选出信息增益大于平均水平的属性,再选增益率最高的.

如有错误,敬请指正!

代码部分请参考:决策树代码实例(全部代码,包含绘图,ID.3算法,西瓜书示例)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/44183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)效果一览基…

aardio窗体缩放自动匹配批量生成plus实例

import win.ui; /*DSG{{*/ var winform win.form(text"窗体缩放批量生成plus";right759;bottom469;bgcolor15780518) winform.add( custom{cls"custom";text"自定义控件";left3;top6;right753;bottom460;ah1;aw1;bgcolor15780518;z1} ) /*}}*//…

UML基础模型

目录 1.抽象类2.接口3.继承4.实现接口5.关联关系6.聚合关系7.合成(组合)关系8.依赖关系 1.抽象类 矩形框代表一个类(Class)。 类图分为三层: 第一层显示类的名称,如果是抽象类,就用斜体显示&am…

操作系统的体系结构、内核、虚拟机

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 操作系统结构 一、操作系统体系结构1.1操作系统的内核1.1.…

TiDB 多集群告警监控-中章-融合多集群 Grafana

作者: longzhuquan 原文来源: https://tidb.net/blog/ac730b0f 背景 随着公司XC改造步伐的前进,越来越多的业务选择 TiDB,由于各个业务之间需要物理隔离,避免不了的 TiDB 集群数量越来越多。虽然每套 TiDB 集群均有…

Educational Codeforces Round 2

目录 A. Extract Numbers B. Queries about less or equal elements C. Make Palindrome E. Lomsat gelral A. Extract Numbers 题意:太多不想翻译 思路:字符串模拟,我们使用一个临时变量t去储存每个符号直接的字符串,同时需…

0.flink学习资料

论文: (1)google dataflow model 下载链接:p1792-Akidau.pdf (vldb.org) Akidau T, Bradshaw R, Chambers C, et al. The dataflow model: a practical approach to balancing correctness, latency, and cost in massive-scal…

Gateway网关路由以及predicates用法(项目中使用场景)

1.Gatewaynacos整合微服务 服务注册在nacos上,通过Gateway路由网关配置统一路由访问 这里主要通过yml方式说明: route: config: #type:database nacos yml data-type: yml group: DEFAULT_GROUP data-id: jeecg-gateway-router 配置路由:…

【c++】c++的一些技术操作

pthread_create 的第三个参数,为函数指针,指向处理线程函数的地址。该函数,要求为静态函数。如果处理线程函数为类成员函数时,需要将其设置为静态成员函数。C静态成员函数访问非静态成员 https://blog.csdn.net/yueguangmuyu/arti…

Linux网络编程_Ubuntu环境配置安装

文章目录: 一:基于vmware虚拟机安装Ubuntu系统(虚拟机) 1.vmware下载 2.Ubuntu系统下载 3.配置 3.1 无法连网:这里很容易出现问题 3.2 更换国内源 3.3 无法屏幕适配全屏 3.4 汉化 二:直接安装Ubun…

宁德时代与陕汽签署十年战略合作协议,助力商用车电动化进程

据报道,宁德时代新能源科技股份有限公司与陕西汽车控股集团有限公司已经签署了一项为期十年的战略合作协议。双方的合作旨在推动商用车电池技术的发展,并面向商用车全领域应用。 这次战略合作具有重要意义,为宁德时代和陕汽启动了全面合作的序…

2021年3月全国计算机等级考试真题(C语言二级)

2021年3月全国计算机等级考试真题(C语言二级) 第1题 算法空间复杂度的度量方法是() A. 算法程序的长度 B. 算法所处理的数据量 C. 执行算法所需要的工作单元 D. 执行算法所需要的存储空间 正确答案:D 第2题 下列叙…

现代CSS中的换行布局技术

在现代网页设计中,为了适应不同屏幕尺寸和设备类型,换行布局是一项重要的技术。通过合适的布局技术,我们可以实现内容的自适应和优雅的排版。本文将介绍CSS中几种常见的换行布局技术,探索它们的属性、代码示例和解析,帮…

可视化绘图技巧100篇基础篇(三)-条形图(二)

目录 前言 描绘条形图的要素 绘图工具及代码 Tableau 一、基本条形图 1.普通条形图

【自创】关于前端js的“嵌套地狱”的遍历算法

欢迎大家关注我的CSDN账号 欢迎大家关注我的哔哩哔哩账号:卢淼儿的个人空间-卢淼儿个人主页-哔哩哔哩视频 此saas系统我会在9月2号之前,在csdn及哔哩哔哩上发布成套系列教学视频。敬请期待!!! 首先看图 这是我们要解…

PHP中in_array()函数用法详解

in_array() 函数是PHP中常用的数组函数之一,用于搜索数组中是否存在指定的值。 语法 bool in_array ( mixed $needle , array $haystack [, bool $strict FALSE ] ) 参数描述needle必需。规定要在数组搜索的值。haystack必需。规定要搜索的数组。strict可选。如…

Spring Boot 知识集锦之Spring-Batch批处理组件详解

文章目录 0.前言1.参考文档2.基础介绍2.1. 核心组件 3.步骤3.1. 引入依赖3.2. 配置文件3.3. 核心源码 4.示例项目5.总结 0.前言 背景: 一直零散的使用着Spring Boot 的各种组件和特性,从未系统性的学习和总结,本次借着这个机会搞一波。共同学…

无涯教程-TensorFlow - TensorBoard可视化

TensorFlow包含一个可视化工具,称为TensorBoard,它用于分析数据流图,还用于了解机器学习模型。 TensorBoard的重要功能包括查看有关垂直对齐的任何图形的参数和详细信息的不同类型统计的视图。 深度神经网络包括多达36,000个节点…

HCIP——VLAN实验2

一.实验要求 1.PC1/3的接口均为access模式,且属于van2,在同一网段 2.PC2/4/5/6的IP地址在同一网段,与PC1/3不在同一网段 3.PC2可以访问4/5/6,PC4不能访问5/6,PC5不能访问PC6 4.所有PC通过DHCP获取ip地址,PC…

《合成孔径雷达成像算法与实现》Figure3.10

代码复现如下: clc clear close all% 参数设置 TBP 100; % 时间带宽积 T 7.2e-6; % 脉冲持续时间 t_0 1e-6; % 脉冲回波时延% 参数计算 B TBP/T; …