机器学习---决策树的划分依据(熵、信息增益、信息增益率、基尼值和基尼指数)

news2024/11/25 4:32:06

1. 熵

物理学上,熵 Entropy 是“混乱”程度的量度。

系统越有序,熵值越低;系统越混乱或者分散,熵值越⾼。

1948年⾹农提出了信息熵(Entropy)的概念。

       从信息的完整性上进⾏的描述:当系统的有序状态⼀致时,数据越集中的地⽅熵值越⼩,数据

越分散的地⽅熵值越⼤。 

      从信息的有序性上进⾏的描述:当数据量⼀致时,系统越有序,熵值越低;系统越混乱或者分

散,熵值越⾼。

"信息熵" (information entropy)是度量样本集合纯度最常⽤的⼀种指标。 假定当前样本集合 D 中第

k 类样本所占的⽐例为 pk (k = 1, 2,. . . , |y|) ,,D为样本的所有数量,Ck 为第k类样本

的数量。 则 D 的信息熵定义为(log是以2为底,lg是以10为底):

其中:Ent(D) 的值越⼩,则 D 的纯度越⾼。

例子:假设我们没有看世界杯的⽐赛,但是想知道哪⽀球队会是冠军, 我们只能猜测某⽀球队是

或不是冠军,然后观众⽤对或不对来回答, 我们想要猜测次数尽可能少,⽤什么⽅法?

答案: ⼆分法。

假如有 16 ⽀球队,分别编号,先问是否在 1-8 之间,如果是就继续问是否在 1-4 之间, 以此类

推,直到最后判断出冠军球队是哪⽀。 如果球队数量是 16,我们需要问 4 次来得到最后的答案。

那么世界冠军这条消息的信息熵就是 4。

那么信息熵等于4,是如何进⾏计算的呢?

Ent(D) = -(p1 * logp1 + p2 * logp2 + ... + p16 * logp16),其中 p1, ..., p16 分别是这 16 ⽀球队

夺冠的概率。 当每⽀球队夺冠概率相等都是 1/16 的时侯,Ent(D) = -(16 * 1/16 * log1/16) = 4

每个事件概率相同时,熵最⼤,这件事越不确定。

2. 信息增益

信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越⼤,样本

的不确定性就越⼤。 因此可以使⽤划分前后集合熵的差值来衡量使⽤当前特征对于样本集合D划分

效果的好坏。

信息增益 = entroy(前) - entroy(后)

信息增益表示得知特征X的信息⽽使得类Y的信息熵减少的程度。

假定离散属性a有 V 个可能的取值:

若使⽤ a 来对样本集 D 进⾏划分,则会产⽣ V 个分⽀结点,其中第v个分⽀结点包含了 D 中所有

在属性 a上取值为 av 的样本,记为 D。我们可根据前⾯给出的信息熵公式计算出 D 的信息熵,再

考虑到不同的分⽀结点所包含的样本数不同,给分⽀结点赋予权重

即样本数越多的分⽀结点的影响越⼤,于是可计算出⽤属性 a 对样本集 D 进⾏划分所获得的"信息

增益" (information gain)。

其中:特征a对训练数据集 D 的信息增益 Gain(D,a),定义为集合 D 的信息熵 Ent(D) 与给定特征 a

条件下 D 的信息条件熵 Ent(D∣a) 之差,即公式为:

公式的详细解释: 信息熵的计算:

条件熵的计算: 

其中:Dv 表示 a 属性中第 v 个分⽀节点包含的样本数

Ckv 表示 a 属性中第 v 个分⽀节点包含的样本数中,第 k 个类别下包含的样本数

⼀般⽽⾔,信息增益越⼤,则意味着使⽤属性 a 来进⾏划分所获得的"纯度提升"越⼤。因此,我们

可⽤信息增益来进⾏决策树的划分属性选择,著名的 ID3 决策树学习算法 [Quinlan, 1986] 就是

以信息增益为准则来选择划分属性。 其中,ID3 名字中的 ID 是 Iterative Dichotomiser (迭代⼆分

器)的简称。

比如:第⼀列为论坛号码,第⼆列为性别,第三列为活跃度,最后⼀列⽤户是否流失。 我们要解

决⼀个问题:性别和活跃度两个特征,哪个对⽤户流失影响更⼤?

通过计算信息增益可以解决这个问题,统计上右表信息。其中Positive为正样本(已流失),

Negative为负样本(未流失),下⾯的数值为不同划分下对应的⼈数。 可得到三个熵: 

①计算类别信息熵(整体熵)

②性别属性的信息熵

③性别的信息增益

④活跃度的信息熵 

⑤活跃度的信息增益

活跃度的信息增益⽐性别的信息增益⼤,也就是说,活跃度对⽤户流失的影响⽐性别⼤。在做特

征选择或者数据分析的时候,应该重点考察活跃度这个指标。 

3. 信息增益率

在上⾯的介绍中,我们有意忽略了"编号"这⼀列。若把"编号"也作为⼀个候选划分属性,则根据信

息增益公式可计算出它的信息增益为 0.9182,远⼤于其他候选划分属性。 计算每个属性的信息熵

过程中,发现该属性的值为0,也就是其信息增益为0.9182。但是很明显这么分类,最后出现的结

果不具有泛化效果,⽆法对新样本进⾏有效预测。

实际上,信息增益准则对可取值数⽬较多的属性有所偏好,为减少这种偏好可能带来的不利影响,

著名的 C4.5 决策树算法不直接使⽤信息增益,⽽是使⽤"增益率" (gain ratio) 来选择最优划分属

性。 增益率:增益率是⽤前⾯的信息增益 Gain(D, a) 和属性 a 对应的"固有值"(intrinsic value) 的

⽐值来共同定义的。

属性 a 的可能取值数⽬越多(即 V 越⼤),则 IV(a) 的值通常会越⼤。

⽤分裂信息度量来考虑某种属性进⾏分裂时分⽀的数量信息和尺⼨信息,把这些信息称为属性的内

在信息 (instrisic information)。信息增益率⽤信息增益/内在信息,会导致属性的重要性随着内在

信息的增⼤⽽减⼩(也就是说,如果这个属性本身不确定性就很⼤,那我就越不倾向于选取它),

这样算是对单纯⽤信息增益有所补偿。

上面的例子中,计算属性分裂信息度量:

计算信息增益率:

活跃度的信息增益率更⾼⼀些,所以在构建决策树的时候,优先选择通过这种⽅式,在选取节点的

过程中,我们可以降低取值较多的属性的选取偏好。 

例子2:第⼀列为天⽓,第⼆列为温度,第三列为湿度,第四列为⻛速,最后⼀列该活动是否进

⾏。根据下⾯表格数据,判断在对应天⽓下,活动是否会进⾏?

该数据集有四个属性,属性集合A={ 天⽓,温度,湿度,⻛速}, 类别标签有两个,类别集合L={进

⾏,取消}。 

①计算类别信息熵。类别信息熵表示的是所有样本中各种类别出现的不确定性之和。根据熵的概

念,熵越⼤,不确定性就越⼤,把事情搞清楚所需要的信息量就越多。

②计算每个属性的信息熵。每个属性的信息熵相当于⼀种条件熵。表示的是在某种属性的条件下,

各种类别出现的不确定性之和。属性的信息熵越⼤,表示这个属性中拥有的样本类别越不“纯”。 

③计算信息增益。信息增益 = 熵 - 条件熵,在这⾥就是类别信息熵 - 属性信息熵,它表示的是信息

不确定性减少的程度。如果⼀个属性的信息增益越⼤,就表示⽤这个属性进⾏样本划分可以更好的

减少划分后样本的不确定性,当然,选择该属性就可以更快更好地完成分类⽬标。 信息增益就是

ID3算法的特征选择指标。 

假设把上⾯表格1的数据前⾯添加⼀列为"编号",取值(1--14)。若把"编号"也作为⼀个候选划分属

性,则根据前⾯步骤:计算每个属性的信息熵过程中,该属性的值为0,也就是其信息增益为

0.940。但是很明显这么分类,最后出现的结果不具有泛化效果。此时根据信息增益就⽆法选择出

有效分类特征。所以,C4.5选择使⽤信息增益率对ID3进⾏改进。 

④计算属性分裂信息度量。⽤分裂信息度量来考虑某种属性进⾏分裂时分⽀的数量信息和尺⼨信

息,把这些信息称为属性的内在信息 (instrisic information)。信息增益率⽤信息增益/内在信息,

会导致属性的重要性随着内在信息的增⼤⽽减⼩(也就是说,如果这个属性本身不确定性就很⼤,

那就越不倾向于选取它),这样算是对单纯⽤信息增益有所补偿。

⑤计算信息增益率。

天⽓的信息增益率最⾼,选择天⽓为分裂属性。发现分裂了之后,天⽓是“阴”的条件下,类别是”纯

“的,所以把它定义为叶⼦节点,选择不“纯”的结点继续分裂。 

C4.5的算法流程:

while(当前节点"不纯"):
    1.计算当前节点的类别熵(以类别取值计算)
    2.计算当前阶段的属性熵(按照属性取值吓得类别取值计算)
    3.计算信息增益
    4.计算各个属性的分裂信息度量
    5.计算各个属性的信息增益率
end while
当前阶段设置为叶⼦节点

C4.5的优点:

①⽤信息增益率来选择属性,克服了⽤信息增益来选择属性时偏向选择值多的属性的不⾜。

②采⽤了⼀种后剪枝⽅法避免树的⾼度⽆节制的增⻓,避免过度拟合数据

③对于缺失值的处理 在某些情况下,可供使⽤的数据可能缺少某些属性的值。假如〈x,c(x)〉是

样本集S中的⼀个训练实例,但是其属性A 的值A(x)未知。 处理缺少属性值的⼀种策略是赋给它结

点n所对应的训练实例中该属性的最常⻅值; 另外⼀种更复杂的策略是为A的每个可能值赋予⼀个

概率,C4.5就是使⽤这种⽅法处理缺少的属性值。

4. 基尼值和基尼指数

CART 决策树 [Breiman et al., 1984] 使⽤"基尼指数"(Gini index)来选择划分属性。CART 是

Classification and Regression Tree的简称,这是⼀种著名的决策树学习算法,分类和回归任务都

可⽤基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不⼀致的概率。Gini(D)值

越⼩,数据集D的纯度越⾼。 数据集 D 的纯度可⽤基尼值来度量:

         D为样本的所有数量,Ck 为第 k 类样本的数量。 

基尼指数Gini_index(D):⼀般,选择使划分后基尼系数最⼩的属性作为最优化分属性。

1. 对数据集⾮序列标号属性{是否有房,婚姻状况,年收⼊}分别计算它们的Gini指数,取Gini指数

最⼩的属性作为决策树的根节点属性。 

2. 根节点的Gini值为:

3. 当根据是否有房来进⾏划分时,Gini指数计算过程为: 

4. 若按婚姻状况属性来划分,属性婚姻状况有三个可能的取值{married,single,divorced},分别

计算划分后的Gini系数增益。 {married} | {single,divorced} {single} | {married,divorced} {divorced} |

{single,married} 

对⽐计算结果,根据婚姻状况属性来划分根节点时取Gini指数最⼩的分组作为划分结果,即:

{married} | {single,divorced} 。

5. 同理可得年收⼊Gini: 对于年收⼊属性为数值型属性,⾸先需要对数据按升序排序,然后从⼩

到⼤依次⽤相邻值的中间值作为分隔将样本划分为两组。例如当⾯对年收⼊为60和70这两个值

时,我们算得其中间值为65。以中间值65作为分割点求出Gini指数。

根据计算知道,三个属性划分根节点的指数最⼩的有两个:年收⼊属性和婚姻状况,他们的指数都

为0.3。此时,选取⾸先出现的属性{married}作为第⼀次划分。 

6. 接下来,采⽤同样的⽅法,分别计算剩下属性,其中根节点的Gini系数为(此时是否拖⽋贷款的

各有3个records)。

7. 对于是否有房属性,可得: 

8. 对于年收⼊属性则有: 

经过如上流程,构建的决策树,如下图:

CART的算法流程:

while(当前节点"不纯"):
    1.遍历每个变量的每⼀种分割⽅式,找到最好的分割点
    2.分割成两个节点N1和N2
end while
每个节点⾜够“纯”为⽌


 

 

 

 

 

 

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

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

相关文章

纵行科技与山鹰绿能达成合作,提供物联网资产管理数据服务

近日,纵行科技与山鹰绿能宣布双方达成深度合作关系,纵行科技将为山鹰绿能提供专业的物联网技术服务,使用物联网技术帮助山鹰绿能对循环包装载具等资产进行在线管理和数字化运营。 据悉,山鹰绿能是一家由山鹰国际控股的全资子公司…

Meta发布AIGC生成式人工智能模型来生成音乐与音效——AudioCraft

近年来,包括语言模型在内的生成式人工智能模型取得了巨大进步,特别是ChatGPT的发布,让大家看到了大语言模型的魅力。无论是计算机视觉,还是nlp领域的文本描述生成各种图像和视频,到执行机器翻译,文本生成等等大模型上,其都取得了令人意想不到的发展。但音乐与音频上似乎…

LLM推理部署(一):LLM七种推理服务框架总结

自从ChatGPT发布以来,国内外的开源大模型如雨后春笋般成长,但是对于很多企业和个人从头训练预训练模型不太现实,即使微调开源大模型也捉襟见肘,那么直接部署这些开源大模型服务于企业业务将会有很大的前景,本文将介绍七…

多张图片转为pdf怎么弄?

多张图片转为pdf怎么弄?在网络传输过程中,为了避免图片格式文件出现差错,并确保图片的清晰度和色彩不因不同设备而有所改变,常见的做法是将图片转换为PDF格式。然而,当涉及到多张图片时,逐一转换将会变得相…

如何使用Puppeteer进行新闻网站数据抓取和聚合

导语 Puppeteer是一个基于Node.js的库,它提供了一个高级的API来控制Chrome或Chromium浏览器。通过Puppeteer,我们可以实现各种自动化任务,如网页截图、PDF生成、表单填写、网络监控等。本文将介绍如何使用Puppeteer进行新闻网站数据抓取和聚…

SpringBoot的自动装配源码分析

文章目录 一:什么是自动装配二、springboot的启动流程1.调用SpringApplication()的构造方法2.执行核心run方法()3.执行核心prepareContext()4.执行核心refreshContext()5…

信创软件测试质量的四个特性是什么?

对于信创软件而言,需结合其自身的特点、用户单位的实际使用需求,选择合适的质量特性范围,制定恰当的测试方案,以最大效率发现适配问题、尽快地完成适配质量的提升。那么,信创软件测试质量的四个特性是什么?下面&#…

【状压+概率DP】CF678 E

Problem - E - Codeforces 题意&#xff1a; 思路&#xff1a; 首先&#xff0c;n < 18&#xff0c;应当想到状压 很明显&#xff0c;这里可以使用状压DP 设 dp[s][i] 表示&#xff0c;现在选的方案为 s &#xff0c;且我是 i 的最终胜利的概率是多少 重要的是转移 这是…

1688API技术解析,实现获得店铺的所有商品

获得店铺的所有商品可以通过1688的开放API实现。以下是对1688API的技术解析&#xff1a; 1. 注册成为开发者&#xff1a;首先&#xff0c;你需要在1688开放平台上注册成为开发者&#xff0c;并创建一个应用来获取API授权。 2. 获取授权访问令牌&#xff1a;通过使用OAuth 2.0…

Centos7 + Apache Ranger 2.4.0 部署

一、Ranger简介 Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问权限。 1、组件列表 # Service Name Liste…

nil、空接口和空结构体联系与区别

nil&#xff1a; nil是空&#xff0c;并不一定是空指针&#xff0c;nil是一个变量&#xff0c;类型是Type 可能是一下6中类型&#xff0c;以下6种类型的初始值 空结构体

简易虚拟培训系统-UI控件的应用4

目录 Slider组件的常用参数 示例-使用Slider控制主轴 示例-Slider控制溜板箱的移动 本文以操作面板为例&#xff0c;介绍使用Slider控件控制开关和速度。 Slider组件的常用参数 Slider组件下面包含了3个子节点&#xff0c;都是Image组件&#xff0c;负责Slider的背景、填充区…

linux————ELK(日志收集系统集群)

一、概述 一、为什么要使用ELK 日志对于分析系统、应用的状态十分重要&#xff0c;但一般日志的量会比较大&#xff0c;并且比较分散。 如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显…

C++ ASIO 实现异步套接字管理

Boost ASIO&#xff08;Asynchronous I/O&#xff09;是一个用于异步I/O操作的C库&#xff0c;该框架提供了一种方便的方式来处理网络通信、多线程编程和异步操作。特别适用于网络应用程序的开发&#xff0c;从基本的网络通信到复杂的异步操作&#xff0c;如远程控制程序、高并…

vulnhub靶机Solstice

下载地址&#xff1a;https://download.vulnhub.com/sunset/solstice.ova 主机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.147 这里端口有太多于是我就整理了一下 nmap --min-rate 10000 -p- 192.168.21.147 -oA ports 数据整理 cat ports.nmap|grep…

【不良人】官方声明:天罡传电影拍摄三部,第七季仅一句话说明

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析画江湖系列&#xff01; 距离画江湖之不良人第六季完结已经有一段时间了&#xff0c;就在小郑都快忘了这部动漫的时候&#xff0c;突然官方发声了。先是透露了关于画江湖之不良人番外电影天罡传的情报&#xff0c;之后又明…

Ansible自动化运维之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…

windows 搭建 swoole开发环境(官网已支持)

第一步下载&#xff1a;swoole官网下载 swoole-cli-v5.0.3-cygwin-x64.zip 只支持 64 位的系统 第二步解压到指定文件夹&#xff1a;E:\phpstudy_pro\WWW\swoole-cli-v5.0.3-cygwin-x64 第三步设置环境变量&#xff1a;把解压后的文件夹下的 bin 目录路径配置到系统的 Path 环境…

茶凳浅谈-使用QCA7006AQ 让电动汽车成为智慧电网的一环

前言: 智慧电网一词相信大家都已经耳熟能详。智能电网是指采用先进的电力技术和设备、信息与通信技术&#xff0c;系统地实现电网的智能型监测、分析和决策控制&#xff0c;支持新型能源发电和灵活优质用电&#xff0c;具有高自动化水平&#xff0c;并有一定自愈、互动功能的安…