标签归档:Model

预测模型校准曲线 Calibration curve

我们常用ROC曲线来衡量模型的预测能力,但很少关注模型的校准度calibration。

Calibration curve的横坐标是我们用模型预测的probability,比如我预测的是可能是肿瘤患者的概率,risk probability,纵坐标是真实的事件event的概率或者事件的proportion。

我们画图的时候,通常是点,需要进行平滑smooting,常用的是 loess方法。

如果我们预测的概率和真实的事件概率完全匹配,那么calibration plot则是一条斜率为1的直线(perfect calibration)。如果我们画出的先在perfect calibration上面,则表示underestimated,就是我们预测的风险或者概率低,真实情况却比较高;反之如果在perfect calibration在下,则是overestimated ,我们预测的风险比真实的风险要高。

根据吻合的程度,又分为poor calibration或者strong calibration,也可以做Hosmer–Lemeshow (HL) goodness-of-fit test。

参考:https://bmcmedicine.biomedcentral.com/articles/10.1186/s12916-019-1466-7

# rms包可以画calibration plot
library(rms)
val.prob(predicted.probability, TRUE.Label)

如果模型用rms建立的话,还可以用
rms::calibrate的方法

#我自己也参考别人写了一个函数,结果如下图,欢迎使用
library(loonR)
riskCalibrationPlot(TRUE.Label, predicted.probability)

#####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
#####################################################################

分类模型的性能评估

最常用的就是灵敏度和特异性,不过还有其他的,比如阴性预测值(negative predictive value, NPV)。


通常,先画一个ROC曲线,计算曲线下面积。ROC上的每个点是特定阈值下,分类的sensitivity和specificity,没多点连起来组成ROC,曲线下面积就是AUC。面积越大越好,如果AUC是1,说明模型能够完全区分要预测的类别。

如果不是1,就要考虑阈值取哪里比较好,这里就涉及到Youden index。Youden index 其实就是为了找到使得sensitivity和specificity之和最大max(sensitivities+specificities)的阈值。

另外就是考虑其他指标来评估分类模型的性能:specificity, sensitivity, accuracy, npv, ppv, precision, recall, tpr, fpr, tnr, fnr, fdr。这些指标可谓琳琅满目,不过这之间有重复的,如下,都是基于tn(真阴), tp(真阳), fn(假阴), fp(假阳)的个数进行计算。

 

预测

P

N

实际

P

TP

FN

N

FP

TN

因为经常用到,就罗列了一下。

具体描述 公式 别名
tn True negative count真阴数
tp True positive count真阳数
fn False negative count假阴数
fp False positive count假阳数
specificity Specificity特异度 tn / (tn + fp) tnr
sensitivity Sensitivity灵敏度 tp / (tp + fn) recall, tpr
accuracy Accuracy正确率 (tp + tn) / N
npv Negative Predictive Value阴性预测值 tn / (tn + fn)
ppv Positive Predictive Value阳性预测值 tp / (tp + fp) precision
precision Precision精准率 tp / (tp + fp) ppv
recall Recall正确率 tp / (tp + fn) sensitivity, tpr
tpr True Positive Rate真阳性率 tp / (tp + fn) sensitivity, recall
fpr False Positive Rate假阳性率 fp / (tn + fp) 1-specificity
tnr True Negative Rate真阴性率 tn / (tn + fp) specificity
fnr False Negative Rate假阴性率 fn / (tp + fn) 1-sensitivity
fdr False Discovery Rate伪发现率 fp / (tp + fp) 1-ppv