欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ROC曲线和AUC

程序员文章站 2022-07-14 13:03:18
...
ROC全称Receiver Operating Curve,最早应用于二战时的雷达探测,以评价信号侦测模型的优劣。在机器学习领域,ROC曲线同样用于模型效果的评价。

ROC曲线样例如下图所示,其横坐标为假正率(FPR),纵坐标为真正率(TPR),曲线上的点对应不同阈值下的模型(FPR,TPR)。
ROC理解的难点就在于阈值的变化,能够造成FPR和TPR的变化,从而形成曲线。
当判断正负样本的阈值为极端小时,所有的样本均为正样本,此时假正(FP)样本等于负样本(N)的量,即FPR=FP/N=100%;真正(TP)样本等于正样本的量,即TPR=TP/P=100%,这就形成了曲线右上角的点(1,1)。
当判断正负样本的阈值为极端大时,所有的样本均为负样本,此时假正(FP)样本数量为0(因为没有正样本),即FPR=FP/N=0;真正(TP)样本也为0,即TPR=TP/P=0,这就形成曲线左下角的点(0,0)。
当阈值设为极端小和极端大之间时,(FPR,TPR)在(0,0)和(1,1)之间滑动,从而形成ROC曲线。

AUC全称Area Under Curve,表示ROC曲线下的面积,一般认为AUC数值越大,则模型效果越好。图形中的蓝色虚线为参考线,表示随机模型的效果,在蓝色虚线下的模型,效果逊于随机模型。

ROC曲线和AUC

python sklearn中有专门的绘制ROC曲线的包,如下示例代码供参考。
from sklearn import metrics
import matplotlib.pyplot as plt
# y_real表示实际值(或实际类别),y_pred表示预测值(或预测概率)
fpr, tpr, thresholds = metrics.roc_curve(y_real, y_pred, pos_label=1)
roc_auc = metrics.auc(fpr, tpr)
plt.figure()
plt.plot(fpr, tpr, color='darkorange',
         lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')