二分类模型评估之AUC ROC

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评价分类器性能的一个缘由。

之后慢慢了解了。

相关文章
相关标签/搜索