信息增益

itle = ‘信息增益’ description = ‘用最通俗的方式理解决策树的“选题原则”,探索信息增益在机器学习中的核心作用。’ tags = [‘机器学习’, ‘信息增益’, ‘决策树’, ‘数据科学’] +++

信息增益:用最通俗的方式理解决策树的“选题原则”

什么是信息增益?

想象你正在玩“二十个问题”的游戏,你要通过一系列的“是/否”问题猜出朋友心里想的东西。每一次提问的目标,都是尽可能多地缩小范围,让你离答案更近一步。

信息增益(Information Gain),就是衡量一个问题(特征)能帮我们减少多少“不确定性”的指标。在机器学习中,尤其是决策树算法里,信息增益用来决定“下一个分支该问哪个问题”。


生活中的例子:猜水果游戏

假设你要猜朋友手里的水果,桌上有苹果、香蕉、西瓜和柠檬。你可以问:

  • “是红色的吗?”(苹果、西瓜)
  • “是圆的吗?”(苹果、西瓜、柠檬)
  • “皮能直接吃吗?”(苹果、香蕉、柠檬)

不同的问题,能帮你排除的选项数量不同,信息增益也不同。

信息增益最大的问题,是最能缩小范围的问题。


用房间凌乱比喻“熵”

在信息论里,我们用**熵(entropy)**来表示“混乱程度”或者“不确定性”。

  • 熵高 = 很混乱(不知道具体是什么)
  • 熵低 = 很有序(很容易猜到)

每问一个有效的问题,熵就会降低。


信息增益的计算公式

信息增益 = 提问题前的熵 - 提问题后的加权平均熵

公式表达:

$$ \text{信息增益} = H(\text{原始集合}) - \sum_{i=1}^n \frac{|S_i|}{|S|} H(S_i) $$

其中:

  • $H(S)$ 表示集合 $S$ 的熵
  • $S_i$ 表示根据某特征划分后的每个子集
  • $|S_i|/|S|$ 是每个子集占总集合的比例

通俗计算步骤

  1. 算原始熵:整体有多乱?
  2. 按某个特征分组:比如按“颜色”分成红色、黄色、绿色三个组。
  3. 算分组后的加权熵:每组内还有多少不确定性?组有多大就权重多大。
  4. 两者作差:分得越干净,信息增益越大!

案例:是否出门

假设你有一周的天气记录和出门决策:

天气是否出门

1. 计算原始熵

有3次“是”,2次“否”:

$$ H(\text{原始}) = -\frac{3}{5}\log_2\frac{3}{5} - \frac{2}{5}\log_2\frac{2}{5} \approx 0.971 $$

2. 按“天气”分组

  • “晴”:2次“是”
  • “雨”:2次“否”
  • “阴”:1次“是”

每一组的熵都是0(组内只有一种决策)。

3. 加权平均熵

$$ H(\text{分组}) = \frac{2}{5} \times 0 + \frac{2}{5} \times 0 + \frac{1}{5} \times 0 = 0 $$

4. 信息增益

$$ \text{信息增益} = 0.971 - 0 = 0.971 $$

这说明“天气”这个特征把数据分得非常干净,是最佳分割特征。


决策树的选题原则

每次分叉,都选信息增益最大的特征来分。

  • 信息增益大:分出去的子集越“纯”,决策越容易。
  • 信息增益小:分出去还是很乱,没啥帮助。

可视化理解

import matplotlib.pyplot as plt

def plot_information_gain():
    fig, ax = plt.subplots(figsize=(8, 4))
    ax.bar(["分组前", "分组后"], [0.97, 0], color=['skyblue', 'lightgreen'])
    ax.set_title("信息增益 = 分组前的熵 - 分组后的熵")
    ax.set_ylabel("熵 (混乱度)")
    for index, value in enumerate([0.97, 0]):
        ax.text(index, value + 0.05, f"{value:.2f}", ha='center', fontsize=12)
    plt.show()

# 运行这个plot_information_gain()可以看到直观对比

信息增益和剪枝

注意:如果分得太细,每个分组都只剩一个样本,决策树容易过拟合。这时可以用剪枝、最小分割样本数等方法限制树的生长。


总结

  • 信息增益衡量一个特征能帮我们减少多少不确定性,越大越好。
  • 决策树每次选择信息增益最大的特征来分裂节点。
  • 信息增益的本质:每问一个好问题,世界就变得更有条理

一句话理解

信息增益,就是每次提问能帮你“减少混乱”的程度。