ROC曲線
ROC曲線的全稱是“接收者操作特征曲線”(receiver operating characteristic curve),它是一種坐標圖式的分析工具,用於:
- 選擇最佳的信號偵測模型、舍棄次佳的模型。
- 在同一模型中設置最佳閾值。
ROC曲線淵源
ROC曲線起源於第二次世界大戰時期雷達兵對雷達的信號判斷。當時每一個雷達兵的任務就是去解析雷達的信號,但是當時的雷達技術還沒有那么先進,存在很多噪聲(比如一只大鳥飛過),所以每當有信號出現在雷達屏幕上,雷達兵就需要對其進行破譯。有的雷達兵比較謹慎,凡是有信號過來,他都會傾向於解析成是敵軍轟炸機,有的雷達兵又比較神經大條,會傾向於解析成是飛鳥。這個時候,雷達兵的上司就很頭大了,他急需一套評估指標來幫助他匯總每一個雷達兵的預測信息,以及來評估這台雷達的可靠性。於是,最早的ROC曲線分析方法就誕生了,用來作為評估雷達可靠性的指標。
在那之后,ROC曲線就被廣泛運用於醫學以及機器學習領域。
二分類場景的ROC曲線和AUC
二分類問題
上面雷達判斷是否飛機,就是一個二分類問題。
判斷預測的結果有下面四種結局:
判斷結果和實際 | |
---|---|
真陽性 (TP) | 判斷為有飛機,實際上也有飛機。 |
偽陽性(FP) | 判斷為有飛機,實際卻沒有飛機,可能是大雁。 |
真陰性(TN) | 判斷為沒有飛機,實際上也沒有飛機。 |
偽陰性(FN) | 判斷為沒有飛機,實際卻有飛機。 |
相關術語
- 陽性 (P, Positive)
正樣本。 - 陰性 (N, Negative)
負樣本。 - 真陽性 (TP, true positive)
表明實際是正樣本預測成正樣本的樣本。 - 真陰性 (TN, true negative)
表明實際是負樣本預測成負樣本的樣本。 - 偽陽性 (FP, false positive)
表明實際是負樣本預測成正樣本的樣本。 - 偽陰性 (FN, false negative)
表明實際是正樣本預測成負樣本的樣本。
ROC 曲線
ROC空間將偽陽性率(FPR)定義為 X 軸,真陽性率(TPR)定義為 Y 軸。范圍都是[0,1]。
- 離左上角越近的點預測(診斷)准確率越高。
- 離右下角越近的點,預測越不准。
- 中間這條紅色對角線,是隨機猜測線。
相關術語
偽陽性率 (FPR, false positive rate)
在所有實際為陰性的樣本中,被錯誤地判斷為陽性之比率。
又稱:錯誤命中率,假警報率 (false alarm rate)
FPR = FP / N = FP / (FP + TN)
真陽性率 (TPR, true positive rate)
在所有實際為陽性的樣本中,被正確地判斷為陽性之比率。
又稱:命中率 (hit rate)、敏感度(sensitivity)
TPR = TP / P = TP / (TP + FN)
為什么ROC可以用來評估模型好壞?
對於某個二分類分類器來說,輸出結果標簽(0還是1)往往取決於輸出的概率以及預定的概率閾值。
比如常見的閾值就是0.5,大於0.5的認為是正樣本,小於0.5的認為是負樣本。
- 如果增大這個閾值,預測錯誤(針對正樣本而言,即指預測是正樣本但是預測錯誤,下同)的概率就會降低,但是隨之而來的就是預測正確的概率也降低;
- 如果減小這個閾值,那么預測正確的概率會升高但是同時預測錯誤的概率也會升高。
實際上,這種閾值的選取也一定程度上反映了分類器的分類能力。
我們當然希望無論選取多大的閾值,分類都能盡可能地正確,也就是希望該分類器的分類能力越強越好,一定程度上可以理解成一種魯棒能力吧。
AUC值
ROC曲線一定程度上可以反映分類器的分類效果,但是不夠直觀,我們希望有這么一個指標,如果這個指標越大越好,越小越差,於是,就有了AUC。
AUC實際上就是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的含義為,當隨機挑選一個正樣本和一個負樣本,根據當前的分類器計算得到的score將這個正樣本排在負樣本前面的概率。
為什么用AUC?
為什么不用准確率(accuracy)?
在二分類中,如果正反例分布不平衡,而我們對minority class更感興趣,這時accuracy評價指標基本沒有參考價值,比如欺詐檢測,癌症檢測等場景。舉個栗子:
在測試集里,有100個sample,99個反例,只有1個正例。如果我的模型不分青紅皂白對任意一個sample都預測是反例,那么我的模型的accuracy是 正確的個數/總個數 = 99/100 = 99%。
為什么不用召回率(recall)和精確率(precision)?
召回率:把實際為真值的判斷為真值的概率。
精確率:判斷為真值,判斷正確的概率(實際也為真值)。
recall = TP / (TP + FN)
precision = TP / (TP + FP)
一般說來,如果想要召回的多,精確率就要下降;想要精確率提升,召回的就少。因此,召回率與精確率是魚與熊掌不可兼得。
為什么不用F1分數?
F1-score 可以看做是precision和recall的綜合評價指標,公式為:
問題就是,如果你的兩個模型,一個precision特別高,recall特別低,而另一個recall特別高,precision特別低的時候,F1-score可能是差不多的,你也不能基於此來作出選擇。
AUC適用場景
AUC了是一個用來評估分類模型性能的常見指標,優點是:
- 適用於正負樣本分布不一致的場景;
- 對於分類器性能的評價,不限定單一的分類閾值;
參考: