决策树:ID3、C4.5和CART特征选择方式

1 前言

该文章主要目的是记录ID3、C4.5和CART特征选择方式,这里只对决策树进行简单介绍。

决策树(Decision Tree)算法是一种有监督学习算法,它利用分类的思想,根据数据的特征构建数学模型,从而达到数据的筛选和决策的目标。它的重点是将看似无序、杂乱的已知数据,通过某种技术手段转化成可以预测未知数据的树状模型。每一条从根节点(对最终分类结果贡献最大的属性)到叶子节点(最终分类结果)的路径都代表一条决策的规则。

在预测时,从根节点出发,根据特征实际值,转移至某个子节点,直至叶子节点,从而完成决策。

在决策树构建的过程中,首先由所有的数据构成根节点,根据某种策略对某个特征进行划分,数据集被分割成若干份,每一份构成一个子节点。进而对子节点继续划分,直至决策树生成完毕。

常用的决策树构建算法有ID3、C4.5和CART等,它们之间关键区别是用于划分数据集的特征的选择策略不同,以下对其策略进行介绍。

2 ID3

ID3算法使用信息增益指导决策树的划分。

首先介绍概念: 。熵表示随机变量不确定性的度量。先给出公式:
I n f o ( Y ) = − ∑ y p ( y ) log ⁡ p ( y ) Info(Y)=-\sum_{y}{p(y)\log{p(y)}} Info(Y)=−∑yp(y)logp(y)

对于决策树中的某一个节点,可以通过上述公式计算熵,其中 Y Y Y表示类别, y y y表示具体的类别值。熵越小越好。
信息增益 表示特征 A A A使得类Y的不确定性减小的程度。公式如下:
G a i n ( D , A ) = I n f o ( D ) − I n f o ( D , A ) Gain(D,A)=Info(D)-Info(D,A) Gain(D,A)=Info(D)−Info(D,A)

D是数据集, A A A表示被划分的特征。 I n f o ( D ) Info(D) Info(D)表示某个节点的熵, I n f o ( X , D ) Info(X,D) Info(X,D)表示当前节点按照 A A A划分之后,得到的子节点的熵的加权和。
I n f o ( D , A ) = ∑ a ∣ D A = a ∣ ∣ D ∣ I n f o ( D A = a ) Info(D,A)=\sum_{a}{\frac{|D_{A=a}|}{|D|}Info(D_{A=a})} Info(D,A)=∑a∣D∣∣DA=a∣Info(DA=a)
D A = a D_{A=a} DA=a表示 A A A为a的样本组成的子节点,权重是 D A = a D_{A=a} DA=a的样本数量与 D D D的样本数量的比值。

每次划分,计算每个特征的 G a i n ( D , A ) Gain(D,A) Gain(D,A),选择 G a i n ( D , A ) Gain(D,A) Gain(D,A)最大的特征划分数据集。

3 C4.5

C4.5相比于ID3的主要区别是使用信息增益率 替代信息增益。信息增益率是信息增益与自身熵 I V ( D , A ) IV(D,A) IV(D,A)的比值。
G a i n _ r a t i o ( D , A ) = G a i n ( D , A ) I V ( D , A ) Gain\_ratio(D,A)=\frac{Gain(D,A)}{IV(D,A)} Gain_ratio(D,A)=IV(D,A)Gain(D,A)

自身熵表示当前节点划分的程度,划分的子节点越少,越均匀,自身熵越小,信息增益率越大。
I V ( D , A ) = − ∑ a ∣ D A = a ∣ ∣ D ∣ log ⁡ ∣ D A = a ∣ ∣ D ∣ IV(D,A)=-\sum_a{\frac{|D_{A=a}|}{|D|}\log{\frac{|D_{A=a}|}{|D|}}} IV(D,A)=−∑a∣D∣∣DA=a∣log∣D∣∣DA=a∣

每次划分,计算每个特征的信息增益率,选择信息增益率最大的特征划分数据集。

4 CART

相比于上面的方法,CART使用基尼(Gini)指数 选择特征。

基尼(Gini)指数使用 p ( y ) ( 1 − p ( y ) ) p(y)(1-p(y)) p(y)(1−p(y))替代 p ( y ) log ⁡ p ( y ) p(y)\log{p(y)} p(y)logp(y),公式如下:
G i n i ( D ) = ∑ i p ( y ) ( 1 − p ( y ) ) = 1 − ∑ i p 2 ( y ) Gini(D)=\sum_{i}p(y)(1-p(y))=1-\sum_i{p^2(y)} Gini(D)=∑ip(y)(1−p(y))=1−∑ip2(y)

做这个替代有什么影响呢。可以看一下图像。
p ( y ) log ⁡ p ( y ) p(y)\log{p(y)} p(y)logp(y)为:

p ( y ) ( 1 − p ( y ) ) p(y)(1-p(y)) p(y)(1−p(y))为:

可以看到 p ( y ) log ⁡ p ( y ) p(y)\log{p(y)} p(y)logp(y)图像比较倾斜,而 p ( y ) ( 1 − p ( y ) ) p(y)(1-p(y)) p(y)(1−p(y))比较对称,在0.5取到最大值。一个类别准确率为0.5是最具不确定性的,也就是最差的,所以从图像上看明显 p ( y ) ( 1 − p ( y ) ) p(y)(1-p(y)) p(y)(1−p(y))更符合目标。

D根据特征A被划分为多个子结点后,得到的子节点的基尼(Gini)指数的加权和。
G i n i ( D , A ) = ∑ a ∣ D A = a ∣ ∣ D ∣ G i n i ( D A = a ) Gini(D,A)=\sum_{a}{\frac{|D_{A=a}|}{|D|}Gini(D_{A=a})} Gini(D,A)=∑a∣D∣∣DA=a∣Gini(DA=a)

每次划分,计算每个特征的 G i n i ( D , A ) Gini(D,A) Gini(D,A),选择 G i n i ( D , A ) Gini(D,A) Gini(D,A)最大的特征划分数据集。

相关推荐
wabs6661 小时前
关于贪心算法的一些自我总结【力扣45.跳跃游戏II】【灵感来源:代码随想录】
算法·贪心算法·复盘
盖小雅1 小时前
自动化排班如何破解劳动法合规难题:从规则冲突到可追溯的排班表
大数据·运维·机器学习·自动化
2401_876964131 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
嗝o゚2 小时前
CANN GE 算子融合——融合算法与调度策略
算法·昇腾·cann·ge
小江的记录本2 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
踏歌~3 小时前
YA期货准备:0 了解期货
机器学习
Ulyanov4 小时前
用声明式语法重新定义Python桌面UI:QML+PySide6现代开发入门(一)
开发语言·python·算法·ui·系统仿真·雷达电子对抗仿真
数据科学小丫4 小时前
特征工程处理
人工智能·算法·机器学习
z落落4 小时前
C#参数区别
java·算法·c#
c238565 小时前
vector(下)
数据结构·算法