在介绍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面积越大,分类效果越好