ROC與AUC學習
阿新 • • 發佈:2018-11-11
全文轉自:https://www.cnblogs.com/gatherstars/p/6084696.html#commentform
這篇真的講的清楚明白!要多複習!加深記憶!
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為分類閾值的傳統做法也顯得不恰當了。 為了解決上述問題,人們從醫療分析領域引入了一種新的分類模型 performance2.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的定義
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來量化他。