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

目录

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.rhkb.cn/news/154147.html

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

相关文章

SpringCloud源码探析(十)-Web消息推送

1.概述 消息推送在日常使用中的场景比较多,比如有人点赞了我的博客或者关注了我,这时我就会收到一条推送消息,以此来吸引我点击或者打开应用。消息推送的方式主要分为两种:web消息推送和移动端消息推送。它将所要发送的信息&…

剑指offer——JZ84 二叉树中和为某一值的路径(三) 解题思路与具体代码【C++】

一、题目描述与要求 二叉树中和为某一值的路径(三)_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 。 1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束&#xff…

【已解决】msvcp140.dll丢失怎样修复?msvcp140.dll重新安装的解决方法

今天我要和大家分享的是关于msvcp140.dll丢失的五种不同解决方法。我们知道,在运行一些软件或游戏的时候,经常会遇到“msvcp140.dll丢失”的问题,这可能会影响到我们的使用体验。那么,面对这个问题,我们应该如何应对呢…

【2023研电赛】安谋科技企业命题特别奖:面向独居老人的智能居家监护系统

本文为2023年第十八届中国研究生电子设计竞赛安谋科技企业命题特别奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来…

Http请求响应 Ajax 过滤器

10/10/2023 近期总结: 最近学的后端部署,web服务器运行,各种请求响应,内容很多,学的很乱,还是需要好好整理,前面JavaSE内容还没有完全掌握,再加上一边刷题,感觉压力很大哈…

JavaScript Web APIs第五天笔记

Web APIs - 第5天笔记 目标: 能够利用JS操作浏览器,具备利用本地存储实现学生就业表的能力 BOM操作综合案例 js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。比如:变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型&…

IP协议总结

一、定义。 IP全称为Internet Protocol,是TCP/IP协议族中的一员,负责实现数据在网络上的传输。它是一种无连接、不可靠的数据报协议。 IP协议常用于Internet网络和局域网中,它通过将数据包进行分组并进行逐跳转发来实现数据在网络中的传输。…

攻防世界题目练习——Web引导模式(一)

题目目录 1. command_execution2.xff_referer3.simple_js4.php_rce5.Web_php_include6.upload17. warmup 难度1全部写过了,这个系列里没有 指路: 攻防世界题目练习——Web难度1(一) 攻防世界题目练习——Web难度1(二&a…

【力扣2011】执行操作后的变量值

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接:执行操作后的变量值 存在一种仅支持 4 种操作和 1 个变量 …

Python 无废话-办公自动化Excel格式美化

设置字体 在使用openpyxl 处理excel 设置格式,需要导入Font类,设置Font初始化参数,常见参数如下: 关键字参数 数据类型 描述 name 字符串 字体名称,如Calibri或Times New Roman size 整型 大小点数 bold …

mysql面试题34:Hash索引和B+树区别是什么?在设计索引怎么选择?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Hash索引和B+树区别是什么?在设计索引怎么选择? 在MySQL中,Hash索引和B+树索引是两种常见的索引类型,他们有以下区别: 数据结构:Hash索引:…

【小沐学Python】Python实现Web图表功能(Dash)

文章目录 1、简介2、安装3、功能示例3.1 Hello World3.2 连接到数据3.3 可视化数据3.4 控件和回调3.5 设置应用的样式3.5.1 HTML and CSS3.5.2 Dash Design Kit (DDK)3.5.3 Dash Bootstrap Components3.5.4 Dash Mantine Components 4、更多示例4.1 Basic Dashboard4.2 Using C…

从0开始学go第六天

方法一:gin获取querystring参数 package main//querystring import ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/web", func(c *gin.Context) {//获取浏览器那边发请求携带的query String参数//…

基于 Mtcnn(人脸检测)+Hopenet(姿态检测)+拉普拉斯算子(模糊度检测) 的人脸检测服务

写在前面 工作原因,顺便整理博文内容为一个 人脸检测服务分享以打包 Docker 镜像,可以直接使用服务目前支持 http 方式该检测器主要适用低质量人脸图片处理理解不足小伙伴帮忙指正,多交流,相互学习 对每个人而言,真正的…

【Python】WebUI自动化—Selenium的下载和安装、基本用法、项目实战(16)

文章目录 一.介绍二.下载安装selenium三.安装浏览器驱动四.QuickStart—自动访问百度五.Selenium基本用法1.定位节点1.1.单个元素定位1.2.多个元素定位 2.控制浏览器2.1.设置浏览器窗口大小、位置2.2.浏览器前进、刷新、后退、关闭3.3.等待3.4.Frame3.5.多窗口3.6.元素定位不到…

为Yolov7环境安装Cuba匹配的Pytorch

1. 查看Cuba版本 方法一 nvidia-smi 找到CUDA Version 方法二 Nvidia Control Panel > 系统信息 > 组件 > 2. 安装Cuba匹配版本的PyTorch https://pytorch.org/get-started/locally/这里使用conda安装 conda install pytorch torchvision torchaudio pytorch-cu…

Oracle笔记-对ROWNUM的一次理解(简单分页)

此博文记录时间:2023-05-05,发到互联网上是2023-10-09 这个在分页里面用得比较多,在MySQL中,通常使用limit去操作,而去感觉比较简单,Oracle中无此关键字。 通过查阅资料后,要实现分页需要用到…

Lab 1: Unix utilities汇总

这个实验主要学习了常用的一些系统调用。 Lab 1: Unix utilities Boot xv6 (easy) git克隆,切换分支,qemu。根据要求进行操作即可。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 $ cd xv6-labs-2020 $ git checkout util $ make qemusleep (ea…

idea将jar包deploy到本地仓库

1、pom.xml文件引入配置&#xff0c;如下参考&#xff1a; <distributionManagement><snapshotRepository><id>maven-snapshots</id><url>http://nexus1.coralglobal.cn/repository/maven-snapshots/</url></snapshotRepository><…

唐老师讲电赛

dc-dc电源布局要点