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

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

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

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

一、ID3算法的局限性

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

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

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

(2)计算成本高

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

二、举例说明ID3的局限性

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

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

姓名 身高(cm) 体重(kg) 性别
A 170 70
B 169 70
C 180 80
D 155 50
E 175 75
F 160 52
G 178 85
H 163 57
I 171 66
J 158 53
[假设数据集]

(1)计算性别的信息熵

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

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

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

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

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

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

再用减去条件信息熵得到信息增益:

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

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

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

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

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

先算出条件信息熵:

再相减得到信息增益:

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

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

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

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

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

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

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

其中,是数据集的信息熵,是在属性给定的条件下的信息熵。

(2)分裂信息(Split Information)

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

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

(3)增益率(Gain Ratio)

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

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

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

相关推荐
软工菜鸡26 分钟前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert
南宫生28 分钟前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
AI视觉网奇1 小时前
sklearn 安装使用笔记
人工智能·算法·sklearn
正义的彬彬侠1 小时前
【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价
python·机器学习·sklearn
资源补给站1 小时前
论文2—《基于柔顺控制的智能神经导航手术机器人系统设计》文献阅读分析报告
机器学习·机器人·手术机器人
JingHongB1 小时前
代码随想录算法训练营Day55 | 图论理论基础、深度优先搜索理论基础、卡玛网 98.所有可达路径、797. 所有可能的路径、广度优先搜索理论基础
算法·深度优先·图论
weixin_432702261 小时前
代码随想录算法训练营第五十五天|图论理论基础
数据结构·python·算法·深度优先·图论
小冉在学习1 小时前
day52 图论章节刷题Part04(110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长 )
算法·深度优先·图论
Repeat7151 小时前
图论基础--孤岛系列
算法·深度优先·广度优先·图论基础
小冉在学习1 小时前
day53 图论章节刷题Part05(并查集理论基础、寻找存在的路径)
java·算法·图论