ROC曲線與AUC值 (轉)

from: https://www.cnblogs.com/gatherstars/p/6084696.html


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)。
 


發佈了54 篇原創文章 · 獲贊 25 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章