← 返回题目列表

信息熵、信息增益、信息增益比、基尼指数分别是什么?

高频 困难 第 15 / 25 题 更新于 2026/07/28
决策树信息熵信息增益基尼指数

简化版

这几个都是决策树选择分裂特征的纯度指标信息熵衡量一个集合的「混乱/不确定程度」,越混乱(各类样本越均匀)熵越大,纯度越低。信息增益 = 分裂前的熵 − 分裂后的加权熵,即「这次分裂让不确定性下降了多少」,ID3 选信息增益最大的特征。信息增益比 = 信息增益 / 本次分支比例的 SplitInfo,C4.5 用它修正信息增益偏向取值多的特征的缺陷。基尼指数也衡量不纯度(随机抽两个样本类别不同的概率),CART 用它,计算比熵简单(不用 log)。核心:都是在找「分裂后子节点最纯」的特征。

详细版

信息熵(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)   → 越小越好

为什么 CART 偏爱基尼而非熵?

  • 计算快:熵要算 log(较慢),基尼只用平方和,不含对数,效率更高。
  • 效果接近:基尼和熵的曲线形状很相似,实践中选出的分裂差别很小。
  • CART 还固定用二叉分裂(每次只分两支),基尼配二叉更简洁。

七、三者对比与常见追问

指标算法特点
信息增益ID3偏向取值多的特征
信息增益比C4.5修正上述偏好,但偏向取值少
基尼指数CART不用 log、计算快、二叉
  • 熵和基尼选哪个? 差别很小;追求速度用基尼(sklearn 默认),追求信息论解释用熵。
  • 为什么信息增益偏向多值特征? 多取值 → 子集更碎更纯 → 增益虚高(身份证号例子)。
  • 基尼指数为什么不用 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 选最大),但偏向取值多的特征(身份证号极端例);信息增益比 = 增益 / 特征固有值 IV(a)C4.5 用它惩罚多值特征(但反过来偏向少值,故 C4.5 用启发式两步结合);基尼指数 Gini=1-Σpₖ²(随机抽两样本类别不同的概率)是 CART 的选择,不用 log、计算快、配二叉分裂,效果与熵接近。回归树则改用平方误差