【机器学习300问】135、决策树算法ID3的局限性在哪儿?C4.5算法做出了怎样的改进?

news2024/11/26 13:24:48

        ID3算法是一种用于创建决策树的机器学习算法,该算法基于信息论中的信息增益概念来选择最优属性进行划分。信息增益是原始数据集熵与划分后数据集熵的差值,熵越小表示数据集的纯度越高。有关ID3算法的详细步骤和算法公式在我之前的文章中谈到,大家可以回顾一下:

【机器学习300问】33、决策树是如何进行特征选择的?icon-default.png?t=N7T8https://blog.csdn.net/qq_39780701/article/details/136660493

本文想讨论的是,ID3算法的局限性,以及为了避免其局限,人们提出的改进算法——C4.5

一、ID3算法的局限性

        废话不多说,让我们直接列出其局限性,然后通过一个具体的任务例子来感受一下,在特定场景下ID3是如何犯错的。

(1)偏好特征值多的属性

        ID3使用信息增益作为属性选择的指标,这一度量倾向于选择取值较多的属性,即使这些属性并不一定最具区分能力,可能导致生成的决策树偏向局部最优解而非全局最优。

(2)计算成本高

        随着数据集规模的增大,ID3算法的计算成本显著增加,对每个特征,都需要计算其信息增益,这涉及到了对数据集的遍历和对数运算,特别是在大数据集上,这一步骤可能相当耗时。

二、举例说明ID3的局限性

        第二点计算成本高,就不用说了,很直观就能感受到。主要是第一个“偏好选择特征值多的属性”是个什么意思呢?下面看个例子:

        有10个样本,三个特征(姓名、身高、体重),目标是预测性别(男、女)。为了明确说明问题,假设数据集中姓名的特征值最多,且姓名与性别之间没有明显的关联,而身高和体重则与性别有较强的关联性。

假设数据集
姓名身高(cm)体重(kg)性别
A17070
B16970
C18080
D15550
E17575
F16052
G17885
H16357
I17166
J15853

(1)计算性别的信息熵

        首先,计算整个数据集关于性别的熵。数据集中有5个男性和5个女性,因此熵为:

 H(D)=-\frac{5}{10}log_2 \frac{5}{10}-\frac{5}{10}log_2 \frac{5}{10}=1.0

(2)分别计算三种属性的信息增益 

① 计算按照身高属性来划分性别的信息增益

        假设身高在一定程度上与性别相关联,我们以身高170cm为阈值来进行划分。则从表中可知:

  • 男生5人,大于等于170的有4人,小于170的有1人。
  • 女生5人,大于等于170的有1人,小于170的有4人。

通过条件信息熵的公式计算得出: 

\frac{5}{10}[-\frac{4}{5}log_2\frac{4}{5}-\frac{1}{5}log_2\frac{1}{5}]+\frac{5}{10}[-\frac{1}{5}log_2\frac{1}{5}-\frac{4}{5}log_2\frac{4}{5}]\approx 0.72

再用H(D)减去条件信息熵得到信息增益:

IG(h)=1.0-0.72=0.28

② 计算按照体重属性来划分性别的信息增益

        我们按照体重大于等于70,和小于70来划分男生和女生,可以从表中得知,通过这样的阈值:

  • 体重大于等于70的子集熵为0(全为男性)
  • 体重小于70的子集熵也为0(全为女性)

IG(w)=1.0-0=1

③ 计算按照姓名属性来划分性别的信息增益

        由于姓名是高度特定的,假设每个姓名都独一无二,且与性别无关联。由于有10个不同的姓名,总的信息增益计算如下:

先算出条件信息熵:

\frac{1}{10}\times [-\frac{1}{1}log_2\frac{1}{1}]\times 10=0

再相减得到信息增益:

IG(g)=1.0-0=1

 (3)对比信息增益选择节点属性

        从上面的例子可以看出,ID3算法将姓名这种我们人类明显能看出和性别划分没什么关系的属性的信息增益也计算的非常高,在这个例子中,甚至和体重属性拥有一样的信息增益,显然不合理!

        根据ID3算法的逻辑,如果仅考虑信息增益大小,算法可能会错误地认为姓名是一个有效的特征,因为它考虑了每个特征的取值数量,而没有充分评估这些特征对目标变量的实际区分能力。

二、C4.5算法如何改进的?

        C4.5算法通过引入一个新的属性选择度量——信息增益率(Gain Ratio),改进了ID3算法中“偏好特征值多的属性”的缺点。C4.5算法使用“增益率”(Gain Ratio)来选择属性,增益率是对信息增益进行规范化的一个指标。

(1)信息增益(与ID3相同)

        通过选择具有最高信息增益的属性来分割数据。信息增益【分子】由下式给出:

Gain(D, A) = H(D) - H(D|A)

        其中,H(D)是数据集D的信息熵,H(D|A)是在属性A给定的条件下D的信息熵。

(2)分裂信息(Split Information)

        分裂信息度量了分裂(即按属性A的不同取值划分数据集)的信息量,定义为:

SplitInfo(D, A) = -\sum_{v=1}^{V} \frac{|D^v|}{|D|} \log_2 \frac{|D^v|}{|D|}

        其中,在属性A上有V个不同的取值,|D^v|是属性A上取值为v的集合的大小。这个分裂信息,可以理解成属性本身的混乱程度【分母】

(3)增益率(Gain Ratio)

        为了减少对多值属性的偏向,C4.5算法使用增益率选择属性,定义为:

GainRatio(D, A) = \frac{Gain(D, A)}{SplitInfo(D, A)}

        C4.5算法就是选择增益率最大的属性作为分割属性。

        C4.5算法还引入了树的剪枝过程,以简化决策树结构和减少过拟合现象。剪枝是在构建完整的决策树后进行的,它通过移除掉决策树中那些能够将训练集分类效果提升而对验证集分类效果不产生大的影响的节点来实现。这样,C4.5算法生成的决策树通常比ID3算法生成的决策树泛化能力更强。

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

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

相关文章

临时文件上传系统Plik

什么是 Plik ? Plik 是一个基于 Go 语言的可扩展且用户友好的临时文件上传系统(类似于 Wetransfer)。 软件主要特点: 强大的命令行客户端易于使用的 Web 用户界面多个数据后端:文件、OpenStack Swift、S3、Google Clo…

单调队列优化DP——AcWing 135. 最大子序和

单调队列优化DP 定义 单调队列优化DP是一种在动态规划(Dynamic Programming, DP)中应用的数据结构优化方法。它利用单调队列(Monotonic Queue)这一数据结构来高效维护一个区间内的最值(通常是最大值或最小值&#xf…

特斯拉下一代自动驾驶芯片的深度预测

引言 特斯拉一直以来都在自动驾驶技术上不断突破,随着AI大模型技术的爆发,其下一代自动驾驶芯片(HW5.0)也备受瞩目。本文将深入分析和预测特斯拉下一代自动驾驶芯片AI5的技术特点及其对行业的影响。 深入技术分析 现有自动驾驶…

【电机控制】EG2134无刷电机驱动板——最小核心板STM32F103C8T6,开环、无感SMO验证

【电机控制】EG2134无刷电机驱动板——最小核心板STM32F103C8T6,开环、无感SMO验证 文章目录 前言一、硬件二、软件三、开环SVPWM四、SMO无感观测器五、参考文献总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具: 1.控制器&…

大创项目推荐 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

linux 文件管理

一、linux文件命名规则 1.可使用字符&#xff1a;所有字符都可使用&#xff0c;不建议使用"<、>、&#xff1f;、*"等特殊字符 正常文件命名规则&#xff1a; 1.尽量使用小写 2.在需要对文件名分割时&#xff0c;建议使用“_”&#xff0c;chen_2004_06_28…

【高中数学之基本不等式】已知:a,b皆为正实数且1/a+1/(b+2)=1/2 求:a+b的最小值?

解&#xff1a;先从1/a1/(b2)1/2 入手&#xff0c;看能否化二为一&#xff08;将两变量化成一个变量&#xff09; 由1/a1/(b2)1/2 两边通分得(b2a)/a/(b2)1/2 交叉相乘得2a2b4ab2a 最后得到a24/b 所以ab24/bb 此时已经可以用基本不等式了 ab24/bb>22*根号下(4/b*b)22…

CSS 核心知识点 - grid

思维导图 参考网址: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_grid_layout 一、什么是 grid&#xff1f; CSS Grid布局是在CSS3规范中引入的一种新的布局方式&#xff0c;旨在解决传统布局方法&#xff08;如浮动、定位、表格布局&#xff09;存在的许多问题。C…

运行CDN

背景 CDN代码&#xff0c;调试运行 日常 git clone代码配置虚拟环境 puthon3.8,pip install r requirements.txt改项目数据集路径&#xff0c;在hico.py文件里面 # PATHS {# train: (root / images / train2015, root / annotations / trainval_hico.json),# val: …

【Python】已解决:ModuleNotFoundError: No module named ‘nltk‘

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘nltk‘ 一、分析问题背景 在Python编程中&#xff0c;我们常常需要使用第三方库来扩展语言的功能和应用场景。NLTK&am…

DataWhale-吃瓜教程学习笔记(四)

学习视频&#xff1a;第3章-二分类线性判别分析_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 3.4 文章目录 - 算法原理- 损失函数推导-- 异类样本中心尽可能远-- 同类样本方差尽可能小-- 综合 知识点补充 - 二范数二范数&#xff08;2-norm&#xff09;详解定义几何意义性质…

Bridging nonnull in Objective-C to Swift: Is It Safe?

Bridging nonnull in Objective-C to Swift: Is It Safe? In the world of iOS development, bridging between Objective-C and Swift is a common practice, especially for legacy codebases (遗留代码库) or when integrating (集成) third-party libraries. One importa…

链表-求链表中环的入口结点(easy)

目录 一、问题描述 二、解题思路 三、代码实现 四、刷题链接 一、问题描述 二、解题思路 本题基本思路&#xff1a; 1.设置一个hashSet来存储已经访问过的链表结点地址&#xff0c;注意不要直接存储链表内元素&#xff0c;因为链表内元素可能存在重复的&#xff0c;地址是不…

APP项目测试 之 开发模型和发布

项目客户端一般分为&#xff1a;浏览器端和APP端 APP端分为&#xff1a;手机端&#xff08;安装在手机上的软件&#xff09;和PC端&#xff08;安装在电脑上的软件&#xff09; 1.开发模型 项目迭代速度不同&#xff1a;开发模型不一样 传统行业&#xff1a;瀑布模型 互联网行业…

C++实现简化版Qt信号槽机制(2):增加内存安全保障

在上一篇文章中《C实现一个简单的Qt信号槽机制》&#xff0c;我们基于前面的反射代码实现了信号槽的功能。 但是上一篇的代码中没有对象生命周期管理的机制&#xff0c;如果在对象的生命周期结束后还存在未断开的信号和槽连接&#xff0c;那么信号触发时可能会尝试访问已经被析…

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及&#xff0c;智能家居行业正迎来新的发展机遇&#xff0c;众多厂商纷纷投身于 Matter 产品的研发与验证。然而&#xff0c;开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。 乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行…

AI周报(6.23-6.29)

AI应用-巴西医生成功用Vision Pro做手术 巴西外科医生布鲁诺戈巴托&#xff08;Bruno Gobbato&#xff09;在2024年4月22日首次成功使用Apple Vision Pro进行了肩袖撕裂的手术。这次手术采用了肩关节镜技术&#xff0c;通过关节内的摄像头捕捉图像&#xff0c;并通过高分辨率的…

建议csdn赶紧将未经作者同意擅自锁住收费的文章全部解锁,别逼我用极端手段让你们就范

前两天我偶然发现csdn竟然将我以前发表的很多文章锁住向读者收费才让看。 csdn这种无耻行径往小了说是侵犯了作者的版权著作权&#xff0c;往大了说这是在打击我国IT领域未来的发展&#xff0c;因为每一个做过编程工作的人都知道&#xff0c;任何一个程序员的学习成长过程都少不…

校企携手,探索“最强大脑”电子科技大学特聘研究员Minati教授访问阿尔泰科技:探索大脑与电子系统的交叉点

近日&#xff0c;成都电子科技大学意籍著名教授Minati教授应邀访问了阿尔泰科技&#xff0c;展开了一场富有深度和成果的学术交流。作为一位专注于大脑和电子系统非线性动力学研究的领军人物&#xff0c;Minati教授此次访问旨在探索科技前沿&#xff0c;特别是关注阿尔泰科技的…

fiddler抓https包

1&#xff0c;安装fiddler省略 2&#xff0c;下载证书步骤&#xff1a;tools-options-https 点击确认&#xff0c;点击OK&#xff0c;点击是 把证书安装到谷歌浏览器上步骤&#xff1a;点击谷歌浏览器右上角的设置&#xff0c;在搜索框中搜索证书&#xff0c;点击“证书管理”…