香农攻略:四类信息指标横向对比
香农攻略的关键,是先按问题类型选择指标,而不是看到数据就计算熵。本文依照实际分析流程,逐步对比信息熵、条件熵、互信息和KL散度的输入条件、数值含义与适用场景,并通过统一检查标准说明各自优劣,帮助读者减少指标错配和结论误读。
步骤一:先确定要回答的问题
若问题是“单个变量有多难预测”,优先考虑信息熵;若要判断增加条件后还剩多少不确定性,则计算条件熵。前者只需要一个概率分布,后者需要联合分布,数据要求更高,但解释也更具体。
横向看,熵结构最简单,适合描述类别分布;条件熵适合评估已知特征后的剩余信息。两者都不能直接表示两个分布相差多远,也不应被当成模型准确率。香农攻略的第一步,是把业务问题翻译成概率问题。
步骤二:需要衡量依赖时比较指标
如果目标是判断变量X与Y是否存在统计依赖,互信息通常比线性相关系数更全面。相关系数主要反映线性关系,互信息理论上可以识别非线性依赖;代价是估计更困难,对分箱、核宽度和样本量较敏感。
条件熵与互信息并非竞争关系,因为I(X;Y)=H(X)-H(X|Y)。前者强调知道Y后还剩多少不确定性,后者强调Y减少了多少不确定性。做特征筛选时互信息直观,解释预测残差时条件熵更合适。
步骤三:比较两个分布时换用KL散度
当问题变成“模型分布Q与真实分布P差多少”,应考虑KL散度Dₖₗ(P‖Q),而不是计算两个熵后相减。KL散度具有方向性,Dₖₗ(P‖Q)通常不等于Dₖₗ(Q‖P),因此它不是数学意义上的距离。
KL散度的优势是能量化用Q近似P造成的额外编码成本,短板是Q在P非零处取零时结果会发散。需要对称且更稳定的比较时,可改用JS散度;但替换指标后,数值范围和解释口径也必须同步调整。
步骤四:统一口径后再输出结论
最终对比前,应统一概率估计方法、对数底数、缺失值处理和样本范围。信息熵、条件熵与互信息通常以比特表示,KL散度也受对数底数影响;单位不一致时,数值大小没有横向比较价值。
可执行的选择顺序是:描述单变量用熵,加入条件用条件熵,衡量变量依赖用互信息,比较概率分布用KL或JS散度。完成计算后再做重采样或置换检验,避免把有限样本产生的小差异解释成稳定规律。
常见问题
互信息和相关系数应该选哪个?
关注线性方向和强度时选相关系数;怀疑存在非线性依赖时可用互信息。实际分析可同时报告,但不能直接比较两者数值。
KL散度为什么可能是无穷大?
若真实分布P在某事件上的概率大于零,而近似分布Q给该事件零概率,log(P/Q)会发散。可检查支持集或采用合理平滑。
连续变量可以直接计算香农熵吗?
连续变量对应微分熵,其性质与离散熵不同,数值甚至可以为负。不能把离散频数公式未经处理直接套到连续数据。