信息论入门:从“不确定性”到聚类评估,一步步理解NMI公式
想象你面前有一堆颜色混杂的积木,有人让你把它们分成几组。完成后,你怎么知道自己的分类和"正确"答案有多接近?这就是聚类评估要解决的问题。在机器学习中,**归一化互信息(NMI)**就像一位公正的裁判,用数学语言告诉我们分类结果与真实情况的匹配程度。本文将用最直观的方式,带你从信息论基础出发,亲手计算这个看似复杂的指标。
1. 信息论基础:从“不确定性”开始
理解NMI需要先掌握三个核心概念:熵、条件熵和互信息。这些概念都围绕着"不确定性"展开。
1.1 熵:不确定性的度量
熵(H)量化了系统的不确定性。举个例子,抛一枚公平硬币时:
python复制import math
# 公平硬币的熵
p = 0.5
H = - (p * math.log2(p) + (1-p) * math.log2(1-p))
print(H) # 输出1.0
这个1.0表示每次抛硬币产生1比特的不确定性。如果是偏斜硬币(比如正面概率0.9),熵会变小:
| 正面概率 | 熵值(比特) |
|---|---|
| 0.5 | 1.0 |
| 0.9 | 0.469 |
| 0.1 | 0.469 |
提示:熵在概率均匀分布时最大,随着分布变得不均衡而减小
1.2 条件熵:知道一部分信息后的剩余不确定性
条件熵H(Y|C)表示在已知聚类结果C后,真实类别Y仍然存在的不确定性。就像知道一个人的星座后,对他性格的猜测仍然有一定不确定性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 互信息:两个分类系统的关联程度
互信息I(Y;C) = H(Y) - H(Y|C)揭示了真实类别和聚类结果之间的关联。它表示知道聚类结果后,真实类别不确定性减少的量。
2.1 互信息的直观理解
假设:
- H(Y)(原始不确定性)像不知道天气时出门是否带伞的困惑
- H(Y|C)(条件熵)像看了天气预报后仍然需要带伞的不确定性
- 互信息就是天气预报帮你消除的困惑量
3. 手工计算NMI:一个完整案例
让我们用10个点的简单例子演示完整计算流程。真实类别Y将点分为A(4个)、B(6个),聚类结果C分为Cluster
