[评估指标] 敏感性/特异性/PPV/NPV等指标原理与计算方法

关键词
机器学习分类指标,临床评估指标,正确率/准确率/召回率/F1,敏感性/特异性/约登指数,ROC/AUC

在机器学习分类模型中,通常评估指标使用准确率、精准率、召回率和F1值。在临床实验中,通常使用敏感度、特异性、约登指数、PPV、NPV等指标,这些指标间存在着相关性,有些在计算上是等同的,有些是可以相互转化的,工作中有遇到一些同学对这些指标存在混淆,本文试图对它们进行理解和解释,以期达到以下几个目的:

  • 能够用通俗的语言向非技术同学解释上述各指标;
  • 能够理解临床指标与分类模型指标的关系;
  • 能够使用相关工具快速计算上述各指标;

1. 二分类预测结果混淆矩阵

使用2x2的混淆矩阵(Confusion Matrix)表示模型预测结果,其中行表示实际标签,列表示预测标签。混淆矩阵将样本分为四类,分别为:

  • TP (True Positive) 真正例:实际为正例,预测为正例的样本数。
  • TN (True Negative) 真负例:实际为负例,预测为负例的样本数。
  • FP (False Positive) 假正例:实际为负例,预测为正例的样本数。
  • FN (False Negative) 假负例:实际为正例,预测为负例的样本数。

记忆方法:第一个字母T/F表示预测,第二个字母P/N表示实际标签

实际 / 预测 预测为正例 预测为负例 预测总计
实际为正例 TP FN P
实际为负例 FP TN N
实际总计 TP + FN FP + TN P + N

2. ACC/P/R/F1/敏感性/特异性/约登指数等指标说明

指标 计算公式 解释
准确率ACC T P + T N T P + F P + F N + T N \frac{TP+TN}{TP+FP+FN+TN} TP+FP+FN+TNTP+TN 在总样本中,预测正确的样本所占的比例
精确率P T P T P + F P \frac{TP}{TP+FP} TP+FPTP 在正例样本中,预测正确的量所占的比例
召回率R T P T P + F N \frac{TP}{TP+FN} TP+FNTP 在实际为正例的样本中,被预测为正例的占比
F1值 2 P × R P + R 2\frac{P\times R}{P+R} 2P+RP×R 精确率和召回率的综合指标
敏感性(Sensitivity) T P T P + F N \frac{TP}{TP+FN} TP+FNTP 在实际为正例的样本中,被预测为正例的占比,未被召回表示漏诊
特异性(Specificity) T N T N + F P \frac{TN}{TN+FP} TN+FPTN 在实际为负例的样本中,被预测为负例的占比,未被召回表示误诊
约登指数(Youden index) S e n s i t i v i t y + S p e c i f i c i t y − 1 Sensitivity + Specificity -1 Sensitivity+Specificity1 敏感性与特异性的综合指标
阳性预测值(PPV) T P T P + F P \frac{TP}{TP+FP} TP+FPTP 等同于「精确率」,检测为阳性的人群中真正为阳性的占比,判定错误则为假阳
阴性预测值(NPV) T N T N + F N \frac{TN}{TN+FN} TN+FNTN 检测为阴性的人群中确实为阴性的占比,判定错误则为假阴
真正例率(TPR) T P T P + F N \frac{TP}{TP+FN} TP+FNTP 等同于「敏感性」,实际为正例的样本中,被预测为正例的占比
假正例率(FPR) F P T N + F P \frac{FP}{TN+FP} TN+FPFP 1 − 1- 1特异性,实际为负例的样本中,被预测为正例的占比
AUC ROC曲线下的面积,ROC曲线为不同阈值下TPR与FPR所构成的曲线,AUC不受正负样本比例的影响,它反映的不同阈值下的模型的整体性能

指标关系

1. 正例召回率Recall = 敏感性Sensitivity = 真正例率TPR
2. 精确率Precision = 阳性预测值PPV
3. 假正例FPR = 1 - 特异性Specificity
4. F1 = 1/P + 1/R = 2*P*R/(P+R)
5. 约登指数YoudenIndex =  敏感性Sensitivity + 特异性Specificity −1

在机器学习中,通常只关心「正例」的识别情况,对应的指标为精准率P、召回率R、综合指标F1值,比如在风控领域,正例为风险物料,负例为正常物料,正例如果未能召回,则可能带来较为严重的风险遗漏,因此会对R的要求较高,如果考虑负例的召回率(特异性),由于负例量会远远大于正例量,则该指标天然会很高。
而在医疗领域,正例对应着「阳性」,负例对应着「阴性」,敏感性表示阳性的召回率,如果阳性未召回,则表示「漏诊」,特异性表示阴性的召回率,如果阴性未召回,则表示「误诊」。PPV和NPV则分别表示阳性识别的准确率和阴性识别的准确率,PPV判别错误表示假阳,即误诊,NPV判别错误表示假阴,即漏诊,在医疗诊断中,漏诊和误诊都是很严重的事件,因此反映阳性和阴性识别效果的这几个指标都是常用指标。

3. 计算工具

开源地址https://github.com/donote/youden_index

具体使用可参考demo:

from youden import youden_index

# 生成随机标签和预测概率
np.random.seed(42)
y_true = np.random.randint(0, 2, size=50)
y_score = np.random.rand(50)
df, mj_val, mf1_val, auc = youden_index(y_true, y_score, pos_label=1, step=5)
print(df)    # df中保存了各个指标,具体参考github

执行结果如下:

 Thr    ACC    PPV    NPV Sens(Rec/TPR)   Spec YoudenIdx     F1 TrueBen TrueMal PredBen PredMal      TP      FP      TN      FN
0.000  0.540  0.540  0.000         1.000  0.000     0.000  0.701  27.000  23.000  50.000   0.000  27.000  23.000   0.000   0.000
0.050  0.540  0.543  0.500         0.926  0.087     0.013  0.685  27.000  23.000  46.000   4.000  25.000  21.000   2.000   2.000
0.100  0.580  0.571  0.625         0.889  0.217     0.106  0.696  27.000  23.000  42.000   8.000  24.000  18.000   5.000   3.000

参考引用:
https://blog.csdn.net/xu624735206/article/details/121849981
https://mp.weixin.qq.com/s/qYS9wkWAV1jC47hQzZaXPA

同步更新到AI加油站

---------------- END ----------------

扫描二维码关注公众号,回复: 15494661 查看本文章

猜你喜欢

转载自blog.csdn.net/iling5/article/details/130526176