項目github位址:bitcarmanlee easy-algorithm-interview-and-practice
歡迎大家star,留言,一起學習進步
1.ROC曲線
在信号檢測理論中,接收者操作特征曲線(receiver operating characteristic curve,或者叫ROC曲線)是一種坐标圖式的分析工具,用于 (1) 選擇最佳的信号偵測模型、舍棄次佳的模型。 (2) 在同一模型中設定最佳門檻值。
在做決策時,ROC分析能不受成本/效益的影響,給出客觀中立的建議。
ROC曲線首先是由二戰中的電子工程師和雷達工程師發明的,用來偵測戰場上的敵軍載具(飛機、船艦),也就是信号檢測理論。之後很快就被引入了心理學來進行信号的知覺檢測。數十年來,ROC分析被用于醫學、無線電、生物學、犯罪心理學領域中,而且最近在機器學習(machine learning)和資料挖掘(data mining)領域也得到了很好的發展。(參考文獻1)
2.ROC曲線解釋
一個二分類問題,可以将執行個體分成正類(postive)或者負類(negative)。但是實際中分類時,會出現四種情況
1.某一個執行個體是正類,并且預測結果也為正類,此為真正類(True Positive, TP)
2.某一個執行個體是正類,被預測為負類,此為假負類(False Negative, FN)
3.某一個執行個體是負類,被預測為正類,此為假正類(False Positive, FP)
4.某一個執行個體為負類,并且預測結果也為負類,此為真負類(True Negative, TN)
ROC曲線的縱坐标是真正率(TPR)
T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP
用通俗的語言解釋就是預測的正例中,實際上也為正的在所有正例中的占比,這個比例自然是越大越好。
ROC曲線的橫坐标是假正率(FPR)
F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP
用通俗的語言解釋就是預測的正例中,實際上為負的在所有負例中的占比。這個比例是越小越好。
很明顯,這兩個名額是互斥的,無法同時達到最優效果。
圖檔來自wiki百科。

3.ROC曲線中的兩個特殊點
上面曲線中有兩個特殊點(0,0), (1,1)
其中(0,0)點表示TPR,FPR均為0。此時門檻值無為無窮大,所有樣本被預測為負類,TP = 0, FP = 0,樣本的預測結果隻能是TN或者FN,是以TPR=FPR=0。
其中(1,1)點表示TPR, FPR均為1。此時門檻值為0,所有樣本被與預測為正類,樣本的預測結果隻能為TP或者FP,TN或者FN均為0,是以TPR = TP / (TP + FN) = 1,FPR同樣為1。
4.如何畫ROC曲線
假設已經得出一系列樣本被劃分為正類的機率,然後按照大小排序,下圖是一個示例,圖中共有20個測試樣本,“Class”一欄表示每個測試樣本真正的标簽(p表示正樣本,n表示負樣本),“Score”表示每個測試樣本屬于正樣本的機率。
接下來,我們從高到低,依次将“Score”值作為門檻值threshold,當測試樣本屬于正樣本的機率大于或等于這個threshold時,我們認為它為正樣本,否則為負樣本。舉例來說,對于圖中的第4個樣本,其“Score”值為0.6,那麼樣本1,2,3,4都被認為是正樣本,因為它們的“Score”值都大于等于0.6,而其他樣本則都認為是負樣本。每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。這樣一來,我們一共得到了20組FPR和TPR的值,将它們畫在ROC曲線的結果如下圖:
(以上例子來自網絡)
5.AUC值的含義
AUC值指的是ROC曲線下的面積。AUC常常被用來作為模型排序好壞的名額,原因在于AUC可以看做随機從正負樣本中選取一對正負樣本,其中正樣本的得分大于負樣本的機率。是以,AUC常用在排序場景的模型評估,比如搜尋和推薦等場景。
6.AUC的計算方法
在有M個正樣本,N個負樣本的資料集裡。一共有MN對樣本(一對樣本即,一個正樣本與一個負樣本)。統計這MN對樣本裡,正樣本的預測機率大于負樣本的預測機率的個數。
∑ I ( P 正 , P 負 ) M ∗ N \frac{\sum I(P_{正}, P_負)}{M*N} M∗N∑I(P正,P負)
其中,
I ( P 正 , P 負 ) = { 1 , P 正 > P 負 0.5 , P 正 = P 負 0 , P 正 < P 負 I(P_{正}, P_負)=\left\{ \begin{aligned} 1, P_正>P_負 \\ 0.5,P_正=P_負 \\ 0,P_正<P_負 \end{aligned} \right. I(P正,P負)=⎩⎪⎨⎪⎧1,P正>P負0.5,P正=P負0,P正<P負
舉個例子來看:
index | label | pro |
---|---|---|
A | 0.1 | |
B | 0.5 | |
C | 1 | 0.3 |
D | 1 | 0.7 |
上面的例子有4個樣本,其中兩個為正兩個為負,則M*N=4,總共4個樣本對。
(D,B), (D,A), (C,B), (C,A)
其中,I(D,B)=I(D,A)=I(C,A)=1, I(C,B)=0
最後AUC的值為(1+1+1+0)/4 = 0.75
參考文獻
1.https://zh.wikipedia.org/wiki/ROC%E6%9B%B2%E7%BA%BF