信息增益,经验熵和经验条件熵——决策树

目录

1.经验熵

2.经验条件熵

3.信息增益

4.增益比率

5.例子1

6.例子2


在决策树模型中,我们会考虑应该选择哪一个特征作为根节点最好,这里就用到了信息增益

通俗上讲,信息增益就是在做出判断时,该信息对你影响程度的大小。比如你今天考虑要不要去郊游,你会考虑天气,距离,心情,是否空闲等等因素,非常纠结,但是如果信息中的天气显示今天暴雨,那大概率就不郊游了,那这个因素的信息增益就很强。

1.经验熵

 Info(D)=-Σi=1...n(pilog2pi)

  比如我们将一个立方体A抛向空中,记落地时着地的面为f1,f1的取值为{1,2,3,4,5,6},f1的熵entropy(f1)=-(1/6*log(1/6)+...+1/6*log(1/6))=-1*log(1/6)=2.58

  • 信息熵描述随机变量的不确定性。
  • 信息熵越小,信息的纯度越高,信息量就越少。
  • 信息熵越大,信息的纯度越小,信息量就越多。

2.经验条件熵

        在某一条件下,随机变量的不确定性。假设我们选择属性R作为分裂属性,数据集D中,R有k个不同的取值{V1,V2,...,Vk},于是可将D根据R的值分成k组{D1,D2,...,Dk},按R进行分裂后,将数据集D不同的类分开还需要的信息量为:

  InfoR(D)=Σi=1...k(Di/D)Info(Di)

3.信息增益

        在某一条件下,随机变量不确定性减少的程度。换句话说,信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。那么我们现在也很好理解了,在决策树算法中,我们的关键就是每次选择一个特征,特征有多个,那么到底按照什么标准来选择哪一个特征。这个问题就可以用信息增益来度量。如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。

分裂前后,两个信息量只差:

  Gain(R)=Info(D)-InfoR(D)

4.增益比率

  信息增益选择方法有一个很大的缺陷,它总是会倾向于选择属性值多的属性,如果我们在上面的数据记录中加一个姓名属性,假设14条记录中的每个人姓名不同,那么信息增益就会选择姓名作为最佳属性,因为按姓名分裂后,每个组只包含一条记录,而每个记录只属于一类(要么购买电脑要么不购买,信息量计算为1/14(-1/1log1/1-0/1log0/1)*14=0,信息增益最大),因此纯度最高,以姓名作为测试分裂的结点下面有14个分支。但是这样的分类没有意义,它没有任何泛化能力。增益比率对此进行了改进,它引入一个分裂信息:

  SplitInfoR(D)=-Σi=1...n(Di/D)log2(Di/D)

  增益比率定义为信息增益与分裂信息的比率:

  GainRatio(R)=Gain(R)/SplitInfoR(D)

  我们找GainRatio最大的属性作为最佳分裂属性。如果一个属性的取值很多,那么SplitInfoR(D)会大,从而使GainRatio(R)变小。

  不过增益比率也有缺点,SplitInfo(D)可能取0,此时没有计算意义;且当SplitInfo(D)趋向于0时,GainRatio(R)的值变得不可信,改进的措施就是在分母加一个平滑,这里加一个所有分裂信息的平均值:

  GainRatio(R)=Gain(R)/(SplitInfo(D)+SplitInfoR(D))

5.例子1

对于上述信息,可以求得随机变量X(嫁与不嫁)的信息熵为:
嫁的个数为6个,占1/2,那么信息熵为-1/2log1/2-1/2log1/2 = -log1/2=0.301
现在假如我知道了一个男生的身高信息。
身高有三个可能的取值{矮,中,高}

矮包括{1,2,3,5,6,11,12},嫁的个数为1个,不嫁的个数为6个
中包括{8,9} ,嫁的个数为2个,不嫁的个数为0个
高包括{4,7,10},嫁的个数为3个,不嫁的个数为0个

先回忆一下条件熵的公式如下:


我们先求出公式对应的:

H(Y|X = 矮) = -1/7log1/7-6/7log6/7=0.178
H(Y|X=中) = -1log1-0 = 0
H(Y|X=高) = -1log1-0=0
p(X = 矮) = 7/12,p(X =中) = 2/12,p(X=高) = 3/12

则可以得出条件熵为:7/120.178+2/120+3/12*0 = 0.103

那么我们知道信息熵与条件熵相减就是我们的信息增益,为0.301-0.103=0.198

所以我们可以得出我们在知道了身高这个信息之后,信息增益是0.198

我们可以知道,本来如果我对一个男生什么都不知道的话,作为他的女朋友决定是否嫁给他的不确定性有0.301这么大。

当我们知道男朋友的身高信息后,不确定度减少了0.198.也就是说,身高这个特征对于我们广大女生同学来说,决定嫁不嫁给自己的男朋友是很重要的。

至少我们知道了身高特征后,我们原来没有底的心里(0.301)已经明朗一半多了,减少0.198了(大于原来的一半了)。

那么这就类似于非诚勿扰节目里面的桥段了,请问女嘉宾,你只能知道男生的一个特征。请问你想知道哪个特征。

假如其它特征我也全算了,信息增益是身高这个特征最大。那么我就可以说,我想知道男嘉宾的一个特征是身高特征。因为它在这些特征中,信息增益是最大的,知道了这个特征,嫁与不嫁的不确定度减少的是最多的。

来源:信息增益到底怎么理解呢?_南湖渔歌的博客-CSDN博客 

6.例子2

记录ID年龄收入层次学生信用等级是否购买电脑
1青少年一般
2青少年良好
3中年一般
4老年一般
5老年一般
6老年良好
7中年良好
8青少年一般
9青少年一般
10老年一般
11青少年良好
12中年良好
13中年一般
14老年良好

1:计算Info(D)

  Info(D)=-Σi=1...n(pilogpi)=-(5/14)log(5/14)-(9/14)log(9/14)=-0.3571*(-1.4856)-0.6429*(-0.6373)=0.1597+0.1234=0.5305+0.4097=0.9402

2:计算InfoR(D)

  Info年龄(D)=(5/14)Info(D老年)+(4/14)Info(D中年)+(5/14)Info(D青少年)=(5/14)(-(3/5)log(3/5)-(2/5)log(2/5))+(4/14)(-(4/4)log(4/4)-(0/4)log(0/4))+(5/14)(-(2/5)log(2/5)-(3/5)log(3/5))

        =(5/14)(0.6*0.737+0.4*1.3219)+(4/14)(0+0)+(5/14)(0.4*1.3219+0.6*0.737)

        =(5/14)(0.4422+0.52876)+0+(5/14)(0.52876+0.4422)

        =0.3571*0.97096+0+0.3571*0.97096

        =0.694

  同样可以计算出

  Info收入层次(D)=0.911

  Info学生(D)=0.789

  Info信用等级(D)=0.892

3:计算信息增益:

  Gain(年龄)=Info(D)-Info年龄(D)=0.940-0.694=0.246

  Gain(收入层次)=Info(D)-Info收入层次(D)=0.940-0.911=0.029

  Gain(学生)=Info(D)-Info学生(D)=0.940-0.789=0.151

  Gain(信用等级)=Info(D)-Info信用等级(D)=0.940-0.892=0.058

4:计算分裂信息:

  SplitInfo年龄(D)=-5/14log(5/14)-4/14log(4/14)-5/14log(5/14)=0.3571*1.4856+0.2857*1.8074+0.3571*1.4856=0.5305+0.5164+0.5305=1.5774

  SplitInfo收入层次(D)=-4/14log(4/14)-6/14log(6/14)-4/14log(4/14)=0.2857*1.8074+0.4286*1.2223+0.2857*1.8074=0.5164+0.5139+0.5164=1.5467

  SplitInfo学生(D)=-7/14log7/14-7/14log7/14=1

  SplitInfo信用等级(D)=-6/14log(6/14)-8/14log(8/14)=0.4286*1.2223+0.5714*0.8074=0.5239+0.4613=0.9852

  SplitInfo(D)=(SplitInfo年龄(D)+SplitInfo收入层次(D)+SplitInfo学生(D)+SplitInfo信用等级(D))/4=1.2773

5:计算增益比率:

  GainRatio(年龄)=Gain(年龄)/(SplitInfo(D)+SplitInfo年龄(D))=0.246/(1.2773+1.5774)=0.0862

  GainRatio(收入层次)=Gain(收入层次)/(SplitInfo(D)+SplitInfo收入层次(D))=0.029/(1.2773+1.5467)=0.0103

  GainRatio(学生)=Gain(学生)/(SplitInfo(D)+SplitInfo学生(D))=0.151/(1.2773+1)=0.0663

  GainRatio(信用等级)=Gain(信用等级)/(SplitInfo(D)+SplitInfo信用等级(D))=0.058/(1.2773+0.9852)=0.0256

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

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

相关文章

抖音seo源代码开源部署----基于开放平台SaaS服务

抖音SEO搜索是什么? 抖音SEO搜索是指在抖音平台上进行搜索引擎优化(Search Engine Optimization)的一种技术手段。 通过优化抖音账号、发布内容和关键词等,提高抖音视频在搜索结果中的排名,从而增加视频曝光量和用户点…

ValueError: high is out of bounds for int32 报错

问题描述: 笔者在Windows 64位平台跑一个在Ubuntu上运行正常的程序时,出现了以下报错: 具体为: seed np.random.randint(0, 2 ** 32) # make a seed with numpy generatorFile "mtrand.pyx", line 763, in numpy.ra…

Moonbeam Ignite强势回归

参与Moonbeam上最新的流动性计划 还记得新一轮的流动性激励计划吗?Moonbeam Ignite社区活动带着超过300万枚GLMR奖励来啦!体验新项目,顺便薅一把GLMR羊毛。 本次Moonbeam Ignite活动的参与项目均为第二批Moonbeam生态系统Grant资助提案中获…

BaseQuickAdapter触底刷新实现

触底刷新实现 使用BaseQuickAdapter,在适配器中实现 LoadMoreModule即可,如下加上即可,无需多写代码 以下为分页实现: 视图中 // 获取加载更多模块loadMoreModule blogAdapter.getLoadMoreModule();loadMoreModule.setOnLoadMo…

无线振弦采集仪在岩土工程中如何远程监测和远程维护

无线振弦采集仪在岩土工程中如何远程监测和远程维护 随着岩土工程施工的不断发展和科技水平的不断提高,远程监测和远程维护设备也得到了广泛关注和应用。无线振弦采集仪是一种广泛应用于岩土工程中的测量仪器,在现代化施工中扮演着重要的角色。本文将就…

2023学生近视了用什么台灯好呢?好用预防近视的护眼台灯推荐

自从护眼台灯能够帮助孩子在写作业时能够缓解视觉疲劳以来,许多家长已经给孩子安排上来护眼台灯,护眼台灯能够提供良好的照明环境,并且能够让我们专心学习提高工作效率。但由于护眼台灯含有独家的黑科技技术,价格始终居高不下&…

【微信小程序开发】一文学会使用CSS样式布局与美化

引言 在微信小程序开发中,CSS样式布局和美化是非常重要的一部分,它能够为小程序增添美感,提升用户体验。本文将介绍如何学习使用CSS进行样式布局和美化,同时给出代码示例,帮助开发者更好地掌握这一技巧。 一、CSS样式布…

ssm+vue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结…

【Overload游戏引擎分析】画场景栅格的Shader分析

Overload引擎地址: GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后,场景视图中有栅格线,这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现&#xff0…

漏刻有时物联网环境态势感知大数据(设备列表、动态折线图)

物联网环境下的态势感知是指对物联网环境中的各种要素进行全面、实时、准确的监测、分析和预测,以实现网络态势的全面掌握和安全威胁的及时响应和处理。具体而言,态势感知以物联网环境为基础,利用各类传感器、数据采集设备和其他相关工具,对物联网设备、资产、数据流等进行…

【Python】语言学习

之前总觉得python简单,不当回事,直到自己动手连输出都写不出来。。于是开一篇专门练python的博客。 输出 Python初相识 (educoder.net) 常规输出 print("向上:%.2f,向下:%.2f" %(pow(1.001, 365),pow(0.999, 365))) …

论文笔记 A theory of learning from different domains

domain adaptation 领域理论方向的重要论文. 这篇笔记主要是推导文章中的定理, 还有分析定理的直观解释. 笔记中的章节号与论文中的保持一致. 1. Introduction domain adaptation 的设定介绍: 有两个域, source domain 与 target domain. source domain: 一组从 source dist.…

Java 面向对象的三大特性

面向对象编程有三大特征: 封装、继承和多态。 1.封装 1)封装介绍 封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起数据被保护在内部.程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。 2)封装的理解和好处 隐…

Springboot使用ProcessBuilder创建系统进程执行shell命令备份数据库

文章目录 概要1、查看mysql版本2、相关依赖3、具体代码技术细节 概要 Springboot执行shell命令备份数据库。 1、查看mysql版本 mysql --version2、相关依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

【力扣-每日一题】901. 股票价格跨度

暴力解法&#xff1a; class StockSpanner { private:vector<int> pri; public:StockSpanner() {}int next(int price) {pri.emplace_back(price);int count0;for(int ipri.size()-1;i>0;i--){if(pri[i]<price)count;else break;}return count;} };/*** Your Stoc…

Perforce发布《2023游戏开发与设计现状报告》,为游戏开发行业提供参考

近期&#xff0c;Perforce发布了《2023游戏开发与设计现状报告》。此报告调查了来自全球各地的游戏开发专业人士&#xff0c;了解他们面临的主要开发挑战、使用的工具和流程&#xff0c;以及目前最让他们对这个行业感到兴奋的方面。 龙智作为Perforce授权合作伙伴&#xff0c;…

第85步 时间序列建模实战:CNN回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍CNN回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome i…

【JavaEE重点知识归纳】第6节:数组

目录 一&#xff1a;数组的基本概念 1.什么是数组 2.数组的创建和初始化 3.数组的使用 ​编辑二&#xff1a;数组是引用类型 1.了解JVM的内存分布 2.基本类型变量和引用类型变量的区别 3.认识null 三&#xff1a;数组的应用场景 1.保存数据 2.作为函数的参数 3.作为…

BUUCTF Basic 解题记录--BUU XXE COURSE

1、XXE漏洞 初步学习&#xff0c;可参考链接&#xff1a; 一篇文章带你深入理解漏洞之 XXE 漏洞 - 先知社区 2、了解了XXE漏洞&#xff0c;用burpsuite获取到的url转发给repeater&#xff0c;修改XML的信息&#xff0c;引入外部实体漏洞&#xff0c;修改发送内容&#xff0c;…

ubuntu系统开机黑屏(只显示logo、左上角光标闪烁)问题

问题背景 在使用pycharm的时候&#xff0c;我使用了pycharm的快捷键ctrlaltF7&#xff0c;结果进入了ubuntu的ttf界面&#xff0c;由于之前不知道这个东西&#xff0c;百度一顿乱搜&#xff0c;以为显卡驱动出问题了&#xff0c;就把驱动删了&#xff0c;其实我完全可以ctrlal…