1. 简介
在本教程中,我们将介绍机器学习中的两个重要评估指标:敏感度(Sensitivity) 与 特异性(Specificity)。这两个指标常用于评估分类模型的性能,例如神经网络、决策树、支持向量机等。
它们尤其适用于二分类问题,也可以扩展到多分类场景。
2. 混淆矩阵(Confusion Matrix)
要计算敏感度和特异性,首先需要构建一个混淆矩阵。在二分类问题中,混淆矩阵是一个 2x2 的矩阵,行表示模型的预测结果,列表示实际标签(Ground Truth):
| 实际为正 | 实际为负
预测为正 | TP | FP
预测为负 | FN | TN
- TP(True Positives):预测为正,实际也为正
- FP(False Positives):预测为正,实际为负
- FN(False Negatives):预测为负,实际为正
- TN(True Negatives):预测为负,实际也为负
3. 敏感度与特异性
✅ 敏感度(Sensitivity)
又称召回率(Recall),表示模型正确识别出的正样本占所有实际正样本的比例。
公式如下:
Sensitivity = TP / (TP + FN)
✅ 特异性(Specificity)
表示模型正确识别出的负样本占所有实际负样本的比例。
公式如下:
Specificity = TN / (TN + FP)
3.1 示例
假设我们有如下混淆矩阵:
| 实际为正 | 实际为负
预测为正 | 139 | 270
预测为负 | 40 | 130
敏感度:
Sensitivity = 139 / (139 + 40) ≈ 0.777
特异性:
Specificity = 130 / (130 + 270) = 0.325
这个模型在识别正样本方面表现尚可,但在识别负样本上表现较差。
3.2 置信区间(Confidence Intervals)
当测试集较小时,建议为敏感度和特异性构建置信区间。这样可以更准确地估计模型在实际数据中的表现。
使用正态近似法,置信区间公式为:
p ± z_(α/2) * sqrt(p*(1-p)/n)
其中:
p
是估计值(如敏感度或特异性)n
是对应类别的样本数(正样本或负样本)z_(α/2)
是标准正态分布的分位数(如95%置信度下为1.96)
示例
敏感度置信区间:
[0.696, 0.857]
特异性置信区间:
[0.265, 0.386]
可以看到,敏感度的置信区间较宽,说明估计不稳定;而特异性置信区间较窄,因为负样本数量较多。
3.3 比较两个模型
当两个模型的置信区间不重叠时,我们有理由认为它们的性能存在显著差异。
例如:
- 模型A:敏感度0.777,置信区间[0.696, 0.857]
- 模型B:敏感度0.838,置信区间[0.767, 0.902]
它们的置信区间部分重叠,说明在实际中两个模型的表现可能并无显著差异。
3.4 如何选择模型?
假设我们有两个模型:
- SVM:敏感度0.7,特异性0.8
- LR:敏感度0.8,特异性0.7
选择依据取决于你的目标:
- 如果更关注识别正样本(如癌症检测),应选择敏感度更高的模型(LR)
- 如果更关注识别负样本(如垃圾邮件过滤),应选择特异性更高的模型(SVM)
4. 多分类问题中的敏感度与特异性
在多分类任务中,我们可以为每个类别分别计算敏感度和特异性。
多分类混淆矩阵示例:
| y=Hot | y=Cold | y=Mild
ŷ=Hot | 13 | 10 | 30
ŷ=Cold | 22 | 70 | 20
ŷ=Mild | 30 | 20 | 150
类别 j 的敏感度定义为:
Sensitivity(j) = Cjj / Σ(Cij), i ≠ j
类别 j 的特异性定义为:
Specificity(j) = Σ(Cik), i≠j, k≠j / Σ(Cik), k≠j
示例:Hot 类别
敏感度:
Sensitivity(Hot) = 13 / (13 + 22 + 30) = 13 / 65 = 0.2
特异性:
Specificity(Hot) = (70 + 20 + 20 + 150) / (10 + 30 + 70 + 20 + 20 + 150) = 260 / 300 ≈ 0.867
说明模型对“非Hot”识别较好,但识别“Hot”表现较差。
5. 总结
✅ 敏感度和特异性是评估分类模型的重要指标
✅ 在小数据集上建议使用置信区间来评估模型稳定性
✅ 多分类问题中可为每个类别单独计算这两个指标
✅ 选择模型时应结合业务目标:
- 重视正样本识别 ➡️ 选高敏感度模型
- 重视负样本识别 ➡️ 选高特异性模型
合理使用这两个指标,能帮助我们在实际项目中做出更明智的模型选择。