Learning Model :什麼是ROC和AUC?[轉錄]

Ryan Lu
AI反斗城
Published in
11 min readJul 2, 2020

基本概念

分類模型(又稱分類器,或診斷)是將一個實例映射到一個特定類的過程。ROC分析的是二元分類模型,也就是輸出結果只有兩種類別的模型,例如:(陽性/陰性)(有病/沒病)(垃圾郵件/非垃圾郵件)(敵軍/非敵軍)。

訊號偵測(或變數測量)的結果是一個連續值時,類與類的邊界必須用一個閾值(英語:threshold)來界定。舉例來說,用血壓值來檢測一個人是否有高血壓,測出的血壓值是連續的實數(從0~200都有可能),以收縮壓140/舒張壓90為閾值,閾值以上便診斷為有高血壓,閾值未滿者診斷為無高血壓。二元分類模型的個案預測有四種結局:

  1. 真陽性(TP):診斷為有實際上也有高血壓。
  2. 偽陽性(FP):診斷為有實際卻沒有高血壓。
  3. 真陰性(TN):診斷為沒有實際上也沒有高血壓。
  4. 偽陰性(FN):診斷為沒有實際卻有高血壓。

這四種結局可以畫成2 × 2的混淆矩陣

ROC空間

ROC空間將偽陽性率(FPR)定義為 X 軸,真陽性率(TPR)定義為 Y 軸。

  • TPR:在所有實際為陽性的樣本中,被正確地判斷為陽性之比率。
  • FPR:在所有實際為陰性的樣本中,被錯誤地判斷為陽性之比率。

給定一個二元分類模型和它的閾值,就能從所有樣本的(陽性/陰性)真實值和預測值計算出一個 (X=FPR, Y=TPR) 座標點。

從 (0, 0) 到 (1,1) 的對角線將ROC空間劃分為左上/右下兩個區域,在這條線的以上的點代表了一個好的分類結果(勝過隨機分類),而在這條線以下的點代表了差的分類結果(劣於隨機分類)。

完美的預測是一個在左上角的點,在ROC空間座標 (0,1)點,X=0 代表著沒有偽陽性,Y=1 代表著沒有偽陰性(所有的陽性都是真陽性);也就是說,不管分類器輸出結果是陽性或陰性,都是100%正確。一個隨機的預測會得到位於從 (0, 0) 到 (1, 1) 對角線(也叫無識別率線)上的一個點;最直觀的隨機預測的例子就是拋硬幣。

讓我們來看在實際有100個陽性和100個陰性的案例時,四種預測方法(可能是四種分類器,或是同一分類器的四種閾值設定)的結果差異:

將這4種結果畫在ROC空間裡:

  • 點與隨機猜測線的距離,是預測力的指標:離左上角越近的點預測(診斷)準確率越高。離右下角越近的點,預測越不準。
  • ABC三者當中,最好的結果是A方法。
  • B方法的結果位於隨機猜測線(對角線)上,在例子中我們可以看到B的準確度(ACC,定義見前面表格)是50%。
  • C雖然預測準確度最差,甚至劣於隨機分類,也就是低於0.5(低於對角線)。然而,當將C以 (0.5, 0.5) 為中點作一個鏡像後,C’的結果甚至要比A還要好。這個作鏡像的方法,簡單說,不管C(或任何ROC點低於對角線的情況)預測了什麼,就做相反的結論。

ROC曲線

上述ROC空間裡的單點,是給定分類模型且給定閾值後得出的。但同一個二元分類模型的閾值可能設定為高或低,每種閾值的設定會得出不同的FPR和TPR。

  • 同一模型每個閾值 的 (FPR, TPR) 座標都畫在ROC空間裡,就成為特定模型的ROC曲線

例如右圖,人體的血液蛋白濃度是呈常態分布的連續變數,病人的分布是紅色,平均值為A g/dL,健康人的分布是藍色,平均值是C g/dL。健康檢查會測量血液樣本中的某種蛋白質濃度,達到某個值(閾值,threshold)以上診斷為有疾病徵兆。研究者可以調整閾值的高低(將左上圖的B垂直線往左或右移動),便會得出不同的偽陽性率與真陽性率,總之即得出不同的預測準確率。

1. 由於每個不同的分類器(診斷工具、偵測工具)有各自的測量標準和測量值的單位(標示為:「健康人-病人分布圖」的橫軸),所以不同分類器的「健康人-病人分布圖」都長得不一樣。

2. 比較不同分類器時,ROC曲線的實際形狀,便視兩個實際分布的重疊範圍而定,沒有規律可循。

3. 但在同一個分類器之內,閾值的不同設定對ROC曲線的影響,仍有一些規律可循:

  • 當閾值設定為最高時,亦即所有樣本都被預測為陰性,沒有樣本被預測為陽性,此時在偽陽性率 FPR = FP / ( FP + TN ) 算式中的 FP = 0,所以 FPR = 0%。同時在真陽性率(TPR)算式中, TPR = TP / ( TP + FN ) 算式中的 TP = 0,所以 TPR = 0%

當閾值設定為最高時,必得出ROC座標系左下角的點 (0, 0)。

  • 當閾值設定為最低時,亦即所有樣本都被預測為陽性,沒有樣本被預測為陰性,此時在偽陽性率FPR = FP / ( FP + TN ) 算式中的 TN = 0,所以 FPR = 100%。同時在真陽性率 TPR = TP / ( TP + FN ) 算式中的 FN = 0,所以 TPR=100%

當閾值設定為最低時,必得出ROC座標系右上角的點 (1, 1)。

  • 因為TP、FP、TN、FN都是累積次數,TN和FN隨著閾值調低而減少(或持平),TP和FP隨著閾值調低而增加(或持平),所以FPR和TPR皆必隨著閾值調低而增加(或持平)。

隨著閾值調低,ROC點 往右上(或右/或上)移動,或不動;但絕不會往左下(或左/或下)移動

隨著閾值調整,ROC座標系裡的點如何移動

上述ROC空間裡的單點,是給定分類模型且給定閾值後得出的。但同一個二元分類模型的閾值可能設定為高或低,每種閾值的設定會得出不同的FPR和TPR。

  • 同一模型每個閾值 的 (FPR, TPR) 座標都畫在ROC空間裡,就成為特定模型的ROC曲線

例如右圖,人體的血液蛋白濃度是呈常態分布的連續變數,病人的分布是紅色,平均值為A g/dL,健康人的分布是藍色,平均值是C g/dL。健康檢查會測量血液樣本中的某種蛋白質濃度,達到某個值(閾值,threshold)以上診斷為有疾病徵兆。研究者可以調整閾值的高低(將左上圖的B垂直線往左或右移動),便會得出不同的偽陽性率與真陽性率,總之即得出不同的預測準確率。

1. 由於每個不同的分類器(診斷工具、偵測工具)有各自的測量標準和測量值的單位(標示為:「健康人-病人分布圖」的橫軸),所以不同分類器的「健康人-病人分布圖」都長得不一樣。

2. 比較不同分類器時,ROC曲線的實際形狀,便視兩個實際分布的重疊範圍而定,沒有規律可循。

3. 但在同一個分類器之內,閾值的不同設定對ROC曲線的影響,仍有一些規律可循:

  • 當閾值設定為最高時,亦即所有樣本都被預測為陰性,沒有樣本被預測為陽性,此時在偽陽性率 FPR = FP / ( FP + TN ) 算式中的 FP = 0,所以 FPR = 0%。同時在真陽性率(TPR)算式中, TPR = TP / ( TP + FN ) 算式中的 TP = 0,所以 TPR = 0%

當閾值設定為最高時,必得出ROC座標系左下角的點 (0, 0)。

  • 當閾值設定為最低時,亦即所有樣本都被預測為陽性,沒有樣本被預測為陰性,此時在偽陽性率FPR = FP / ( FP + TN ) 算式中的 TN = 0,所以 FPR = 100%。同時在真陽性率 TPR = TP / ( TP + FN ) 算式中的 FN = 0,所以 TPR=100%

當閾值設定為最低時,必得出ROC座標系右上角的點 (1, 1)。

  • 因為TP、FP、TN、FN都是累積次數,TN和FN隨著閾值調低而減少(或持平),TP和FP隨著閾值調低而增加(或持平),所以FPR和TPR皆必隨著閾值調低而增加(或持平)。

隨著閾值調低,ROC點 往右上(或右/或上)移動,或不動;但絕不會往左下(或左/或下)移動

曲線下面積(AUC)

例示三種AUC值(曲線下面積)

在比較不同的分類模型時,可以將每個模型的ROC曲線都畫出來,比較曲線下面積做為模型優劣的指標。

意義

ROC曲線下方的面積(英語:Area under the Curve of ROC (AUC ROC)),其意義是:

  • 因為是在1x1的方格裡求面積,AUC必在0~1之間。
  • 假設閾值以上是陽性,以下是陰性;
  • 若隨機抽取一個陽性樣本和一個陰性樣本,分類器正確判斷陽性樣本的值高於陰性樣本之機率
  • 簡單說:AUC值越大的分類器,正確率越高。

從AUC判斷分類器(預測模型)優劣的標準:

  • AUC = 1,是完美分類器,採用這個預測模型時,存在至少一個閾值能得出完美預測。絕大多數預測的場合,不存在完美分類器。
  • 0.5 < AUC < 1,優於隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。
  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
  • AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

計算

AUC的計算有兩種方式,都是以逼近法求近似值。

梯形法

梯形法(英語:trapezoid method):簡單地將每個相鄰的點以直線連接,計算連線下方的總面積。因為每一線段下方都是一個梯形,所以叫梯形法

  • 優點:簡單,所以常用。
  • 缺點:傾向於低估AUC。

ROC AUCH法

潛在問題

AUC of ROC是機器學習的社群最常使用來比較不同模型優劣的方法[2] 。然而近來這個做法開始受到質疑,因為有些機器學習的研究指出,AUC的雜訊太多,並且很常求不出可信又有效的AUC值(此時便不能保證AUC傳達本節開頭所述之意義),使得AUC在模型比較時產生的問題比解釋的問題更多[3][4][5]

ROC曲線繪製原理及如何用SPSS繪製ROC曲線

ROC曲線(Receiver operating characteristic curve),即受試者工作特徵曲線,主要用來評價某個指標對兩類被試(如病人和健康人)分類/診斷的效果,以及尋找最佳的指標臨界值使得分類效果最好。但是ROC曲線繪製的原理是什麼,或者說如何一步步畫出ROC曲線,以及如何用SPSS軟件快速繪製出ROC曲線呢?對於很多新手朋友來說,對上述問題並不十分清楚。筆者這裡對上述問題進行詳細闡述,以期大家對ROC曲線有更深入的了解。

ROC曲線的主要用途

前面已經提到,ROC曲線的主要用途有兩個:1)評價某個/多個指標對兩類被試(如病人和健康人)分類/診斷的效果。通過畫出某個指標的ROC曲線就可以很明確地看出其分類/診斷效果的好壞;另外,可以同時畫出多個指標的ROC曲線併計算各自的AUC(area under ROC,ROC曲線下的面積),就可以知道哪個指標的分類/診斷效果更好。2)尋找最佳的指標閾值使得分類效果最佳。

ROC曲線的繪製原理

ROC曲線是如何繪製出來的呢?在此之前,我們先學習幾個基本的概念。1)真陽性率(TPR, True positive rate):所有實際為陽性的樣本被正確地判斷為陽性的個數與所有實際為陽性的樣本個數之比,TPR又稱為Sensitivity(靈敏度);2 )假陽性概率(FPR, False positive rate):所有實際為陰性的樣本被錯誤地判斷為陽性的個數與所有實際為陰性的樣本個數之比,FPR等於1-Specificity。

ROC曲線其實就是以FPR為橫坐標,TPR為縱坐標繪製出來的曲線。

下面以一個具體的例子來詳細了解ROC曲線是如何繪製的。

如圖1所示,假設有10個被試,分成兩類,Class=1的表示陽性樣本,Class=0的表示陰性樣本,Value表示測量的某個指標值。

1)首先,依據Value值從大到小對這10個被試進行排序(圖1已經是按此規則排過序的);

2)接下來,依次把Value值作為閾值(即閾值依次為0.9,0.8,0.7,…,0.05),當被試的Value值大於等於此閾值時被認為是陽性,否則此被試被認為是陰性。比如說,當以Value=0.6作為閾值,那麼被試1,2,3,4被分類成陽性樣本,其他被試被分類成陰性樣本,據此,我們可以計算得到TPR=3/5,FPR =1/5。這樣,我們就可以得到一組(TPR,FPR)值,依次把這10個Value值作為閾值,我們就可以得到10組(TPR,FPR)值,把這10組(TPR,FPR)繪製出來得到的曲線就是ROC曲線。

[轉錄]
ROC曲線
ROC曲線繪製原理

--

--