决策树及分类原理与划分依据:信息熵、信息增益、信息增益率、基尼值和基尼指数

news2025/1/9 15:12:17

一、决策树及分类原理

决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树

熵(Entropy) :物理学上是“混乱”程度的量度,系统越有序,熵值越低;系统越混乱或者分散,熵值越高

  • 从信息的完整性上进行的描述:当系统的有序状态一致时,**数据越集中的地方熵值越小,数据越分散的地方熵值越大
  • 从信息的有序性上进行的描述:当数据量一致时,系统越有序,熵值越低,系统越混乱或者分散,熵值越高

1948年香农提出了信息熵(Entropy)的概念,假如事件A的分类划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn),那信息熵定义为公式如下:(log是以2为底,lg是以10为底)

\begin{array}{l} \operatorname{Ent}(A)=-\sum_{k=1}^{n} p_{k} \log _{2} p_{k} \\ \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, =-\left ( p_{1} \log _{2} p_{1}+p_{2} \log _{2} p_{2}+\ldots+p_{n} \log _{2} p_{n} \right ) \end{array}

二、决策树的划分依据

2.1 信息增益

信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏

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

定义与公式:特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即公式为

g(D, A)=H(D)-H(D \mid A)

其中,信息熵H(D)与条件熵H(D|A)分别为

H(D)=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log \frac{\left|C_{k}\right|}{|D|}

H(D \mid A)=\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} H\left(D_{i}\right)=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} \sum_{k=1}^{K} \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} \log \frac{\left|D_{i k}\right|}{\left|D_{i}\right|} 

 C_{k}表示属于某个类别的样本数,信息增益表示得知特征X的信息而使得类Y的信息熵减少的程度

举例如下

左图第一列为论坛号码,第二列为性别,第三列为活跃度,最后一列用户是否流失,要解决一个问题:性别和活跃度两个特征,哪个对用户流失影响更大

通过计算信息增益可以解决这个问题,统计上右表信息,其中Positive为正样本(已流失),Negative为负样本(未流失),下面的数值为不同划分下对应的人数

可得到三个熵

整体熵:H(D) =-\frac{5}{15} \log _{2}\left(\frac{5}{15}\right)-\frac{10}{15} \log _{2}\left(\frac{10}{15}\right) =0.9182

性别熵:\begin{array}{l} H\left(\mathrm{~g}_{1}\right)=-\frac{3}{8} \log _{2}\left(\frac{3}{8}\right)-\frac{5}{8} \log _{2}\left(\frac{5}{8}\right)=0.9543 \\ H\left(\mathrm{~g}_{2}\right)=-\frac{2}{7} \log _{2}\left(\frac{2}{7}\right)-\frac{5}{7} \log _{2}\left(\frac{5}{7}\right)=0.8631 \end{array}

性别信息增益:\begin{array}{l} \text { IGain }(D, g)=H(D)-\frac{8}{15} H\left(g_{1}\right)-\frac{7}{15} H\left(g_{2}\right)=0.0064 \end{array}

活跃度熵:H\left(\mathrm{a}_{1}\right)=0 \quad H\left(\mathrm{a}_{2}\right)=0.7219 \quad H\left(\mathrm{a}_{3}\right)=0

活跃度信息增益:\begin{array}{l} \operatorname{IGain}(D, a)=H(D)-\frac{6}{15} H\left(a_{1}\right)-\frac{5}{15} H\left(a_{2}\right)-\frac{4}{15} H\left(a_{3}\right)=0.6776 \end{array}

活跃度的信息增益比性别的信息增益大,即活跃度对用户流失的影响比性别大,在做特征选择或者数据分析的时候,我们应该重点考察活跃度这个指标

2.2 信息增益率

增益率:增益比率度量是用前面的增益度量Gain(S,A)和所分离信息度量SplitInformation(如上例的性别,活跃度等)的比值来共同定义的

\operatorname{GainRatio}\left(S_{A}, A\right)=\frac{\operatorname{Gain}\left(S_{A}, A\right)}{\operatorname{SplitInformation}\left(S_{A}, A\right)} \\ \operatorname{SplitInformation}\left(S_{A}, A\right)=-\sum_{m \in M} \frac{\left|S_{A m}\right|}{\left|S_{A}\right|} \log \frac{\left|S_{A m}\right|}{\left|S_{A}\right|}

2.3 基尼值和基尼指数 

基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,Gini(D)值越小,数据集D的纯度越高

\operatorname{Gini}(D)=\sum_{k=1}^{|y|} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}}=1-\sum_{k=1}^{|y|} p_{k}^{2}

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

Gini\_index(D, a)=\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Gini}\left(D^{v}\right) 

 举例如下

1、对数据集非类标号属性{是否有房,婚姻状况,年收入}分别计算它们的Gini系数增益,取Gini系数增益值最大的属性作为决策树的根节点属性

2、根节点的Gini系数为:Gini(是否拖欠贷款)=1-\left(\frac{3}{10}\right)^{2}-\left(\frac{7}{10}\right)^{2}=0.42

3、当根据是否有房来进行划分时,Gini系数增益计算过程为:

Gini ( 左子节点 )=1-\left(\frac{0}{3}\right)^{2}-\left(\frac{3}{3}\right)^{2}=0

Gini( 右子节点 )=1-\left(\frac{3}{7}\right)^{2}-\left(\frac{4}{7}\right)^{2}=0.4898

{ 是否有房 }=0.42-\frac{7}{10} \times 0.4898-\frac{3}{10} \times 0=0.077

4、若按婚姻状况属性来划分,属性婚姻状况有三个可能的取值{married,single,divorced},分别计算划分后的Gini系数增益

①分组为{married} | {single,divorced}时:

{婚姻状况}\begin{array}{l} =0.42-\frac{4}{10} \times 0-\frac{6}{10} \times\left[1-\left(\frac{3}{6}\right)^{2}-\left(\frac{3}{6}\right)^{2}\right]=0.12 \end{array}

②当分组为{single} | {married,divorced}时:

{婚姻状况}\begin{array}{l} =0.42-\frac{4}{10} \times 0.5-\frac{6}{10} \times\left[1-\left(\frac{1}{6}\right)^{2}-\left(\frac{5}{6}\right)^{2}\right]=0.053 \end{array}

③当分组为{divorced} | {single,married}时:

{婚姻状况}\begin{array}{l} =0.42-\frac{2}{10} \times 0.5-\frac{8}{10} \times\left[1-\left(\frac{2}{8}\right)^{2}-\left(\frac{6}{8}\right)^{2}\right]=0.02 \end{array}

对比计算结果,根据婚姻状况属性来划分根节点时取Gini系数增益最大的分组作为划分结果,即:{married} | {single,divorced}

5、同理可得年收入Gini:对于年收入属性为数值型属性,首先需要对数据按升序排序,然后从小到大依次用相邻值的中间值作为分隔将样本划分为两组。例如当面对年收入为60和70这两个值时,算得其中间值为65,以中间值65作为分割点求出Gini系数增益

最大化增益等价于最小化子女结点的不纯性度量(Gini系数)的加权平均值,现在我们希望最大化Gini系数的增益。根据计算知道,三个属性划分根节点的增益最大的有两个:年收入属性和婚姻状况,他们的增益都为0.12。此时,选取首先出现的属性作为第一次划分

6、采用同样的方法,分别计算剩下属性,其中根节点的Gini系数为(此时是否拖欠贷款的各有3个records)

Gini(是否拖欠贷款)==1-\left(\frac{3}{6}\right)^{2}-\left(\frac{3}{6}\right)^{2}=0.5

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

Gini(是否有房)\begin{array}{l} =0.5-\frac{4}{6} \times\left[1-\left(\frac{3}{4}\right)^{2}-\left(\frac{1}{4}\right)^{2}\right]-\frac{2}{6} \times 0=0.25 \end{array}

8、对于年收入属性则有

小结

决策树构建的基本步骤如下

  1. 开始将所有记录看作一个节点
  2. 遍历每个变量的每一种分割方式,找到最好的分割点
  3. 分割成两个节点N1和N2
  4. 对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止

决策树的变量可以有两种

  1. 数字型(Numeric):变量类型是整数或浮点数,如前面例子中的“年收入”。用“>=”,“>”,“<”或“<=”作为分割条件(排序后,利用已有的分割情况,可以优化分割算法的时间复杂度)
  2. 名称型(Nominal):类似编程语言中的枚举类型,变量只能从有限的选项中选取,比如前面例子中的“婚姻情况”,只能是“单身”,“已婚”或“离婚”,使用“=”来分割

评估分割点的好坏

​如果一个分割点可以将当前的所有节点分为两类,使得每一类都很“纯”,也就是同一类的记录较多,那么就是一个好分割点

​比如上面的例子,“拥有房产”,可以将记录分成了两类

  • “是”的节点全部都可以偿还债务,非常“纯”
  • “否”的节点,可以偿还贷款和无法偿还贷款的人都有,不是很“纯”
  • 两个节点加起来的纯度之和与原始节点的纯度之差最大,所以按照这种方法分割
  • 构建决策树采用贪心算法,只考虑当前纯度差最大的情况作为分割点

三、常见决策树类型比较

3.1 ID3 算法存在的缺点

  1. ​ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息
  2. ID3算法只能对描述属性为离散型属性的数据集构造决策树

3.2 C4.5算法做出的改进

  1. 用信息增益率来选择属性
  2. 可以处理连续数值型属性
  3. 采用了一种后剪枝方法
  4. 对于缺失值的处理

C4.5算法的优缺点

  • ​优点:产生的分类规则易于理解,准确率较高
  • 缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效,此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行

3.3 CART算法

CART算法相比C4.5算法的分类方法,采用了简化的二叉树模型,同时特征选择采用了近似的基尼系数来简化计算,C4.5不一定是二叉树,但CART一定是二叉树

无论是ID3,C4.5还是CART,在做特征选择的时候都是选择最优的一个特征来做分类决策,但是大多数分类决策不应该是由某一个特征决定的,而是应该由一组特征决定的,这样决策得到的决策树更加准确,这个决策树叫做多变量决策树(multi-variate decision tree),在选择最优特征的时候,多变量决策树不是选择某一个最优特征,而是选择最优的一个特征线性组合来做决策,这个算法的代表是OC1

如果样本发生一点点的改动,就会导致树结构的剧烈改变,可通过集成学习里面的随机森林之类的方法解决

四、cart剪枝

  • 横轴表示在决策树创建过程中树的结点总数,纵轴表示决策树的预测精度
  • 实线显示的是决策树在训练集上的精度,虚线显示的则是在一个独立的测试集上测量出来的精度
  • 随着树的增长,在训练样集上的精度是单调上升的, 然而在独立的测试样例上测出的精度先上升后下降

出现这种情况的原因:

  1. 噪声、样本冲突,即错误的样本数据
  2. 特征即属性不能完全作为分类标准
  3. 巧合的规律性,数据量不够大

 常用剪枝方式

  • 预剪枝
    • 每一个结点所包含的最小样本数目,例如10,则该结点总样本数小于10时,则不再分
    • 指定树的高度或者深度,例如树的最大深度为4
    • 指定结点的熵小于某个值,不再划分。随着树的增长, 在训练样集上的精度是单调上升的, 然而在独立的测试样例上测出的精度先上升后下降
  • 后剪枝:在已生成过拟合决策树上进行剪枝,可以得到简化版的剪枝决策树

学习导航:http://xqnav.top 

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

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

相关文章

PostgreSQL数据库查询执行——SeqScan节点执行

SeqScan节点代码处于src/backend/executor/nodeSeqscan.c文件中&#xff0c;包含了4个重要函数&#xff1a;ExecInitSeqScan、ExecSeqScan、ExecReScanSeqScan和 ExecEndSeqScan。 ExecInitSeqScan src/backend/executor/nodeSeqscan.c文件中的ExecInitSeqScan函数&#xff0c…

数智化转型给企业带来了什么?

数智化转型的核心价值之一在于对企业创智型活动的赋能&#xff0c;从用户需求趋势预测到创意快速验证&#xff0c;数智化应用具有巨大的价值前景。 因此&#xff0c;尽管目前数智化研发还存在着一定程度的复杂性高、不确定性大等问题&#xff0c;但因数智化研发所具有极大的潜…

C# 网络信息获取

一 网络信息浏览 1 HTTP协议 2 客户端与服务器 3 Request与Response 4 Stream 5 Get与Post 二 一些查看工具 1 Fiddler2 http://www.fidddler2.com 2 其他工具 如NetworkMoniter、Visula Sniffer、httpwatch、WireShark 3 Chrom/FireFox等浏览器F12 ① Chrome 中按F…

泛微齐业成,一文告诉你如何实现全程数字化的预算管理

新一代全程数字化费控管理软件-齐业成预算管理&#xff0c;实现从预算建模、预算编制、预算审批、预算管控、预算变更、预算分析、预算考评的全程数字化管理。 随着数字经济和数字社会的高速发展&#xff0c;预算管理已成为组织内部最重要的经营管理活动之一&#xff0c;其过程…

MySQL窗口函数 和 阿里云日志留存率统计脚本实现

窗口函数的官方描述&#xff1a;窗口函数对一组查询行执行类似聚合的操作。但是&#xff0c;虽然聚合操作将查询行分组为单个结果行&#xff0c;但窗口函数会为每个查询行生成一个结果&#xff0c;发生函数评估的行称为当前行&#xff0c;与发生函数评估的当前行相关的查询行构…

docker镜像导出和导入

1.容器镜像导出 我们先通过docker images查看需要导出的镜像 然后我们使用镜像导出命令 docker save -o /home/备份包名.tar 镜像id或镜像名 # -o(即output) 或 > 表示输出到文件备份镜像可以同时备份多个&#xff0c;空格分隔&#xff0c;这里建议使用镜像名备份&#xff…

DeepMind:用 GNN 学习通用推理算法

文 | 智商掉了一地小孩子才做选择&#xff0c;我的模型全&#xff01;都&#xff01;要&#xff01;近年来&#xff0c;基于深度神经网络的机器学习系统取得了巨大进步&#xff0c;尤其是在以感知为主的任务上。这一领域表现突出的模型通常要在分布中进行泛化&#xff0c;意味着…

Keras深度学习实战(43)——深度Q学习算法

Keras深度学习实战&#xff08;43&#xff09;——深度Q学习算法0. 前言1. Q 学习简介2. 使用 Q 学习进行 FrozenLake 游戏2.1 FrozenLake 环境分析2.2 模型分析2.3 使用 Q 学习算法解决 FrozenLake 问题3. 使用深度 Q 学习进行 CartPole 游戏3.1 问题分析3.2 模型分析3.3 使用…

通讯录怎么恢复?在 手机上检索找回已删除的电话号码的3种方式

不幸的是&#xff0c;我从手机中删除了一些号码&#xff0c;因此它也从帐户中删除了。我想恢复它们或将我的帐户恢复到一周前我拥有这些号码的日期。— 来自 Android 用户 像上述用户一样&#xff0c;您可能已经删除了一些电话号码&#xff0c;但希望有一天能恢复它们。这种事故…

python数据分析及可视化(十八)Power BI(数据获取、整理、清洗以及可视化、Power Query的基本操作、删除及增加列)

Power BI 微软推出的数据分析和可视化工具&#xff0c;用于在组织中提供见解&#xff0c;是商业分析工具&#xff0c;让视觉对象分析触手可及&#xff0c;可以创建交互式数据可视化效果和报表&#xff0c;连接数百个数据源、简化、准备数据等&#xff0c;并提供相应的分析&…

虚拟机Ubuntu设置固定IP与主机相互通讯

虚拟机Ubuntu设置固定IP与主机相互通讯1. 写在最前1.1 最好了解的预备知识1.2 虚拟机与主机三种连接方式1.3 写在最前2. VMware 虚拟机Ubuntu系统与主机共享IP2.1 配置VMware桥接网卡2.2 设置虚拟机为固定IP2.3 Vmware 虚拟机与主机互相通讯3. VirtualBox虚拟机Ubuntu系统与主机…

ContrastMask: Contrastive Learning to Segment Every Thing

摘要 部分监督实例分割是一种通过学习有限的base类和带注释的掩码来从novel类别中分割对象的任务&#xff0c;从而消除了沉重的注释负担。解决这一问题的关键是建立一个有效的类不可知掩码分割模型。与以前只在base类别上学习此类模型的方法不同&#xff0c;在本文中&#xff…

Nginx root 以及alias差别

1. 前言 今天的目的主要是梳理下在 nginx 中 root 以及 alias 在用法上有什么不同。其实这个问题看起来很简单。但是对于前端同学而言还是很困难的&#xff0c;毕竟有的前端同学都没弄过服务器 2. 结论 root 以及 alias 都是对 url 发起根目录进行控制。但是颗粒度有所不同roo…

【深基18.例3】查找文献(C++,图的遍历)

题目描述 小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个&#xff08;也有可能没有&#xff09;参考文献的链接指向别的博客文章。小K 求知欲旺盛&#xff0c;如果他看了某篇文章&#xff0c;那么他一定会去看这篇文章的参考文献&#xff08;如果他之前已经看过这篇参…

JavaScript 中如何代理 Set(集合) 和 Map(映射)

ECMAScript6 中 Set 和 Map 的代理方法上一节&#xff1a;《JavaScript 中如何代理数组 》| 下一节&#xff1a;《JavaScript 中的反射&#xff08;Reflect&#xff09;原理与应用 》今日正在编写中&#xff0c;未完待续… jcLee95 邮箱 &#xff1a;291148484163.com CSDN…

Git分支操作

实操记录 假定非管理人员操作&#xff1a; 直推&#xff1a; 新建特性分支cbry&#xff1a; 刷新分支&#xff1a; checkout切换&#xff1a; 本地文件查看&#xff1a; 再merge&#xff1a; 就此&#xff0c;master的代码就合并到特性分支cbry&#xff1a; 新增内容&#xff…

数字化技术转型

这篇老生常谈&#xff08;我写过N次&#xff09;&#xff0c;是应一位IM群中的朋友的困惑问答汇集而成的。&#xff08;1&#xff09;学科分类我上学学的是计算机系。我上的大学一开始并没有计算机系&#xff0c;后来是电子工程系和数学系的老师抽调组成了计算机系。后来&#…

申请大学用的是IB预估分?

IB课程体系以其独特的优越性成为越来越多国际高中生的选择。如今全球共有3300多所高校接受IB成绩申请&#xff0c;其中包括美国常春藤盟校、英国G5在内的多所名校。 但是&#xff0c;大家知道吗&#xff0c;国内学习IB课程的学生是需要用预估分来申请大学的。今天&#xff0c;小…

多用户及时通信系统

目录1. QQ用户登录1.1 用户登录11.2 用户登录21.3 用户登录32. 拉取在线用户3. 无异常退出4. 私聊系统5. 群聊3. 发送文件3.1 服务端推送新闻3.2 离线留言和离线发文件1. QQ用户登录 1.1 用户登录1 qqcommon包下 User类序列化 Message消息类序列化 MessType接口 qqclient.ut…

拉伯杠杆平台|沪指上涨,大金融板块领涨,有股票连续5涨停!

A股周二上午全体小幅上涨&#xff0c;大金融集体上涨&#xff0c;推动指数上行&#xff0c;商场全体动摇不大。A50期货高开高走&#xff0c;盘中暴拉超2.6%。 不过&#xff0c;部分个股仍然动摇不小&#xff0c;有多只股票接连涨停。 别的&#xff0c;新股持续分解&#xff0c…