ROC的介绍能够参考wiki性能
https://en.wikipedia.org/wiki/Receiver_operating_characteristicspa
偷一张wiki上的图片:blog
AUC ROC的意思为ROC 曲线下方的面积(Area under the Curve of ROC)排序
ROC曲线:伪阳性率(FPR)定位为X轴,真阳性率(TPR)定义为Y轴。
图片
TPR: 在全部实际为阳性的样本中,被正确地判断为阳性的比率 TRP = TP / (TP + FN)ip
<也称为正样本的召回率,或者覆盖率>ci
FPR:在全部实际为阴性的样本中,被错误地判断为阳性的比率 FPR = FP / (FP + TN)io
<也称为负样本的召回率,或者取伪率>file
随带说明其余的指标:方法
准确率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评价分类器性能的一个缘由。
之后慢慢了解了。