决策树 | 分裂算法:ID3,C4.5,CART

这里写目录标题

  • [一. ID3算法](#一. ID3算法)
    • [1. 信息增益](#1. 信息增益)
    • [2. ID3算法特点](#2. ID3算法特点)
  • [二. C4.5算法](#二. C4.5算法)
    • [1. 信息增益率](#1. 信息增益率)
    • [2. C4.5算法特点](#2. C4.5算法特点)
  • [三. CART算法](#三. CART算法)
    • [1. Gini系数公式](#1. Gini系数公式)
    • [2. CART算法特点](#2. CART算法特点)
    • [3. CART回归树的分裂评价指标](#3. CART回归树的分裂评价指标)
  • 小节

决策树算法逻辑篇中,我们讲解了决策树的构建方式,下面我们来聊一聊决策树中常用的三个算法

一. ID3算法

1. 信息增益

ID3算法是构造决策树的一个经典算法

复制代码
	使用信息熵以及信息增益来进行构建
	每次迭代选择信息增益最大的特征属性作为分割属性

2. ID3算法特点

  1. ID3算法只支持离散的特征属性,不支持连续的特征属性
  2. 若想处理连续的特征属性,要先对连续值进行离散化处理
  3. ID3算法构建的是多叉树,不保证二叉树

详细过程参考决策树算法逻辑篇中的银行示例

二. C4.5算法

对于ID3算法以信息增益为划分的标准,可以发现存在这样一种极端:

当收入按照60,80,87.5,95划分为五叉树时,可以直接得到熵为0的五个叶子节点,且此时系统的信息增益最大

此方案进行划分时,只需一次分裂就可以建好决策树

但是,显然上述这种情况下的划分并不合理;为了解决信息增益划分时的不合理情况,我们引入信息增益率的概念

1. 信息增益率

C4.5算法

复制代码
	使用信息增益率来进行构建
	每次迭代选择信息增益率最大的特征属性作为分割属性

G a i n − r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain-ratio(D,a) = \frac{Gain(D,a)}{IV(a)} Gain−ratio(D,a)=IV(a)Gain(D,a)

G a i n ( D , a ) Gain(D,a) Gain(D,a):信息增益
I V ( a ) IV(a) IV(a):属性a的固有值

I V ( a ) = − ∑ v = 1 v ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ IV(a) = -\sum_{v=1}^{v}\frac{|D^{v}|}{|D|}\log_{2}{\frac{|D^{v}|}{|D|}} IV(a)=−v=1∑v∣D∣∣Dv∣log2∣D∣∣Dv∣

例子:

房子样本4个是,6个否
I V ( 房产 ) = − 4 10 log ⁡ 2 4 10 − 6 10 log ⁡ 2 6 10 = 3.747 IV(房产) = -\frac{4}{10}\log_{2}{\frac{4}{10}} -\frac{6}{10}\log_{2}{\frac{6}{10}}=3.747 IV(房产)=−104log2104−106log2106=3.747

婚姻样本4个单身,3个已婚,3个离婚
I V ( 婚姻 ) = − 4 10 log ⁡ 2 4 10 − 3 10 log ⁡ 2 3 10 − 3 10 log ⁡ 2 3 10 = 4.003 IV(婚姻) = -\frac{4}{10}\log_{2}{\frac{4}{10}} -\frac{3}{10}\log_{2}{\frac{3}{10}}-\frac{3}{10}\log_{2}{\frac{3}{10}}=4.003 IV(婚姻)=−104log2104−103log2103−103log2103=4.003

2. C4.5算法特点

复制代码
	C4.5算法以信息增益率为划分标准
		有效避免了叉越多,信息增益越大的影响
	
	结合上面的公式分析,我们可以得出:
		树分支越多,IV(a)固有属性越大,信息增益率也就相对越小
  1. 在树的构造过程中会进行剪枝操作进行优化
  2. 能够自动完成对连续属性的离散化处理
  3. C4.5构建的是多分支的决策树

三. CART算法

1. Gini系数公式

CART算法

复制代码
	采用Gini系数来衡量划分的有效性

G i n i = ∑ i = 1 n [ p i ∗ ( 1 − p i ) ] = 1 − ∑ i = 1 n p i 2 Gini = \sum_{i=1}^{n}[p_{i}*(1-p_{i})] =1-\sum_{i=1}^{n}p_{i}^{2} Gini=i=1∑n[pi∗(1−pi)]=1−i=1∑npi2

2. CART算法特点

  1. 选择gini增益最大的属性作为当前数据集的分割属性
  2. 可用于分类和回归两类问题
  3. CART构建是二叉树

3. CART回归树的分裂评价指标

MSE均方误差划分指标:

复制代码
	样本越集中,值越小,划分越好

M S E = 1 n ∑ i = 1 n ( y i − y ˉ i ) 2 MSE=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\bar{y}_{i})^{2} MSE=n1i=1∑n(yi−yˉi)2

MAE绝对误差划分指标:
M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-\hat{y}_{i}| MAE=n1i=1∑n∣yi−y^i∣

小节

  • ID3,C4.5,CART三种算法适用在小规模数据集上,即内存要能装得下

  • ID3,C4.5,CART采用单变量决策树

    复制代码
      	单变量的决策树:每次分裂时只选择了一个特征进行分裂
      		实际现实任务时每次只选择一个特征进行分裂效果并不好
      		因此我们希望一次分裂时综合考虑好几个特征,组合成一个综合条件,但此时模型会相对复杂,计算量大
  • 一般采用CART算法构造树,ID3和C4.5算法在sklearn库中没有真正实现

  • 回归树中,叶子节点的预测值一般为叶子节点中所有值的均值

  • 分类树中,叶子节点的预测值一般为叶子节点中概率最大的类别

注意:三种算法的主要区别在于划分指标不同

本质区别在于是否为二叉树

复制代码
	也就说,CART算法的划分指标当然也可以选用信息增益率来划分
	只要明确构建的树为二叉树,那么关于ID3存在的问题和C4.5想要解决的问题也就不存在了

感谢阅读🌼

如果喜欢这篇文章,记得点赞👍和转发🔄哦!

有任何想法或问题,欢迎留言交流💬,我们下次见!

本文相关代码存放位置

[决策树 基于鸢尾花数据集的分类]

祝愉快🌟!


相关推荐
Mintopia几秒前
🌟 Gemini 3.0 Pro:Google 的「多模态巨灵」新篇章
人工智能·gemini·trae
Mintopia4 分钟前
🌐 跨平台 WebAIGC 适配:当 AI 遇上屏幕尺寸差异的爱恨情仇
人工智能·aigc·trae
LO嘉嘉VE26 分钟前
学习笔记十七:神经网络基础概念
笔记·神经网络·学习·机器学习
天地之于壹炁兮27 分钟前
用VSCode打造高效AI开发环境:从配置到实战
ide·人工智能·vscode
孤狼warrior31 分钟前
我想拥有作家的思想 循环神经网络及变型
人工智能·rnn·深度学习·神经网络·lstm
@卞36 分钟前
高阶数据结构 --- 单调队列
数据结构·c++·算法
极客BIM工作室1 小时前
BERT模型中词汇表向量与网络权重:从属关系与不可替代的功能分工
人工智能·自然语言处理·bert
八年。。1 小时前
Ai笔记(二)-PyTorch 中各类数据类型(numpy array、list、FloatTensor、LongTensor、Tensor)的区别
人工智能·pytorch·笔记
百***68821 小时前
开源模型应用落地-工具使用篇-Spring AI-Function Call(八)
人工智能·spring·开源
许泽宇的技术分享1 小时前
从零到一,开源大模型的“民主化“之路:一份让AI触手可及的实战宝典
人工智能·开源·大模型