【机器学习】决策树-C4.5算法

news/2024/5/17 13:34:52/文章来源:https://blog.csdn.net/weixin_44750512/article/details/129120221

1.C4.5算法 

        C4.5算法与ID3相似,在ID3的基础上进行了改进,采用信息增益比来选择属性。ID3选择属性用的是子树的信息增益,ID3使用的是熵(entropy, 熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率

2.信息增益率

        在ID3算法中,显然属性的取值越多,信息增益越大。为了避免属性取值个数的影响,C4.5算法从候选划分中找出信息增益高于平均水平的属性,再从中选出信息增益率(用信息增益除以该属性本身的固有值(Intrinsic value)最高的分类作为分裂规则。信息增益比本质就是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。信息增益比就等于惩罚参数 * 信息增益。

2-1 信息增益率

        信息增益率:增益率是用前面的信息增益Gain(D, a)和属性a对应的"固有值"(intrinsic value)的比值来共同定义的。属性 a 的可能取值数目越多(即 V 越大),则 IV(a) 的值通常会越大。

2-2 案例 

         根据‘天气’,‘温度’,‘湿度’,‘风速’四个属性判断活动是否进行(进行、取消)。

         该数据集有四个属性,属性集合A={ 天气,温度,湿度,风速}, 类别标签有两个,类别集合L={进行,取消}。

 a.计算类别信息熵

        类别信息熵表示的是所有样本中各种类别出现的不确定性之和。根据熵的概念,熵越大,不确定性就越大,把事情搞清楚所需要的信息量就越多。

 b.计算每个属性的信息熵
        每个属性的信息熵相当于一种条件熵。他表示的是在某种属性的条件下,各种类别出现的不确定性之和。属性的信息熵越大,表示这个属性中拥有的样本类别越不“纯”。

c.计算信息增益

        信息增益的 = 熵 - 条件熵,在这里就是 类别信息熵 - 属性信息熵,它表示的是信息不确定性减少的程度。如果一个属性的信息增益越大,就表示用这个属性进行样本划分可以更好的减少划分后样本的不确定性,当然,选择该属性就可以更快更好地完成我们的分类目标。

d.计算属性分裂信息度量
        用分裂信息度量来考虑某种属性进行分裂时分支的数量信息和尺寸信息,我们把这些信息称为属性的内在信息(instrisic information)。信息增益率用信息增益/内在信息,会导致属性的重要性随着内在信息的增大而减小(也就是说,如果这个属性本身不确定性就很大,那我就越不倾向于选取它),这样算是对单纯用信息增益有所补偿。

e.计算信息增益率

        天气的信息增益率最高,选择天气为分裂属性。发现分裂了之后,天气是“阴”的条件下,类别是”纯“的,所以把它定义为叶子节点,选择不“纯”的结点继续分裂。 

3.总结

3-1优点与改进

        C4.5算法是用于生成决策树的一种经典算法,是ID3算法的一种延伸和优化。C4.5算法对ID3算法主要做了一下几点改进:

        (1)通过信息增益率选择分裂属性,克服了ID3算法中通过信息增益倾向于选择拥有多个属性值的属性作为分裂属性的不足;

        (2)能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理;

        (3)构造决策树之后进行剪枝操作;

        (4)能够处理具有缺失属性值的训练数据。 C4.5算法训练的结果是一个分类模型,这个分类模型可以理解为一个决策树,分裂属性就是一个树节点,分类结果是树的结点。每个节点都有左子树和右子树,结点无左右子树。

        (5)C4.5采用二分法处理连续特征,将连续特征进行排列,将连续两个值的中间值作为分裂节点,将小于该值和大于该值的样本分为两个类别,找到信息增益最大的分裂点,本质上还是用的离散特征。需注意的是,与离散属性不同,若当前节点划分属性为连续属性,该属性还可作为其后代节点的划分属性。

        (6)在属性值缺失的情况下划分属性,将数据集分成两部分:没有缺失值的部分、有缺失值的部分。对每个样本设置一个权重,将没有缺失值的部分按照占据总样本的比例计算信息增益率,并乘上所占比例。

        (7)给定划分属性,若样本在该属性上缺失时,若样本x在划分属性a上的取值未知,则将x同时划入所有子节点,且样本权值按所占比例和样本权值进行调整。直观地看,这就是让同一个样本以不同的概率划入到不同的子节点中。

3-2 缺点

  1. 信息增益率采用熵的计算,里面有大量耗时的对数计算。
  2. 多叉树的计算效率不如二叉树高。
  3. 决策树模型容易过拟合,所以应该引入剪枝策略进行处理。

Reference:

        1.https://www.cnblogs.com/yuyingblogs/p/15319571.html

        2.决策树(ID3、C4.5与CART)——从信息增益、信息增益率到基尼系数_戎梓漩的博客-CSDN博客_cart id3 c4.5

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

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

相关文章

Kaldi语音识别技术(六) ----- DTW和HMM-GMM

Kaldi语音识别技术(六) ----- DTW和HMM-GMM 文章目录Kaldi语音识别技术(六) ----- DTW和HMM-GMM前言一、语音识别概况二、语音识别基本原理三、DTW(动态时间弯折)算法四、GMM-HMM前言 前面的内容中我们完成了特征的提取,那么本章节我们主要进行理论部分…

2023爱分析· 云管理服务(MSP)市场厂商评估报告:华创方舟

目录 1. 研究范围定义 2. 云管理服务(MSP)市场定义 3. 厂商评估:华创方舟 4. 入选证书 1. 研究范围定义 数字化时代,应用成为企业开展各项业务的落脚点。随着业务的快速发展,应用的功能迭代变得越来越…

VSCode Remote-SSH配置免密登录踩坑

VSCode Remote-SSH配置免密登录踩坑1. 参考2. 基本流程2.1 机器A(Windows客户端)2.2 机器B(Linux服务器)2.3 机器A(Windows客户端)的VSCode设置3. 踩坑总结相关教程很多,但要么冗余,…

Elasticsearch:提升 Elasticsearch 性能

Elasticsearch 是为你的用户提供无缝搜索体验的不可或缺的工具。 在最近的 QCon 会议上,我遇到了很多的开发者。在他们的系统中,Elastic Stack 是不可缺少的工具,无论在搜索,可观测性或安全领域,Elastic Stack 都发挥着…

秒懂算法 | 莫队算法

01、基础莫队算法 莫队算法 = 离线 + 暴力 + 分块。 “离线”和“在线”的概念。在线是交互式的,一问一答;如果前面的答案用于后面的提问,称为“强制在线”。离线是非交互的,一次性读取所有问题,然后一起回答,"记录所有步,回头再做”。 基础的莫队算法是一种离线…

dubbo SPI之依赖注入、禁止依赖注入@DisableInject

本文基于dubbo2.7.7分析 dubbo SPI如何实现依赖注入如何禁用dubbo的依赖注入 使用标准Setter方法依赖注入 dubbo的SPI默认支持依赖注入功能, 在SPI的实现类中,只要写标准的Setter方法即可, 示例如下: public class CustomInterfaceImpl implements CustomInterf…

6 大经典机器学习数据集,3w+ 用户票选得出,建议收藏

内容一览:本期汇总了超神经下载排名众多的 6 个数据集,涵盖图像识别、机器翻译、遥感影像等领域。这些数据集质量高、数据量大,经历人气认证值得收藏码住。 关键词:数据集 机器翻译 机器视觉 数据集是机器学习模型训练的基础&…

LeetCode——51. N 皇后

一、题目 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案…

为什么会有跨域问题,代理是怎么解决的?

📖 文章导航关于跨域问题同源策略跨域资源共享解决方案前端代理后端服务端代理关于跨域问题 同源策略 同源策略(Same-origin policy)是浏览器中一个重要的安全策略,它用于限制不同源之间的资源交互。其目的是为了帮助阻隔恶意文…

系列五、docker常见报错

一、运行mysql服务报错 1.1、查看3306端口被哪个服务监听 netstat -nap | grep 3306 1.2、杀死进程 kill 1851 1.3、关闭容器 docker stop 3185bc93893e 1.4、再次运行mysql服务 docker run --name mysql8.0.26 -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf/m…

业内人士告诉你,买流量卡时一定要问的几个问题?

互联网时代,流量当然是至关重要,但是,在网上搜索流量卡时,广告可谓是铺天盖地,五花八门,所以,小编提醒大家,为了选择性价比较高的卡,在购买流量卡时一定要关注几个问题。…

怎么配置最流行的智能聊天工具

注册OpenAI账号 1.打开https://beta.openai.com/signup 页面进行相应的注册。 2.此处需要输入邮箱进行注册并且提示到邮箱验证 3.注册没有问题的话,会提示你已经发送到对应邮箱,进行邮箱验证 此处需要注意下:邮箱验证需要进行翻墙进行验证…

100种思维模型之九屏幕分析思维模型-016

一、认识九屏幕分析思维模型 1.九屏幕分析思维模型定义 九屏幕法是TRIZ理论中的创新思维方法五大方法之一。它是把问题当成一个系统来研究, 关注系统的整体性、 层级性、目的性,即各要素之间的结构。 九屏幕法是按照时间和系统层次两个维度进行思考。 包…

windows版Rsync服务端和客户端cwRsync_4.1.0安装测试

下载地址:https://download.csdn.net/download/qq_32421489/87463506 服务端安装: cwRsyncServer(服务端)配置步骤 1.双击运行wRsyncServer_4.1.0_Installer.exe。 2.这里创建的账户是操作系统的,创建的这个账户是专…

使用Fabric.js实现贝塞尔曲线波浪特效

一、前言 本文是在此基础上收到启发然后进行的变化,当然,观看与否不会影响接下来的阅读体验。 二、实现思路 其实整个波浪动画其实可以看成:在相对坐标系静止的视角下,一个正弦函数在直角坐标系上匀速平移时我们所观察到的效果…

【基础语法】JavaScript 全栈体系(三)

JavaScript 基础 第三章 常量 一、常量的基本使用 概念:使用 const 声明的变量称为“常量”。使用场景:当某个变量永远不会改变的时候,就可以使用 const 来声明,而不是let。命名规范:和变量一致常量使用 // 声明一…

面试官:你是怎样理解Fiber的

hello,这里是潇晨,今天我们来聊一聊Fiber。不知道大家面试的时候有没有遇到过和react Fiber相关的问题呢,这一类问题比较开放,但也是考察对react源码理解深度的问题,如果面试高级前端岗,恰巧你平时用的是re…

【Linux】——基础开发工具和vim编辑器的基本使用方法

目录 Linux 软件包管理器 yum Linux编辑器-vim使用 1.vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4. vim末行模式命令集 如何配置vim Linux 软件包管理器 yum yum是Linux下的一个下载软件的软件 对于yum,现阶段只需要会使用yum的三板斧就…

2023赏金计划:Coremail SRC漏洞征集与样本奖励火热进行中

赏金活动一:Coremail SRC漏洞奖励计划 01 活动背景 2023年1月,Coremail安全应急响应中心(Coremail SRC)正式上线启用,面向公众收集安全漏洞信息与安全情报。Coremail SRC旨在联合众多安全专家、白帽子研究员共同发现…

你看,ChatGPT都知道优先使用BigDecimal

不是三婶儿偏执,非要吐槽。家人们,咱就是说,按照基操逻辑谁会把严格金额计算相关的数据使用double类型呢… “我以为吕布已经够勇猛了,这是谁的部下?” 前几天,一同事让帮忙写段代码。内容比较常规&#xf…