[评估指标] 敏感性/特异性/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表示实际标签

实际 / 预测预测为正例预测为负例预测总计
实际为正例TPFNP
实际为负例FPTNN
实际总计TP + FNFP + TNP + 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特异性,实际为负例的样本中,被预测为正例的占比
AUCROC曲线下的面积,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 ----------------

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值