ROC曲线和AUC

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/elecjack/article/details/79972097
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数值越大,则模型效果越好。图形中的蓝色虚线为参考线,表示随机模型的效果,在蓝色虚线下的模型,效果逊于随机模型。



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='--')


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页