在介绍ROC曲线之前,先说说混淆矩阵及两个公式,因为这是ROC曲线计算的基础。
1.混淆矩阵的例子(是否点击广告):
说明:
TP:预测的结果跟实际结果一致,都点击了广告。
FP:预测结果点击了,但是真实情况是未点击。
FN:预测结果没有点击,但是真实情况是点击了。
TN:预测结果没有点击,真实情况也是没有点击。
2.两个公式:
1)真正率:
TPR=TP/(TP+FN)
2)假正率
FPR=FP/(FP+TN)
3.ROC曲线就是真正率随假正率的变化情况。下面用一段代码展示一下(sklearn包中包含相关算法):
##导入相关包
import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt
##设置y值:表示实际值
y = np.array([1, 1, 2, 2])
##设置pred值:表示预测后的值
pred = np.array([0.1, 0.4, 0.35, 0.8])
##计算相关数据:注意返回的结果顺序
fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2)
##计算曲线下面积
roc_auc=metrics.auc(fpr, tpr)
##绘图
plt.clf()
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend(loc="lower right")
plt.show()
结果如图所示:
4.关于ROC曲线
1)虚线所示直线随机分类时的ROC曲线,一般画到图中作为参照点
2)对于一个完美的分类器,ROC曲线应该是从(0,0)到(0,1),然后横着连到(1,1)的折线
3)ROC曲线越接近左上角,分类效果越好
5.关于AUC
1)AUC表示曲线下面的面积
2)对于一个完美的分类器,AUC的值应该为1
3)对于一个随机猜测分类器(即图中虚直线),AUC的面积为0.5
4)AUC面积越大,分类效果越好