二分类模型评估之AUC ROC

时间:2022-12-08 18:47:42

ROC的介绍可以参考wiki

https://en.wikipedia.org/wiki/Receiver_operating_characteristic

偷一张wiki上的图片:

二分类模型评估之AUC ROC

 

AUC ROC的意思为ROC 曲线下方的面积(Area under the Curve of ROC)

ROC曲线:伪阳性率(FPR)定位为X轴,真阳性率(TPR)定义为Y轴。

TPR: 在所有实际为阳性的样本中,被正确地判断为阳性的比率 TRP = TP / (TP + FN)

<也称为正样本的召回率,或者覆盖率>

FPR:在所有实际为阴性的样本中,被错误地判断为阳性的比率 FPR = FP / (FP + TN)

<也称为负样本的召回率,或者取伪率>

随带说明其他的指标:

准确率Accuracy  = (TP + TN) / (TP + FP + FN + TN)

精确率Precision = TP / (TP + FP ) 也称为命中率(正确预测到的正例数 / 预测正例总数)

给定一个二元分类模型和它的阈值,就能从所有样本的真实值和预测值计算出一个坐标点。

用一个例子来说明如何计算这些坐标点:

y_true = [1, 1, 0, 0, 1]

y_score = [0.5, 0.6, 0.55, 0.4, 0.7 ]

现在我们选择一个阈值0.55,如果大于0.55则归为类别1,如果小于等于0.55则归为类别0.则y_pred = [0, 1, 0, 0, 1],TP=2   FN=1  TN=2  FP=0,可以计算得出TPR= 0.67,FPR=0.

如果使用Python的话, 可以直接调用sklearn.metrics.roc_curve来计算坐标点和阈值。fpr, tpr, thresholds = sklearn.metrics.roc_curve(y_true, y_score)。

此时ROC曲线如下:

二分类模型评估之AUC ROC

 

如果曲线下的面积AUC,也可以使用sklearn中的方法计算:auc = metrics.auc(fpr,tpr)

至此,AUC的计算完成了,但是AUC这个模型评价指标应该如何理解呢?

在知乎上搜到的(https://www.zhihu.com/question/39840928?from=profile_question_card):

AUC就是从所有1样本中随机选取一个样本,从所有0样本中随机选取一个样本,然后根据你的分类器对两个随机样本进行预测,把1样本预测为1的概率为p1, 把0样本预测为1的概率为p0,p1>p0的概率就等于AUC。所有AUC反应的是分类器对样本的排序能力。根据这个解释,如果我们完全随机的对样本分类,那么AUC应该接近0.5。另外,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

以后慢慢了解了。