ROC曲線與AUC值

本文根據如下文章整理而成,連接:
 

1.概述

  AUC(Area Under roc Curve)是一種用來度量分類模型好壞的一個標準。這樣的標準其實有不少,例如:大約10年前在machine learning文獻中一統天下的標準:分類精度;在信息檢索(IR)領域中經常使用的recall和precision,等等。其實,度量反應了人們對」好」的分類結果的追求,同一時期的不一樣的度量反映了人們對什麼是」好」這個最根本問題的不一樣認識,而不一樣時期流行的度量則反映了人們認識事物的深度的變化。
  近年來,隨着machine learning的相關技術從實驗室走向實際應用,一些實際的問題對度量標準提出了新的需求。特別的,現實中樣本在不一樣類別上的不均衡分佈(class distribution imbalance problem)。使得accuracy這樣的傳統的度量標準不能恰當的反應分類器的performance。舉個例子:測試樣本中有A類樣本90個,B 類樣本10個。分類器C1把全部的測試樣本都分紅了A類,分類器C2把A類的90個樣本分對了70個,B類的10個樣本分對了5個。則C1的分類精度爲 90%,C2的分類精度爲75%。可是,顯然C2更有用些。另外,在一些分類問題中犯不一樣的錯誤代價是不一樣的(cost sensitive learning)。這樣,默認0.5爲分類閾值的傳統作法也顯得不恰當了。
爲了解決上述問題,人們從醫療分析領域引入了一種新的分類模型performance評判方法——ROC分析。ROC分析自己就是一個很豐富的內容,有興趣的讀者能夠自行Google,這裏只作些簡單的概念性的介紹。
  ROC的全名叫作Receiver Operating Characteristic,其主要分析工具是一個畫在二維平面上的曲線——ROC curve。平面的橫座標是false positive rate(FPR),縱座標是true positive rate(TPR)。對某個分類器而言,咱們能夠根據其在測試樣本上的表現獲得一個TPR和FPR點對。這樣,此分類器就能夠映射成ROC平面上的一個點。調整這個分類器分類時候使用的閾值,咱們就能夠獲得一個通過(0, 0),(1, 1)的曲線,這就是此分類器的ROC曲線。通常狀況下,這個曲線都應該處於(0, 0)和(1, 1)連線的上方。由於(0, 0)和(1, 1)連線造成的ROC曲線實際上表明的是一個隨機分類器。若是很不幸,你獲得一個位於此直線下方的分類器的話,一個直觀的補救辦法就是把全部的預測結果反向,即:分類器輸出結果爲正類,則最終分類的結果爲負類,反之,則爲正類。雖然,用ROC curve來表示分類器的performance很直觀好用。但是,人們老是但願能有一個數值來標誌分類器的好壞。因而Area Under roc Curve(AUC)就出現了。顧名思義,AUC的值就是處於ROC curve下方的那部分面積的大小。一般,AUC的值介於0.5到1.0之間,較大的AUC表明了較好的performance。

2.ROC曲線

2.1ROC的動機

  對於0,1兩類分類問題,一些分類器獲得的結果每每不是0,1這樣的標籤,如神經網絡獲得諸如0.5,0.8這樣的分類結果。這時,咱們人爲取一個閾值,好比0.4,那麼小於0.4的歸爲0類,大於等於0.4的歸爲1類,能夠獲得一個分類結果。一樣,這個閾值咱們能夠取0.1或0.2等等。取不一樣的閾值,最後獲得的分類狀況也就不一樣。以下面這幅圖:
  藍色表示原始爲負類分類獲得的統計圖,紅色表示原始爲正類獲得的統計圖。那麼咱們取一條直線,直線左邊分爲負類,直線右邊分爲正類,這條直線也就是咱們所取的閾值。閾值不一樣,能夠獲得不一樣的結果,可是由分類器決定的統計圖始終是不變的。這時候就須要一個獨立於閾值,只與分類器有關的評價指標,來衡量特定分類器的好壞。還有在類不平衡的狀況下,如正樣本有90個,負樣本有10個,直接把全部樣本分類爲正樣本,獲得識別率爲90%,但這顯然是沒有意義的。如上就是ROC曲線的動機。

2.2ROC的定義

  關於兩類分類問題,原始類爲positive、negative,分類後的類別爲p'、n'。排列組合後獲得4種結果,以下圖所示:
 
  因而咱們獲得四個指標,分別爲:真陽、僞陽、僞陰、真陰。ROC空間將僞陽性率(FPR)定義爲 X 軸,真陽性率(TPR)定義爲 Y 軸。這兩個值由上面四個值計算獲得,公式以下:
  TPR:在全部實際爲陽性的樣本中,被正確地判斷爲陽性之比率。TPR=TP/(TP+FN)
  FPR:在全部實際爲陰性的樣本中,被錯誤地判斷爲陽性之比率。FPR=FP/(FP+TN)
  放在具體領域來理解上述兩個指標。如在醫學診斷中,判斷有病的樣本。那麼儘可能把有病的揪出來是主要任務,也就是第一個指標TPR,要越高越好。而把沒病的樣本誤診爲有病的,也就是第二個指標FPR,要越低越好。不難發現,這兩個指標之間是相互制約的。若是某個醫生對於有病的症狀比較敏感,稍微的小症狀都判斷爲有病,那麼他的第一個指標應該會很高,可是第二個指標也就相應地變高。最極端的狀況下,他把全部的樣本都看作有病,那麼第一個指標達到1,第二個指標也爲1。

2.3ROC的圖形化表示

  咱們以FPR爲橫軸,TPR爲縱軸,獲得以下ROC空間:
  咱們能夠看出:左上角的點(TPR=1,FPR=0),爲完美分類,也就是這個醫生醫術高明,診斷全對;點A(TPR>FPR),醫生A的判斷大致是正確的。中線上的點B(TPR=FPR),也就是醫生B全都是蒙的,蒙對一半,蒙錯一半;下半平面的點C(TPR<FPR),這個醫生說你有病,那麼你極可能沒有病,醫生C的話咱們要反着聽,爲真庸醫。
上圖中一個閾值,獲得一個點。如今咱們須要一個獨立於閾值的評價指標來衡量這個醫生的醫術如何,也就是遍歷全部的閾值,獲得ROC曲線。仍是一開始的那幅圖,假設以下就是某個醫生的診斷統計圖,直線表明閾值。咱們遍歷全部的閾值,可以在ROC平面上獲得以下的ROC曲線。

  曲線距離左上角越近,證實分類器效果越好。網絡

  如上,是三條ROC曲線,在0.23處取一條直線。那麼,在一樣的FPR=0.23的狀況下,紅色分類器獲得更高的TPR。也就代表,ROC越往上,分類器效果越好。咱們用一個標量值AUC來量化他。

3.AUC值

3.1AUC值的定義

  AUC值爲ROC曲線所覆蓋的區域面積,顯然,AUC越大,分類器分類效果越好。
  AUC = 1,是完美分類器,採用這個預測模型時,無論設定什麼閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。
  0.5 < AUC < 1,優於隨機猜想。這個分類器(模型)妥善設定閾值的話,能有預測價值。
  AUC = 0.5,跟隨機猜想同樣(例:丟銅板),模型沒有預測價值。
  AUC < 0.5,比隨機猜想還差;但只要老是反預測而行,就優於隨機猜想。

3.2AUC值的物理意義

  假設分類器的輸出是樣本屬於正類的socre(置信度),則AUC的物理意義爲,任取一對(正、負)樣本,正樣本的score大於負樣本的score的機率。

3.3AUC值的計算

  (1)第一種方法:AUC爲ROC曲線下的面積,那咱們直接計算面積可得。面積爲一個個小的梯形面積之和,計算的精度與閾值的精度有關。
  (2)第二種方法:根據AUC的物理意義,咱們計算正樣本score大於負樣本的score的機率。取N*M(N爲正樣本數,M爲負樣本數)個二元組,比較score,最後獲得AUC。時間複雜度爲O(N*M)。
  (3)第三種方法:與第二種方法類似,直接計算正樣本score大於負樣本的score的機率。咱們首先把全部樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n(n=N+M),其次爲n-1。那麼對於正樣本中rank最大的樣本(rank_max),有M-1個其餘正樣本比他score小,那麼就有(rank_max-1)-(M-1)個負樣本比他score小。其次爲(rank_second-1)-(M-2)。最後咱們獲得正樣本大於負樣本的機率爲:
時間複雜度爲O(N+M)。
相關文章
相關標籤/搜索