ROC的介绍可以参考wiki
https://en.wikipedia.org/wiki/Receiver_operating_characteristic
偷一张wiki上的图片:
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,也可以使用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评价分类器性能的一个原因。
以后慢慢了解了。