想象一下,你正在和小明玩一场“你画我猜”游戏。小明心里想好了一个词——可能是“月亮”,也可能是“摩天轮”——然后小红画了一幅画递给你。在看到那幅画之前,你面对的是无数种可能,绞尽脑汁也猜不中;可一旦看到画上那弯弯的月牙,答案瞬间浮出水面。这种“从一头雾水到恍然大悟”的落差,正是信息传递的本质。互信息(Mutual Information,MI)就是量化这种落差的数学工具:它告诉我们,知道一个变量(小红画的画)之后,对另一个变量(小明心中的词)的猜测难度降低了多少。与大家熟知的相关系数不同,互信息不要求关系必须“直来直去”——它能捕捉圆形、抛物线、锯齿状等任何形态的关联。正因如此,互信息在人工智能的特征选择、聚类评估中大放异彩。下面,我们就从这场猜词游戏出发,一步步拆解互信息的每一个细节。

岗位关联

对 AI 从业者而言,互信息是识别非线性关联的核心武器。掌握它,你就能在特征工程中筛出真正有用的特征,也能在聚类评估中给出更公平的分数。

目录
  1. 可视化演示
  2. 互信息的直觉
  3. 熵与条件熵
  4. 互信息的公式
  5. 与相关系数对比
  6. 特征选择应用
  7. 标准化互信息
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过联合分布热力图、非线性关系散点图和特征选择排序,直观展示互信息如何衡量变量间的依赖程度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

互信息定义:I(X;Y) 联合分布热力图展示X与Y的概率密度 边缘分布显示各自的信息熵 I(X;Y) = H(X) + H(Y) − H(X,Y) 互信息越大,变量间依赖越强

互信息的直觉

游戏刚开始时,小明心里揣着一个词,你毫无线索。可能是“月亮”,也可能是“摩天轮”,从成千上万个词里猜中一个的概率微乎其微。这时小红递来一张画:上面画着一弯月牙。你瞬间锁定答案。画本身没有写一个字,却像一个过滤器,把你从无数种可能中拽向唯一答案。这种“线索带来的确定感”,就是信息。

在信息论中,这种“确定感”被量化成了互信息。我们把小明心中的词称为随机变量 \(X\),把小红的画称为随机变量 \(Y\)。互信息 \(I(X;Y)\) 回答的问题是:观测到 \(Y\) 之后,\(X\) 还剩多少不确定性?如果 \(Y\) 和 \(X\) 毫不相干,看了也白看,互信息就是零;如果 \(Y\) 能近乎锁定 \(X\),互信息就很大。

互信息的第一个直观定义是:先验不确定性减去知道了线索之后的剩余不确定性:

回到猜词游戏:如果没有小红的画,你可能要猜上几百次;有了画,答案几乎唯一——互信息很大。如果小红画了一朵花,而小明心里想的是“月亮”,那画作根本帮不上忙——互信息趋近于零。生活里我们常说“默契”“心有灵犀”,本质上是彼此之间的互信息很高。而这份默契,恰恰是 AI 系统从数据中寻找规律的原型。

I(X;Y)=H(X)−H(X∣Y)\displaystyle I(X;Y) = H(X) - H(X|Y)
这个公式说:互信息 = 一开始的猜谜难度 − 看到线索后的猜谜难度。难度下降多少,信息就传递了多少。
  1. 先验不确定性 H(X)在没看到任何关于 \(Y\) 的线索之前,仅凭 \(X\) 自身的概率分布,猜 \(X\) 需要承担的平均不确定性。它是猜谜的初始难度值。
    H(X)=−∑xP(x)log⁡P(x)H(X) = -\sum_{x} P(x)\log P(x)
  2. 剩余不确定性 H(X|Y)看到 \(Y\) 之后,\(X\) 仍然保留的平均不确定性。若 \(Y\) 提供了有效线索,这个值会比 \(H(X)\) 小。
    H(X∣Y)=−∑x∑yP(x,y)log⁡P(x∣y)H(X|Y) = -\sum_{x}\sum_{y} P(x,y)\log P(x|y)
  3. 差值 I(X;Y)两者相减,得到 \(Y\) 为 \(X\) 贡献的信息量。差值越大,说明线索越有价值。
    I(X;Y)=H(X)−H(X∣Y)I(X;Y) = H(X) - H(X|Y)

熵与条件熵

换个玩法:允许你向小明提问,比如“这个东西能吃吗?”问题本身不直接给出答案,但它把可能空间劈掉了一半。信息论把这种“可能空间的混乱程度”称为熵。如果词表里 100 个词概率完全相等,你每次都要猜很久,熵就很大;如果 90% 的时候小明都选“月亮”,你很容易猜中,熵就很小。

熵 \(H(X)\) 是度量单个变量不确定性的核心指标。在此基础上,联合熵 \(H(X,Y)\) 度量两个变量组成系统的整体不确定性;条件熵 \(H(X|Y)\) 度量知道 \(Y\) 后 \(X\) 的剩余不确定性。三者之间的关系,是理解互信息的地基。

信息熵的定义如下:

在熵的基础上,条件熵可以理解为“知道 \(Y\) 后,对 \(X\) 逐层求加权平均”的结果,它与联合熵的关系是 \(H(X|Y) = H(X,Y) - H(Y)\)。回到猜词游戏:熵是你看到画之前“抓耳挠腮”的程度;条件熵是看了画之后“还剩多少抓耳挠腮”。互信息,正是这两者之间的落差——也就是那张画真正帮你省下的脑力。

H(X)=−∑x∈XP(x)log⁡P(x)\displaystyle H(X) = -\sum_{x \in \mathcal{X}} P(x)\log P(x)
熵的直观理解:一个随机变量的平均不确定性。均匀分布的熵最大;概率集中于某个取值的分布熵为零。
  1. 求和符号 \(\sum_{x \in \mathcal{X}}\)遍历 \(X\) 所有可能的取值,把每个取值单独贡献的“信息量”累加起来。\(\mathcal{X}\) 是 \(X\) 的取值集合。
    ∑x∈X\sum_{x \in \mathcal{X}}
  2. 概率 \(P(x)\)变量 \(X\) 取得具体值 \(x\) 的可能性,取值范围是 0 到 1。概率越小,这件事发生就越“出乎意料”。
    P(x)P(x)
  3. 负对数 \(-\log P(x)\)每个结果自带的信息量。概率越小,信息量越大;加负号是为了保证结果为正。
    −log⁡P(x)-\log P(x)
  4. 加权求和把每个取值的信息量按概率加权平均,得到整个随机变量的平均不确定性。
    −∑x∈XP(x)log⁡P(x)-\sum_{x \in \mathcal{X}} P(x)\log P(x)

互信息的公式

进阶版猜词游戏:小明画了一只猫,小红心里恰恰想的是“猫”。他们共享了“猫”这个信息。但如果小明画的是“电线杆”,小红心想“糖葫芦”,两个信息毫无交集。问题来了:如何衡量“有交集”或“没交集”?答案是对比两种概率——现实中的联合分布 \(P(x,y)\),与假设两者独立时的乘积 \(P(x)P(y)\)。

如果现实里“猫”和“猫”总是一起出现,那么联合概率会明显大于独立乘积;如果两者各说各的,联合概率就约等于独立乘积。互信息公式量化了这种“现实对独立的偏离程度”:

这个公式还自带两个重要性质:对称性 \(I(X;Y) = I(Y;X)\),以及非负性 \(I(X;Y) \ge 0\)。对称性意味着“小红画里的信息量”和“小明心里的信息量”是同一枚硬币的两面;非负性则告诉我们,观察一个变量永远不会让另一个变量的不确定性增加——就像多看一张画,再怎么也不至于让你比没看之前更糊涂。

I(X;Y)=∑x∈X∑y∈YP(x,y)log⁡P(x,y)P(x)P(y)\displaystyle I(X;Y) = \sum_{x \in \mathcal{X}}\sum_{y \in \mathcal{Y}} P(x,y)\log\frac{P(x,y)}{P(x)P(y)}
这个公式衡量联合分布与独立分布的“距离”:实际越偏离独立假设,互信息就越大。
  1. 联合分布 \(P(x,y)\)事件“\(X=x\) 且 \(Y=y\)”同时发生的真实概率。它来自数据统计,是现实世界的证据。
    P(x,y)=#{(X=x,Y=y)}NP(x,y) = \frac{\#\{(X=x, Y=y)\}}{N}
  2. 独立乘积 \(P(x)P(y)\)如果把两个变量当作互不影响,理论上联合概率应当等于各自边缘概率的乘积。
    P(x)P(y)P(x)P(y)
  3. 对数比值真实联合概率除以独立乘积。比值等于 1 说明两者独立,取对数后为 0;比值大于 1 说明正关联,小于 1 说明负关联。
    log⁡P(x,y)P(x)P(y)\log\frac{P(x,y)}{P(x)P(y)}
  4. 双重加权求和对全部 \(x, y\) 组合用 \(P(x,y)\) 加权平均,得到平均的“信息增益”。
    ∑x∑yP(x,y)log⁡P(x,y)P(x)P(y)\sum_{x}\sum_{y} P(x,y)\log\frac{P(x,y)}{P(x)P(y)}

与相关系数对比

猜词游戏里,有人喜欢归纳“规律”:小红每次都在左上角画太阳,小明选词就偏向“清晨”类。这种规律有时是直线型的——线索数值越大,答案就越偏向某一类;但更多时候,规律是弯弯绕绕的。相关系数就像一把直尺,只适合量直线;互信息却是一把万能软尺,能量任何形状的轮廓。

皮尔逊相关系数 \(\rho\) 衡量的是线性关系强度:一个变量增大时,另一个是否随之增大或减小。而互信息衡量的是任意统计依赖关系。经典例子是 \(Y = X^2\):\(X\) 和 \(Y\) 之间存在确定性的函数关系,但相关系数算出来几乎是 0,互信息却很高。

相关系数的定义为:

回到猜词游戏。假如小红按答案首字母的 ASCII 码画横线长度——这是一种非线性映射,相关系数可能接近零,但互信息很高,因为你知道横线长度就能反推首字母。现实中许多 AI 问题的变量关系都是弯弯绕绕的,只盯着相关系数,很容易漏掉真正关键的特征。

ρ(X,Y)=E[(X−μX)(Y−μY)]σXσY\displaystyle \rho(X,Y) = \frac{E[(X-\mu_X)(Y-\mu_Y)]}{\sigma_X \sigma_Y}
注意:相关系数只捕捉线性关系;互信息能捕捉任意函数关系。
  1. 期望 \(E[\cdot]\)对样本取平均的操作,相当于把所有点的贡献汇总成一个数值。
    E[(X−μX)(Y−μY)]E[(X-\mu_X)(Y-\mu_Y)]
  2. 中心化偏差每个样本点减去其均值,表示偏离平均水平的程度;两个偏差相乘为正说明同方向偏离,为负说明反方向偏离。
    (X−μX)(Y−μY)(X-\mu_X)(Y-\mu_Y)
  3. 标准化除以两个标准差之积,把结果压缩到 \([-1, 1]\),消除量纲影响。
    E[(X−μX)(Y−μY)]σXσY\frac{E[(X-\mu_X)(Y-\mu_Y)]}{\sigma_X \sigma_Y}
  4. 解读结果\(\rho = 0\) 只代表没有线性相关,不能排除非线性相关;而互信息 \(I(X;Y)\) 对任何依赖都能给出正值。
    ρ(X,Y)=0⇒I(X;Y)≥0\rho(X,Y) = 0 \quad \Rightarrow \quad I(X;Y) \ge 0

特征选择应用

现在游戏升级了:给你 1000 条线索——画纸上用了多少种颜色、线条长短、下笔力度、纸的材质……但小明心里只有一个词。哪些线索真的有用?逐一计算每条线索与答案之间的互信息,就能把有用的线索从 999 条噪音中捞出来。

特征选择正是机器学习里至关重要的一步:原始数据可能有上千个特征,但真正与目标变量 \(y\) 相关的只有少数几个。用互信息对每个特征 \(f\) 计算 \(I(f; y)\),排序后选出得分最高的 \(K\) 个特征,这就是“最大相关”特征选择策略。

“选最好特征”的数学表达:

实际工程中,还会进一步做“最大相关—最小冗余”的贪心选择:每次挑一个与目标互信息大、但与已选特征冗余小的新特征。这就像猜词游戏里,先找最关键的那条线索,再判断新线索是否带来了额外信息——如果只是重复已知内容,就不必浪费精力。

f∗=arg⁡max⁡f∈FI(f; y)\displaystyle f^{*} = \arg\max_{f \in \mathcal{F}} I(f;\,y)
这个公式表示:在候选特征集合中,选择与目标变量互信息最大的那个特征。
  1. 特征集合 \(\mathcal{F}\)所有候选特征的集合,比如颜色、线条数、画纸大小等。
    F={f1,f2,…,fm}\mathcal{F} = \{f_1, f_2, \ldots, f_m\}
  2. 目标变量 \(y\)我们要预测的对象,比如小明心中的词。
    I(fi; y)I(f_i;\,y)
  3. argmax 操作对每个特征分别计算与目标的互信息,然后取得分最高的特征。
    arg⁡max⁡f∈FI(f; y)\arg\max_{f \in \mathcal{F}} I(f;\,y)
  4. 实操筛选将全部特征按互信息从大到小排序,取前 \(K\) 个作为模型输入,完成降维与去噪。
    I(f1;y)≥I(f2;y)≥⋯≥I(fm;y)I(f_1;y) \ge I(f_2;y) \ge \cdots \ge I(f_m;y)

标准化互信息

猜词游戏玩久了你会发现,不同组合之间的“默契分”很难跨组比较:有的小组词汇量大、玩法复杂,有的小组只用简笔画。原始互信息数值受熵大小影响——熵大的变量,互信息潜力上限也高。要让不同场景下的互信息可以横向比较,就需要一把“公平的尺子”。

这把尺子就是标准化互信息(Normalized Mutual Information,NMI)。它把互信息除以两个变量熵的调和均值,把数值压缩到 \([0,1]\) 区间:

标准化互信息就像不同猜词游戏之间的“公正裁判”。无论小明擅长成语还是小红只会画简笔画,NMI 总能公平地反映两人信息共享的比例。在 AI 中,当你需要比较不同聚类算法、不同特征子集的效果时,NMI 这种“公平尺子”是不可或缺的工具。

NMI(X;Y)=2 I(X;Y)H(X)+H(Y)\displaystyle NMI(X;Y) = \frac{2\,I(X;Y)}{H(X) + H(Y)}
NMI = 0 表示两个变量完全独立(没有共享信息);NMI = 1 表示一个变量完全决定另一个变量。
  1. 分子 \(2 \cdot I(X;Y)\)共享信息量的两倍。乘以 2 是为了在完全依赖时能把结果归一化到 1。
    2 I(X;Y)2\,I(X;Y)
  2. 分母 \(H(X) + H(Y)\)两个变量的总熵之和,代表总信息量。用它做分母可以消除量纲和尺度的影响。
    H(X)+H(Y)H(X) + H(Y)
  3. 比值共享信息占总信息的比例,结果落在 0 到 1 之间。
    2 I(X;Y)H(X)+H(Y)∈[0,1]\frac{2\,I(X;Y)}{H(X) + H(Y)} \in [0,1]
  4. 实际应用在聚类评估中,用 NMI 比较聚类结果与真实标签的匹配程度,数值越高代表聚类越好。
    NMI(聚类结果,真实标签)NMI(\text{聚类结果}, \text{真实标签})

AI 应用场景

电商用户行为特征筛选

阶段:特征工程

解决的问题:电商平台有上百个用户行为特征——访问量、浏览时长、点击序列、优惠券使用率等。传统做法用相关系数筛选,会遗漏大量非线性行为模式(比如“深夜下单”与“折扣敏感度”的关系并不呈直线)。用互信息对每个特征与“是否购买”标签打分,能更全面地保留真正影响转化率的特征。

具体案例:某电商平台的用户行为数据有 200 维特征,先用互信息排序降到 20 维,再喂给梯度提升树模型,AUC 提升 3 个百分点,训练时间缩短约 40%。

文本聚类质量评估

阶段:模型评估(无监督学习)

解决的问题:聚类算法(K-Means、DBSCAN)跑完后,效果好不好很难说清,尤其在缺少标签时。利用 NMI,把聚类结果与人工标注的类别做比较,得到 0 到 1 的相似度分数,快速判断聚类是否合理。

具体案例:在新闻聚类任务中,将 10 万篇新闻聚为 50 类,计算聚类结果与编辑人工分类的 NMI = 0.72,说明聚类质量较高,可进入下一步推荐系统流程。

医疗诊断关键指标识别

阶段:特征选择 / 可解释性分析

解决的问题:医院积累了海量检查指标,医生希望知道哪些指标与患病风险最相关。许多指标的关系是非线性的(比如某项指标过高或过低都危险),用互信息可以识别这类“U 型”关联。

具体案例:在糖尿病筛查项目中,对血糖、BMI、年龄、血压等指标分别计算与患病标签的互信息,发现“血糖波动幅度”的非线性特征比血糖平均值更有预测力,帮助医生优化了体检套餐设计。

Python 演示

python34 行
import numpy as np  def calc_entropy(x, bins=16):    hist, _ = np.histogram(x, bins=bins)    p = hist / hist.sum()    p = p[p > 0]    return float(-(p * np.log(p)).sum())  def calc_mutual_information(x, y, bins=16):    hist, _, _ = np.histogram2d(x, y, bins=bins)    pxy = hist / hist.sum()    px = pxy.sum(axis=1, keepdims=True)    py = pxy.sum(axis=0, keepdims=True)    p_indep = px * py    mask = (pxy > 0) & (p_indep > 0)    return float((pxy[mask] * np.log(pxy[mask] / p_indep[mask])).sum())  if __name__ == "__main__":    rng = np.random.default_rng(42)    n = 5000    x = rng.uniform(-1, 1, n)    y_linear = 2 * x + rng.normal(0, 0.1, n)    y_nonlinear = np.sin(3 * x) + rng.normal(0, 0.05, n)     for name, y in [("线性关系 y=2x", y_linear), ("非线性关系 y=sin(3x)", y_nonlinear)]:        corr = float(np.corrcoef(x, y)[0, 1])        mi = calc_mutual_information(x, y)        hx = calc_entropy(x)        hy = calc_entropy(y)        nmi = 2 * mi / (hx + hy)        print(f"{name}: 相关系数={corr:.3f}, 互信息={mi:.3f}, NMI={nmi:.3f}")
目的:用直方图近似计算连续变量的互信息,并与相关系数对比,直观展示“相关系数为 0 但互信息很高”的非线性场景。
  1. hist, _, _ = np.histogram2d(x, y, bins=bins)把 \(x, y\) 组成的点撒到 \(16 \times 16\) 的网格上,统计每个格子的点数,用来近似联合分布。
  2. px = pxy.sum(axis=1, keepdims=True)按行求和得到 \(X\) 的边缘概率;同理 py 是 \(Y\) 的边缘概率。
  3. p_indep = px * py构造“独立假设”下的联合概率,作为对照基准。
  4. mask = (pxy > 0) & (p_indep > 0)过滤掉概率为 0 的格子,防止对 0 取对数导致报错。
  5. (pxy[mask] * np.log(pxy[mask] / p_indep[mask])).sum()逐格计算“现实联合分布与独立假设的偏离度”并加权求和。
  6. np.corrcoef(x, y)[0, 1]用相关系数作为对照,展示它与互信息的区别。
  7. y_nonlinear = np.sin(3 * x)构造非线性依赖数据,使相关系数≈0 但互信息远大于 0。

常见误区

误区两个随机变量的相关系数为 0,那它们一定是相互独立的,没必要再算互信息了。

正解相关系数只衡量线性相关。对于非线性关系(比如 \(Y = X^2\)、\(Y = \sin X\)),相关系数可能为 0,但变量之间确实存在确定性依赖。互信息能捕捉这些非线性关系,因此即使相关系数接近 0,也应该用互信息再检查一遍。这就像用直尺量不出圆形的周长——工具选错了,不代表圆不存在。

为何常见:教材中常把“不相关”和“独立”放在一起讲,许多读者因此把“线性无关”误当成“完全无关”。

误区特征 \(f\) 与目标 \(y\) 的互信息很高,说明 \(f\) 是 \(y\) 的原因,可以直接用于因果推断。

正解互信息只度量统计关联,不涉及因果方向。高互信息可能来自隐藏的第三变量 \(z\) 同时对 \(f\) 和 \(y\) 产生影响。互信息做特征选择是筛选“关联特征”,不等于找到了“因果变量”。

为何常见:人脑习惯于把相关性脑补成因果性,尤其在特征重要性排序的图表中,高分的特征更容易让人觉得“就是它导致的”。

误区互信息的公式里有概率求和,所以只能算离散变量;连续变量就只能用相关系数。

正解连续变量可以先分箱离散化,再用直方图估计互信息;也可以使用更精确的 k 近邻估计器(如 KSG 算法)。scikit-learn 的 mutual_info_classif 和 mutual_info_regression 就是现成的工具,无需自己造轮子。

为何常见:很多课程只推导理论公式,不介绍工程上的估计方法,导致“只会算离散”的错觉。

误区NMI 已经归一化到 0 到 1,所以不同数据集的 NMI 数值可以直接拿来对比,谁大谁就好。

正解NMI 数值还受分箱方式、样本量、估计偏差等因素影响。不同数据集用不同预处理时,NMI 不能直接横比。正确做法是固定同样的分箱数与估计方法,再进行比较。

为何常见:看到归一化的数字,人们容易误以为它像准确率一样可以无视底层分布直接比较。

误区不同教材里互信息公式的 log 底数不一样,算出来的数字也不同,所以这些结果不能互相比较。

正解换底数相当于给所有信息量乘一个常数比例因子,只是单位不同(比特 vs 纳特)。同一篇文章内保持同底数,大小关系完全一致;跨文献比较时,只需要统一换算即可。

为何常见:看到不同书上底数不同就以为存在矛盾,其实是“单位换算”和“数值矛盾”被搞混了。

面试题

Q1. 两个独立随机变量的互信息值是多少?

单选题 · easy

  • A.恒等于零← 正确答案
  • B.恒等于一
  • C.等于其中一个熵
  • D.等于联合熵

答案:A。独立变量之间不携带彼此的任何信息,知道一个不会降低另一个的不确定性,因此互信息等于 0。熵是单个变量自身的不确定性,联合熵是两个变量共同的不确定性,均与互信息定义不同。就好比小明的画上画了一朵云,而小红心里的词是“月亮”——画和词毫无关系,互信息自然为零。

Q2. 互信息的对称性可用哪个等式表示?

单选题 · mid

  • A.I(X;Y) = I(Y;X)← 正确答案
  • B.I(X;Y) = H(X|Y)
  • C.I(X;Y) = H(Y|X)
  • D.I(X;Y) = H(X,Y)

答案:A。互信息的定义是对联合分布和独立分布的对称比较,交换 \(X\) 和 \(Y\) 不改变结果,因此 \(I(X;Y) = I(Y;X)\)。条件熵 \(H(X|Y)\) 描述的是知道 Y 后 X 的剩余不确定性,联合熵 \(H(X,Y)\) 是两者总不确定性,都不是对等的互信息表达式。打个比方:你说“我知道你”和“你知道我”的信息量是同一回事。

Q3. 相关系数为 0 的两个变量,其互信息可能是?

单选题 · easy

  • A.也一定为零
  • B.大于零的数← 正确答案
  • C.小于零的数
  • D.无法计算

答案:B。相关系数只捕捉线性关系,非线性关系(如 \(Y = X^2\))下相关系数为 0,但变量间存在强依赖,互信息大于 0。互信息非负,不会小于 0。因此看到相关系数为 0,不应立刻断言“两者无关”,而应进一步计算互信息确认。就好比两个人虽然身高差为 0,但可能有完全相同的指纹。

Q4. 若 \(Y = X^2\)(其中 \(X \in [-1,1]\)),则互信息 \(I(X;Y)\) 的值是?

单选题 · mid

  • A.等于零
  • B.等于负值
  • C.大于零← 正确答案
  • D.无穷大

答案:C。\(Y\) 是 \(X\) 的确定性函数,给定 \(X\) 后 \(Y\) 没有任何不确定性,条件熵 \(H(Y|X) = 0\),因此 \(I(X;Y) = H(Y) > 0\)。只要 \(X\) 不是退化到单一取值,\(Y\) 就有正熵,互信息就大于零。这好比看了小明的画就能完全确定答案词,只是词本身仍有多种可能。

Q5. 标准化互信息 NMI 的取值范围是?

单选题 · hard

  • A.[-1, 1] 之间
  • B.[0, 1] 之间← 正确答案
  • C.[0, +∞) 区间
  • D.(-∞, +∞) 区间

答案:B。NMI 的定义是 \(2I(X;Y) / (H(X) + H(Y))\)。因为 \(I(X;Y) \le \min(H(X), H(Y))\),分子不超过分母,结果范围是 [0, 1]。0 表示完全独立,1 表示完全依赖。相关系数的范围才是 [-1, 1],这里的负数没有任何意义。

Q6. 互信息相比相关系数有哪些优势?

多选题 · mid

  • A.能捕捉非线性关联← 正确答案
  • B.能反映任意依赖← 正确答案
  • C.无需估计概率分布
  • D.只适合离散型变量

答案:AB。互信息基于概率分布,能捕捉任意函数关系,包括抛物线、正弦波等非线性形态;相关系数只衡量直线关系。互信息需要估计概率分布,并不是“无需估计”;同时它既能用于离散变量,也能通过分箱或 k 近邻方法用于连续变量,因此 C、D 均不正确。

Q7. 以下关于互信息的性质,正确的有哪些?

多选题 · mid

  • A.I(X;Y) = I(Y;X)← 正确答案
  • B.I(X;Y) ≥ 0← 正确答案
  • C.X 与 Y 独立时 I(X;Y) = 0← 正确答案
  • D.X 与 Y 独立时 I(X;Y) = 1

答案:ABC。互信息具有对称性、非负性,并且两个变量独立时互信息为 0。独立意味着知道一个变量对另一个没有任何帮助,因此信息量是 0,而不是 1。对称性说明信息共享是双向的,非负性说明观察变量不会增加不确定性。

Q8. 特征选择中,互信息主要衡量特征与什么的关系?

单选题 · easy

  • A.目标标签变量← 正确答案
  • B.其他无关特征
  • C.随机噪声分布
  • D.数据集总大小

答案:A。互信息特征选择的核心思想是计算每个特征 \(f\) 与目标变量 \(y\) 之间的 \(I(f;y)\),用这个分数衡量特征对预测目标的贡献。与“其他特征”“噪声”或“数据量”无关。

Q9. 连续变量互信息的常用估计方法有哪些?

多选题 · hard

  • A.直方图分箱法← 正确答案
  • B.k近邻估计法← 正确答案
  • C.皮尔逊相关法
  • D.核密度估计法← 正确答案

答案:ABD。直方图分箱法把连续值离散化后近似联合分布;k 近邻法(如 KSG 估计器)基于最近邻距离估计概率密度;核密度估计法则用核函数平滑概率密度。皮尔逊相关法是线性相关工具,不用于估计互信息。

Q10. 若 \(I(X;Y)=0\),以下哪项一定成立?

单选题 · hard

  • A.X 与 Y 相互独立← 正确答案
  • B.X 与 Y 正相关
  • C.X 的方差一定为零
  • D.Y 的方差一定为零

答案:A。互信息为 0 等价于联合分布等于独立乘积,即 \(P(x,y) = P(x)P(y)\),这正是统计独立性的定义。方差为零意味着变量是常数,这与互信息为 0 没有必然关系。正相关更不成立,因为独立时相关也为 0。这个结论就像:两个人完全不共享任何信息,那他们之间肯定不存在任何“心灵感应”。