主要是对于周志华老师的《机器学习》一书(即西瓜书)的一些笔记与思考。
第四章:决策树
1)基本流程
决策树是一类常见的机器学习方法.以二分类任务为例,我们希望从给定训练数据集学得一个模型用以对新示例进行分类,这个把样本分类的任务,可看作对“当前样本属于正类吗?”这个问题的“决策”或“判定”过程.
举个简单的例子:
场景:你是一个西瓜摊主,要通过外观特征快速判断西瓜是否成熟。你的经验法则如下:
-
第一问:根蒂是否蜷曲?
-
是 → 可能成熟,继续问敲声。
-
否 → 可能不熟,直接淘汰。
-
-
第二问:敲声是否沉闷?
-
是 → 成熟西瓜。
-
否 → 可能未熟,再检查色泽。
-
这就是决策树:通过一系列问题(特征判断)逐步缩小范围,最终得出结论。
过程如下图所示:
一般的,一颗决策树包含一个根节点,若干个内部节点和若干个叶节点;叶节点对应决策结果,其他每个节点对应于一个属性测试。其基本算法如下:
不过要注意的是有三种情形会导致递归返回:
(1)当前结点包含的样本全属于同一类别,无需划分;
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
(3)当前结点包含的样本集合为空,不能划分.
2)划分选择
由上图中的算法可看出,决策树学习的关键是第8行,即如何选择最优划分属性.
一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高.
通俗一点讲:
想象你有一筐水果,里面有苹果和橙子。
-
高纯度:如果某次分拣后,筐里几乎全是苹果(比如90%苹果,10%橙子),说明这个筐的“纯度”很高。
-
低纯度:如果分拣后的筐里苹果和橙子各占一半,说明“纯度”很低,无法明确判断这一筐属于哪一类。
决策树的构建过程类似于不断分拣水果的过程,每次选择一个特征(如“颜色”或“形状”)将数据分成更小的子集。目标是通过每次划分,让子集中的样本尽可能属于同一类别。
那我们该如何衡量这个纯度呢?下面介绍几种方法
a.信息增益
“信息熵”(即不确定性的度量)是度量样本集合纯度最常用的一种指标,熵值越小,纯度越高。
假定当前样本集合 D中第k类样本所占的比例为pk,则信息熵D的公式如下:
-
比如:
-
10个西瓜中有9个好瓜(熵≈0.47)→ 高纯度。(有序)
-
5个好瓜和5个坏瓜(熵=1.0)→ 低纯度。(混乱)
-
b.增益率
为减少由信息增益准则对可取值数目较多的属性导致的偏好而可能带来的不利影响,我们使用增益率来选择最优划分属性。
增益率定义为
其中:
注:IV(A):特征的固有值(Intrinsic Value),惩罚取值多的特征。
比如:
-
西瓜编号(20个不同编号):
-
每个编号对应1个西瓜,熵降为0 → 信息增益=1.0。
-
但固有值极高(IV=log₂20≈4.32),增益率=1.0/4.32≈0.23。
-
-
根蒂特征:增益率=0.28 / 1.0=0.28。
-
结论:增益率更倾向根蒂,避免被编号干扰。
c.基尼指数
另一种衡量的方式是基尼指数,对于数据集D,有:
直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率.因此,Gini(D)越小,则数据集 D的纯度越高,
采用与上式相同的符号表示,属性a的基尼指数定义为
于是,我们在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性,即 a*= arg min Gini_index(D,a).
基尼指数与熵的区别:
-
计算速度:基尼指数只需平方运算,比对数快,适合大数据。
-
实际效果:两者分类结果通常相似,但基尼指数对不纯度更敏感。
总结:
指标 | 公式 | 特点 | 适用场景 |
---|---|---|---|
信息增益 | Entropy(D)−条件熵 | 直观,但偏向多值特征 | 特征取值较少时优先使用 |
增益率 | Gain/IV | 惩罚多值特征,更公平 | 特征取值差异大时使用 |
基尼指数 | 1−∑pk² | 计算高效,对不纯度敏感 | 大数据集或需要快速计算时使用 |