roc_auc_score(Receiver Operating Characteristics(受試者工作特性曲線,也就是說在不同的閾值下,True Positive Rate和False Positive Rate的變化情況))
我們只考慮判為正的情況時,分類器在正例和負例兩個集合中分別預測,如果模型很好,在正例中預測,百分百為正例,而在負例中預測,百分0為正例,說明模型分類能力很強,因為對於不同的例子進行了區別對待,正確識別了。
如果模型很差,在正負例兩個集合中,全都一般判為正,一半判為負,則說明這個分類器啥也沒干。
TPR(預測為正的在正例中的比例) = TP/P = TP/(TP+FN)
FPR(預測為正的在正例中的比例) = FP/N = FP/(FP+TN)
並且通過調整閾值,一定存在兩個點:
1、全部樣本都判正,則TPR=1, FPR=1
2、全部樣本都判負,則TPR=0, FPR=0
所以,如果分類器啥也沒干,則為中間虛線,AUC=AUCmin=0.5
如果分類器真正有識別能力,則TPR>FPR,也就是在正例中更傾向於判正,負例中傾向於判負,為圖中實線。
如果在某一閾值下,TPR為1,FPR=0,則這個分類器經過點(0,1),AUC=AUCmax=1
實際模型判定時,通常令thresh=0.5,即高於0.5判正,低於0.5判負。但考慮到樣本不均的問題,我們應該使用不同的thresh,然后去計算auc。這個過程可以讓sklearn幫我們完成。
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)
0.75
auc就是曲線下面積,這個數值越高,則分類器越優秀