ROC曲线

在訊號檢測理論中，**接收者操作特徵曲線**，或者叫 **ROC 曲線**（英語：Receiver operating characteristic curve），是一種坐標圖式的分析工具，用於選擇最佳的訊號偵測模型、捨棄次佳的模型或者在同一模型中設定最佳閾值。

在做決策時，ROC 分析能不受成本／效益的影響，給出客觀中立的建議。

ROC 曲線首先是由二戰中的電子工程師和雷達工程師發明的，用來偵測戰場上的敵軍載具（飛機、船艦），也就是訊號檢測理論。之後很快就被引入了心理學來進行訊號的知覺檢測。數十年來，ROC 分析被用於醫學、無線電、生物學、犯罪心理學領域中，而且最近在機器學習（machine learning）和資料探勘（data mining）領域也得到了很好的發展。

## 基本概念

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

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

1. **真陽性**（TP）：**診斷為有**，**實際上也有**高血壓。
2. **偽陽性**（FP）：**診斷為有**，**實際卻沒有**高血壓。
3. **真陰性**（TN）：**診斷為沒有**，**實際上也沒有**高血壓。
4. **偽陰性**（FN）：**診斷為沒有**，**實際卻有**高血壓。

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

## ROC 空間

ROC 空間將偽陽性率（FPR）定義為 _X_ 軸，真陽性率（TPR）定義為 _Y_ 軸。

* TPR：在所有實際為陽性的樣本中，被**正確地**判斷為陽性之比率。

　
: $TPR=TP/(TP+FN)$

* FPR：在所有實際為陰性的樣本中，被**錯誤地**判斷為陽性之比率。

　
: $FPR=FP/(FP+TN)$

**給定**一個二元分類**模型**和它的**閾值**，就能從所有樣本的（陽性／陰性）真實值和預測值計算出一個 (X=FPR, Y=TPR) 座標點。
在這條線的以上的點代表了一個好的分類結果（勝過隨機分類），而在這條線以下的點代表了差的分類結果（劣於隨機分類）。

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

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

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

* 點與隨機猜測線的距離，是預測力的指標：**離左上角越近的點預測（診斷）準確率越高**。離右下角越近的點，預測越不準。
* 在 **A**、**B**、**C** 三者當中，最好的結果是 **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 點** 往右上（或右／或上）移動，或不動；但**絕不會往左下 (或左／或下) 移動**。

## 曲線下面積（AUC）

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

### 意義

ROC 曲線下方的面積（英語：Area under the Curve of ROC (AUC ROC)），其意義是：

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

從 AUC 判斷分類器（預測模型）優劣的標準：

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

### 計算

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

#### 梯形法

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

* 優點：簡單，所以常用。
* 缺點：傾向於低估 AUC。

#### ROC AUCH 法

### 潛在問題

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

## 分析軟體

所有常用於統計分析的軟體（例：SPSS、SAS、SYSTAT、S-Plus、ROCKIT、RscorePlus）都有依據不同閾值自動計算真陽性和偽陽性比率、並依此繪製 ROC 曲線的功能。

**離散分類器**（英語：discrete，或稱「間斷分類器」），如決策樹，產生的是離散的數值或者一個二元標籤。應用到實例中，這樣的分類器最後只會在 ROC 空間產生單一的點。而一些其他的分類器，如樸素貝葉斯分類器，邏輯迴歸或者人工神經網路，產生的是實例屬於某一類的可能性，對於這些方法，一個閾值就決定了 ROC 空間中點的位置。舉例來說，如果可能值低於或者等於 0.8 這個閾值就將其認為是陽性的類，而其他的值被認為是陰性類。這樣就可以通過畫每一個閾值的 ROC 點來生成一個生成一條曲線。MedCalc 是較好的 ROC 曲線分析軟體。

## 參考文獻

### 參照

### 來源

## 外部連結

* An introduction to ROC analysis
* A more thorough treatment of ROC curves and signal detection theory
* Tom Fawcett's ROC Convex Hull: tutorial, program and papers（頁面存檔備份，存於網際網路檔案館）
* Peter Flach's tutorial on ROC analysis in machine learning
* The magnificent ROC（頁面存檔備份，存於網際網路檔案館） — An explanation and interactive demonstration of the connection of ROCs to archetypal bi-normal test result plots