背景
在评估分类模型时,准确率(Accuracy)往往是我们最先想到的指标,但在类别极度不平衡的场景下——比如罕见病检测(1000个健康人里只有100个病人)——一个把所有样本都预测为“健康”的“摆烂”模型,也能轻松拿到90%以上的准确率,这种“虚高”的分数,显然无法真实反映模型的有效性
那么,有没有更稳健的指标,能在不平衡数据下依然给出客观的评价?
今天我们来聊聊两个在中文资料里相对少见、但在实际应用中非常有价值的指标——Informedness(信息性) 和 Markedness(标记性) ,它们是一对视角互补的指标,分别从两个不同的方向审视模型,能有效克服传统指标对数据不平衡的敏感性
核心定义:站在“行”与“列”的不同视角
要理解这两个指标,首先要弄清楚它们看问题的立场完全不同
Informedness(信息性)衡量的是:真实存在的东西,模型找到了没?
Markedness(标记性)衡量的是:模型说有的东西,真实存在吗?
一个关注 “查全”与“排除”(基于真实情况),一个关注 “预测的可信度”(基于预测情况)
下面从用条件概率的视角来看,两者的立场截然相反
| 维度 | Informedness(信息性) | Markedness(标记性) |
|---|---|---|
| 关注视角 | 真实条件(Actual Condition) | 预测条件(Predicted Condition) |
| 数学本质 | 衡量 P(预测 | 真实) 的组合能力 | 衡量 P(真实 | 预测) 的组合能力 |
| 大白话 | 真实存在的东西,模型找到了没?(比如:这人真有病,模型查出来了没?) | 模型说有的东西,真实存在吗?(比如:模型说有心脏病,这人真有吗?) |
| 关注方向 | “召回能力” (行视角) | “预测可信度” (列视角) |
| 计算公式 | TPR + TNR - 1 (即 TPR - FPR) | PPV + NPV - 1 |
| 依赖的基石 | 召回率(TPR) + 特异度(TNR) | 精确率(PPV) + 逆精确率(NPV) |
| 取值范围 | [-1, 1],0 表示纯随机,1 表示完美 | [-1, 1],0 表示纯随机,1 表示完美 |
特别注意:这里的“逆精确率(NPV)”是指预测为“负”的样本中,真实确实为“负”的比例(TN / (TN + FN)),它与精确率(PPV)相对应,共同刻画了模型打出“负标签”时的可靠性
补充知识:这两个指标与 Matthews 相关系数(MCC)有着深刻的数学联系——MCC 约等于 Informedness 和 Markedness 的几何平均值。同时,Informedness 与 ROC 曲线下面积(AUC)的关系为:AUC = (Informedness + 1) / 2
二分类实战:识别“虚假繁荣”的照妖镜
用一个经典的罕见病检测案例,直观感受这两个指标在不平衡数据下的威力
假设测试集包含:
- 实际患病(Positive):100人
- 实际健康(Negative):1000人
某模型的预测结果如下(混淆矩阵):
| 预测患病 | 预测健康 | 合计 | |
|---|---|---|---|
| 实际患病 | TP = 80 | FN = 20 | 100 |
| 实际健康 | FP = 50 | TN = 950 | 1000 |
| 合计 | 130 | 970 | 1100 |
第一步:计算基础指标
- 召回率(TPR) = 80 / 100 = 0.8(病人里抓到了80%)
- 特异度(TNR) = 950 / 1000 = 0.95(健康人里认对了95%)
- 精确率(PPV) = 80 / 130 ≈ 0.615(报警说有病的,其实只有61.5%真生病)
- 逆精确率(NPV) = 950 / 970 ≈ 0.979(模型说没病的,98%是真没病)
第二步:计算核心指标
- Informedness = 0.8 + 0.95 - 1 = 0.75
- Markedness = 0.615 + 0.979 - 1 ≈ 0.595
解读:
- Informedness = 0.75:说明这个模型比随机猜测提升了75%的“知情查找能力”,它不仅能抓到大部分病人(召回率0.8),还能很好地排除健康人(特异度0.95),综合区分能力很扎实
- Markedness = 0.595:说明模型预测结果的含金量中等偏上,值得注意的是,Markedness 分数低于 Informedness,根本原因在于精确率(PPV=0.615)被极不平衡的类别拖累了——因为健康人基数巨大,即使误判比例不高(FPR=5%),也会产生大量虚假警报(FP=50),拉低了“模型说有病”时的可信度
对比实验:一个“摆烂”的模型
现在看看另一个极端:这个模型偷懒,把所有1100人都预测为健康。
- TP=0, FN=100, FP=0, TN=1000
- 准确率 = (0+1000) / 1100 ≈ 90.9%(看似极高,实则一个病人都没发现)
- Informedness = 0 (TPR) + 1.0 (TNR) - 1 = 0(完美揭示了模型毫无信息量,纯粹瞎猜)
- Markedness = 0 (PPV) + 1.0 (NPV) - 1 = 0(模型的所有预测标签都指向“健康”,但这个标签根本没法正确标记患病的人,标记效力为零)
| 指标 | 良好模型 | 摆烂模型 | 结论 |
|---|---|---|---|
| 准确率 | 93.6% | 90.9% | 仅差2.7%,具有极强欺骗性 |
| Informedness | 0.75 | 0 | 清晰暴露出真实区分能力的差距 |
| Markedness | 0.595 | 0 | 清晰暴露出预测标签的含金量差距 |
总结:Informedness 盯着**混淆矩阵的行(真实标签)看,用召回+特异度;Markedness 盯着混淆矩阵的列(预测标签)**看,用精确率+逆精确率
多分类扩展:一对多策略与宏平均
面对3个及以上的分类任务,我们无法直接套用二分类的简单公式。标准做法是采用 “一对多”(One-vs-Rest, OvR) 策略——依次将每个类别视为正类(P),将其他所有类别合并视为负类(N),计算每个类别的指标,最后取 宏平均(Macro-average) 作为整体性能评价
假设一个 3×3 的混淆矩阵(总计300样本,每类真实样本各100个):
| 真实 \ 预测 | 预测 A | 预测 B | 预测 C | 合计(真实) |
|---|---|---|---|---|
| 真实 A | 80 | 10 | 10 | 100 |
| 真实 B | 5 | 70 | 25 | 100 |
| 真实 C | 15 | 15 | 70 | 100 |
| 合计(预测) | 100 | 95 | 105 | 300 |
1. 把 A 当作正类(P=A,N=B∪C)
- TP=80, FN=20, FP=20, TN=180
- 召回率=0.8,特异度=0.9,精确率=0.8,逆精确率=0.9
- Informedness_A = 0.8 + 0.9 - 1 = 0.700
- Markedness_A = 0.8 + 0.9 - 1 = 0.700
2. 把 B 当作正类(P=B,N=A∪C)
- TP=70, FN=30, FP=25, TN=175
- 召回率=0.7,特异度=0.875,精确率≈0.737,逆精确率≈0.854
- Informedness_B = 0.7 + 0.875 - 1 = 0.575
- Markedness_B ≈ 0.737 + 0.854 - 1 ≈ 0.591
3. 把 C 当作正类(P=C,N=A∪B)
- TP=70, FN=30, FP=35, TN=165
- 召回率=0.7,特异度=0.825,精确率≈0.667,逆精确率≈0.846
- Informedness_C = 0.7 + 0.825 - 1 = 0.525
- Markedness_C ≈ 0.667 + 0.846 - 1 ≈ 0.513
4. 宏平均汇总
- 全局 Informedness = (0.700 + 0.575 + 0.525) / 3 = 0.600
- 全局 Markedness = (0.700 + 0.591 + 0.513) / 3 ≈ 0.601
类别分项解读
| 类别 | Informedness | Markedness | 解读(结合新视角) |
|---|---|---|---|
| A | 0.700 | 0.700 | 查找和标记能力双优。模型对 A 类不仅召回好,预测为 A 时的可信度也极高 |
| B | 0.575 | 0.591 | 预测比查找略好。预测为 B 时可信度尚可(0.591),但查找真实 B 的能力稍弱(0.575),漏掉了不少(FN=30) |
| C | 0.525 | 0.513 | 双低且最弱。Markedness 最低(0.513),说明模型预测为 C 时最不靠谱,因为误判为 C 的样本最多(FP=35) |
| 全局 | 0.600 | 0.601 | 整体性能良好,宏平均比二分类案例低,符合多分类难度递增的直觉 |
关于宏平均与微平均:上面采用的是宏平均(平等对待每个类),在类别极度不平衡时,也可考虑微平均(将各类 TP/FN/FP/TN 汇总后统一计算)。一般而言,宏平均更能反映少数类的真实表现,是常规首选
总结:为何应该把这两个指标加入模型评估
Informedness 和 Markedness 绝不是哗众取宠的冷门指标,它们具有坚实的统计学基础和极高的实用价值:
- 对数据不平衡免疫:准确率在倾斜数据上会“虚高”,而这两个指标能直接戳破这种假象,还原模型真相
- 视角互补,避免片面:
- Informedness 回答:“真实目标,我找到了多少?”
- Markedness 回答:“我的预测,可信度有多高?“
- 两者结合,既能防止“漏检”(查不全),也能防止“误报”(信不过)
- 数学根基扎实:与 MCC、AUC 等黄金标准紧密关联,并非凭空捏造的指标
- 扩展自然:通过 OvR 策略和宏平均,可无缝迁移到多分类场景
后续在评估分类模型时,尤其是面对不平衡数据,请务必把这两个指标放进你的评估清单里——它们会帮你看到准确率背后那些被轻易掩盖的真相
历史相关文章
以上是自己实践中遇到的一些问题,分享出来供大家参考学习,欢迎关注微信公众号:DataShare ,不定期分享干货