信息熵、信息增益、信息增益比、基尼指数分别是什么?
简化版
这些量用于衡量节点或切分的不纯度变化。熵刻画类别分布不确定性;信息增益是父熵减去子节点加权熵,经典 ID3 取最大;增益率用信息增益除以分支比例的 SplitInfo,C4.5 还配合候选筛选启发式,缓解多值偏好但并非彻底消除;Gini 1-Σpₖ² 是另一种不纯度,经典 CART 分类树最小化切分后的加权 Gini。Gini 不含对数、计算形式简单,但两种指标不保证选出相同切分,也不能把 CART 的选择只归因为速度。
详细版
信息熵(Entropy):
H(D) = - Σ pₖ log₂ pₖ (pₖ 是第 k 类样本的占比)
- 全属一类时 H=0(最纯);各类均匀时 H 最大(最混乱)。二分类下 H∈[0,1]。
信息增益(Information Gain,ID3):
Gain(D, a) = H(D) - Σ (|Dv|/|D|)·H(Dv)
= 分裂前熵 - 分裂后各子集加权熵
- 增益越大,说明用特征 a 分裂后不确定性下降越多 → 越该选它。
信息增益比(Gain Ratio,C4.5):
GainRatio(D,a) = Gain(D,a) / IV(a)
IV(a) = - Σ (|Dv|/|D|) log₂(|Dv|/|D|) (特征 a 的固有值/分裂信息)
- 除以 IV(a) 惩罚「取值特别多」的特征,修正信息增益的偏好缺陷。
基尼指数(Gini,CART):
Gini(D) = 1 - Σ pₖ² 基尼越小越纯
分裂后: Gini_index(D,a) = Σ (|Dv|/|D|)·Gini(Dv) → 选最小
- 不用 log,计算比熵快;含义是「随机抽两个样本类别不同的概率」。
完整版教学
一、共同目标:量化「纯度」,指导选特征
决策树每次分裂要选一个「最好」的特征,标准是分裂后子节点尽量纯。要做这个选择,先得能量化「一个集合有多纯/多不纯」。信息熵和基尼指数就是两把「不纯度的尺子」,信息增益、增益比则是「用这把尺子衡量某次分裂带来多少纯度提升」。理解它们,就理解了 ID3/C4.5/CART 的分裂内核。
二、信息熵:衡量「混乱/不确定」
信息熵来自信息论,衡量一个系统的不确定性:
H(D) = - Σₖ pₖ log₂ pₖ
pₖ 是集合 D 中第 k 类样本的比例。直觉理解:
- 全是一类(如 100% 正类):
H = -1·log₂1 = 0,最纯、无不确定性。 - 两类各半(50%/50%):
H = -(½log₂½ + ½log₂½) = 1,最混乱、不确定性最大(二分类下熵取最大值 1)。 - 越接近均匀分布,熵越大;越偏向某一类,熵越小。
所以熵大 = 混乱 = 不纯,熵小 = 有序 = 纯。决策树想把熵降下来。
三、信息增益:分裂让不确定性下降多少(ID3)
有了熵,就能衡量一次分裂的「收益」——信息增益:
Gain(D, a) = H(D) - Σᵥ (|Dv|/|D|)·H(Dv)
└分裂前的熵┘ └分裂后各子集熵的加权平均┘
- 第一项是分裂前整个集合的混乱度。
- 第二项是用特征 a 分裂后,各子集的混乱度按样本占比加权求和。
- 两者之差 = 分裂消除了多少不确定性 = 信息增益。
ID3 算法就是每次选信息增益最大的特征分裂——哪个特征分完后最”降混乱”,就用哪个。
举例:用「是否有房」分裂后,两个子集几乎各自纯净(有房的都还款、没房的都违约),熵大幅下降 → 信息增益大 → 优先选它。
四、信息增益的缺陷:偏向取值多的特征(C4.5 的动机)
信息增益有个著名缺陷:它天然偏爱「取值数目多」的特征。
极端例子:用「身份证号」当特征。每个样本的身份证号都不同,用它分裂后每个子集只有一个样本、纯度 100%、熵=0,信息增益达到最大!但「身份证号」显然是毫无泛化意义的特征——它只是把每个样本单独隔开,学到的是噪声,换新数据完全没用。
根本原因:取值越多的特征,分出的子集越小越纯,信息增益虚高。这会诱导 ID3 选出这种「假聪明」的特征而过拟合。
五、信息增益比:惩罚取值多的特征(C4.5)
为修正上述缺陷,C4.5 改用信息增益比:
GainRatio(D, a) = Gain(D, a) / IV(a)
其中 IV(a)(固有值 / 分裂信息) 衡量特征 a 自身取值的分散程度:
IV(a) = - Σᵥ (|Dv|/|D|) log₂(|Dv|/|D|)
- 特征取值越多、越分散,IV(a) 越大。
- 用信息增益除以 IV(a),相当于给取值多的特征打折——身份证号那种 IV 极大,增益比被拉低,不再被青睐。
注意:增益比又矫枉过正地偏向取值少的特征。所以 C4.5 实际用启发式:先找信息增益高于平均的特征,再从中选增益比最高的——两者结合。
六、基尼指数:经典 CART 的分类不纯度
CART 用基尼指数衡量不纯度:
Gini(D) = 1 - Σₖ pₖ²
含义:从 D 中随机抽两个样本,它们类别不同的概率。
- 全一类:
Gini = 1 - 1² = 0,最纯。 - 两类各半:
Gini = 1 - (½²+½²) = 0.5,最不纯。
分裂时选分裂后加权基尼指数最小的特征:
Gini_index(D, a) = Σᵥ (|Dv|/|D|)·Gini(Dv) → 越小越好
Gini 的工程与算法特点:
- 不含
log,只需类别概率平方和,便于增量统计;在某些实现中计算更省。 - 基尼和熵在二分类下曲线形状相近,候选排序经常相似,但不保证相同。
- CART 固定二叉分裂并以 Gini 定义经典分类准则;这是算法定义与工程便利的组合,不是“速度更快所以唯一正确”。
七、三者对比与常见追问
| 指标 | 算法 | 特点 |
|---|---|---|
| 信息增益 | ID3 | 偏向取值多的特征 |
| 信息增益比 | C4.5 | 修正上述偏好,但偏向取值少 |
| 基尼指数 | CART | 不用 log、计算快、二叉 |
- 熵和基尼选哪个? 先采用实现的合理默认,再在相同验证流程下比较;现代实现中 log 未必是总训练成本瓶颈,不能只按“追求速度”机械选择。
- 为什么信息增益偏向多值特征? 多取值 → 子集更碎更纯 → 增益虚高(身份证号例子)。
- 基尼指数为什么不用 log 也能衡量不纯?
1-Σp²可解释为按节点分布独立抽取两个标签时不同类的概率;它与熵有相同的纯度端点和相近排序,但不是简单等同的公式。 - 回归树用什么? 不用熵/基尼,用平方误差(方差) 衡量不纯度(详见回归树专题)。
八、把信息增益、增益率和 Gini 放进同一算例
父节点 8 个样本正负各 4,熵为 1、Gini 为 0.5。某二值切分产生 [3正,1负] 与 [1正,3负],子节点熵都约 0.811,加权后信息增益约 0.189;子节点 Gini 都是 0.375,Gini 下降 0.125。若特征有 8 个唯一值,信息增益可到 1,但 SplitInfo 为 3,增益率只有约 0.333。
Gain(D, A) = H(D) - sum_v |D_v|/|D| * H(D_v)
GainRatio(D, A) = Gain(D, A) / SplitInfo(D, A)
Gini(D) = 1 - sum_k p_k^2
| 对象/方案 | 核心机制 | 选择或风险 |
|---|---|---|
| 信息增益 | 父熵减子熵加权和 | 偏好候选分支多的特征 |
| 增益率 | 增益除以 SplitInfo | 需防止偏好分裂信息极小的特征 |
| Gini 下降 | 父 Gini 减子 Gini 加权和 | CART 分类常用 |
候选切分 → 统计每个子节点类别比例
→ 用同一指标算加权下降 → 选最大有效下降
记忆钩子:增益率分母是这次分裂产生的分支分布 SplitInfo,不是目标标签熵,也不是特征取值本身随便算一个熵。
九、常见误区与追问
- 误区:信息增益率就是信息增益除以标签熵。 分母是分支样本比例形成的 SplitInfo。
- 误区:增益率彻底消除了特征取值数偏差。 它可能转而偏好 SplitInfo 很小的切分,C4.5 还要做候选筛选。
- 追问:对数底数会改变最优特征吗? 同一轮统一底数只做比例缩放,通常不改变排序。
- 追问:样本权重怎么进入公式? 用权重和替代样本数计算类别比例与子节点占比。
- 追问:回归树为什么不用分类熵? 连续目标没有类别比例,通常直接比较平方误差等回归损失下降。
十、加强记忆
这些指标都服务于选择能降低子节点不纯度的切分。熵 H=-Σpₖlog₂pₖ 在纯节点为 0、均匀分布时最大;信息增益是父熵减子熵加权和,ID3 取最大,但会偏好多候选/多值特征。增益率用增益除以 SplitInfo,C4.5 还需候选筛选以避免极小分母。Gini 1-Σpₖ² 是经典 CART 的分类不纯度,不含 log 且易计算;它与熵常相近却不等价。回归树没有类别比例,通常比较平方误差或其他回归损失下降。