一、ID3算法
-
原理
- 信息熵(Entropy):信息熵用于衡量数据集的混乱程度。对于数据集 D D D,包含 n n n个类别标签,其信息熵 H ( D ) H(D) H(D)计算公式为:
H ( D ) = − ∑ k = 1 n p k log 2 p k H(D)=-\sum_{k = 1}^{n}p_k\log_2p_k H(D)=−k=1∑npklog2pk
其中 p k p_k pk是数据集中属于第 k k k类样本的比例。例如,在一个简单的天气分类数据集中(晴天、雨天、多云),若晴天样本占比 p 1 = 0.4 p_1 = 0.4 p1=0.4,雨天 p 2 = 0.3 p_2 = 0.3 p2=0.3,多云 p 3 = 0.3 p_3 = 0.3 p3=0.3,则信息熵 H ( D ) = − 0.4 log 2 0.4 − 0.3 log 2 0.3 − 0.3 log 2 0.3 H(D)=-0.4\log_20.4 - 0.3\log_20.3-0.3\log_20.3 H(D)=−0.4log20.4−0.3log20.3−0.3log20.3。 - 信息增益(Information Gain):用于衡量特征对数据集纯度的提升程度。假设数据集 D D D,属性 a a a有 V V V个不同取值 { a 1 , a 2 , ⋯ , a V } \{a^1,a^2,\cdots,a^V\} {
a1,a2,⋯,aV}。使用属性 a a a对 D D D进行划分,得到 V V V个子集 { D 1 , D 2 , ⋯ , D V } \{D^1,D^2,\cdots,D^V\} {
D1,D2,⋯,DV}。信息增益 g ( D , a ) g(D,a) g(D,a)计算公式为:
g ( D , a ) = H ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ H ( D v ) g(D,a)=H(D)-\sum_{v = 1}^{V}\frac{|D^v|}{|D|}H(D^v) g(D,a)=H(D)−v=1∑V∣D∣∣Dv∣H(Dv)
例如,在一个判断水果是苹果还是香蕉的数据集中,有“颜色”这个属性(红、绿)。若红色样本中苹果占比高,绿色样本中香蕉占比高,通过这个属性划分数据集后纯度提升,信息增益较大。 - 构建树时,从根节点开始,计算每个特征的信息增益,选择信息增益最大的特征作为当前节点的划分特征。对于划分后的子集,重复此步骤,直到满足停止条件(如所有样本属于同一类别、没有可用于划分的特征或子集样本数量小于阈值)。
- 信息熵(Entropy):信息熵用于衡量数据集的混乱程度。对于数据集 D D D,包含 n n n个类别标签,其信息熵 H ( D ) H(D) H(D)计算公式为:
-
应用场景
- 适用于处理离散型特征的分类问题。例如,在文本分类中,根据文章中的词汇(离散特征)判断文章所属类别(如体育类、科技类)。
-
优点
- 算法简单易懂,容易实现。计算信息熵和信息增益的概念直观,能够很好地处理离散特征。
- 对小规模数据表现良好,能快速构建决策树。
-
缺点
- 倾向于选择取值较多的属性,可能导致过拟合。例如,一个特征有很多不同的值,每个值对应的类别比较单一,这个特征会被优先选择,但可能只是巧合,对新数据的泛化能力差。
- 只能处理离散型属性,无法直接处理连续型属性。
二、C4.5算法
-
原理
- 信息增益比(Gain Ratio):为了克服ID3算法倾向于选择取值较多属性的问题,C4.5算法引入信息增益比。首先计算属性 a a a的固有值 H a ( D ) H_a(D) Ha(D):
H a ( D ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log 2 ∣ D v ∣ ∣ D ∣ H_a(D)=-\sum_{v = 1}^{V}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|} Ha(D)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
信息增益比 g R ( D , a ) g_R(D,a) gR(D,a)计算公式为:
g R ( D , a ) = g ( D , a ) H a ( D ) g_R(D,a)=\frac{g(D,a)}{H_a(D)} gR(D,a)=Ha(D)g(D,a)
例如,在一个植物分类数据集中,有一个特征“叶子形状”有多种取值。通过计算信息增益比,可以更平衡地考虑这个特征的划分效果。 - 树的构建过程与ID3类似,从根节点开始,计算每个特征的信息增益比,选择信息增益比最大的特征作为划分特征,在划分后的子集上重复此步骤,直到满足停止条件。
- 信息增益比(Gain Ratio):为了克服ID3算法倾向于选择取值较多属性的问题,C4.5算法引入信息增益比。首先计算属性 a a a的固有值 H a ( D ) H_a(D) Ha(D):
-
应用场景
- 同ID3一样,主要用于分类问题,尤其在处理离散型特征的分类任务时表现出色。例如,在医疗诊断中,根据患者的症状(离散特征)判断疾病类型。
-
优点
- 克服了ID3算法对取值较多属性的偏好,使得决策树的构建更加合理。
- 能够处理离散型和连续型属性。对于连续型属性,先将其离散化,再进行处理。
-
缺点
- 计算信息增益比相对复杂,算法效率比ID3稍低。
- 连续型属性的离散化过程可能会丢失信息,影响决策树的性能。
三、CART算法(分类与回归树)
-
原理 - 分类任务
- 基尼指数(Gini Index):用于衡量数据集的纯度。对于数据集 D D D,基尼指数 G i n i ( D ) Gini(D) Gini(D)计算公式为:
G i n i ( D ) = ∑ k = 1 n p k ( 1 − p k ) = 1 − ∑ k = 1 n p k 2 Gini(D)=\sum_{k = 1}^{n}p_k(1 - p_k)=1 - \sum_{k = 1}^{n}p_k^2 Gini(D)=k=1∑npk(1−pk)
- 基尼指数(Gini Index):用于衡量数据集的纯度。对于数据集 D D D,基尼指数 G i n i ( D ) Gini(D) Gini(D)计算公式为: