在介紹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面積越大,分類效果越好