關於ROC與AUC最通俗的解釋

2021-08-21 06:26:06 字數 2627 閱讀 8473

本文內容大部分來自於如下兩個部落格: 

假設有下面兩個分類器,哪個好?(樣本中有a類樣本90個,b 類樣本10個。)

、a類樣本

b類樣本

分類精度

分類器c1

a*90(100%)

a*10(0%)

90%分類器c2

a*70 + b*20 (78%)

a*5 + b*5 (50%)

75%分類器c1把所有的測試樣本都分成了a類,分類器c2把a類的90個樣本分對了70個,b類的10個樣本分對了5個。

則c1的分類精度為 90%,c2的分類精度為75%,但直覺上,我們感覺c2更有用些。但是依照正確率來衡量的話,那麼肯定c1的效果好一點。那麼這和我們認為的是不一致的。也就是說,有些時候,僅僅依靠正確率是不妥當的。

我們還需要乙個評價指標,能客觀反映對正樣本、負樣本綜合**的能力,還要考慮消除樣本傾斜的影響(其實就是歸一化之類的思想,實際中很重要,比如pv總是遠遠大於click),這就是auc指標能解決的問題。

為了理解auc,我們需要先來弄懂roc。 

先來看乙個普遍的二分類問題的結果,**值和實際值有4種組合情況,看下面的**: 

我們定義乙個變數: 

看圖也就可以知道,tpr表示的就是**正確且實際分類為正的數量 與 所有正樣本的數量的比例。--實際的正樣本中,正確**的比例是多少?

fpr表示的是**錯誤且實際分類為負的數量 與所有負樣本數量的比例。 --實際的負樣本當中,錯誤**的比例是多少?

可以代入到上面的兩個分類器當中,可以得到下面的**(分類器c1):

、**a

**b合計

實際a90090

實際b10010

tpr = fpr = 1.0.

分類器c2:

、**a

**b合計

實際a70

2090

實際b5510

tpr = 0.78, fpr = 0.5

那麼,以tpr為縱座標,fpr為橫座標畫圖,可以得到: 

上圖中藍色表示c1分類器,綠色表示c2分類器。可以知道,這個時候綠色的點比較靠近左上角,可以看做是分類效果較好。所以評估標準改為離左上角近的是好的分類器(考慮了正負樣本的綜合分類能力)。

一連串這樣的點構成了一條曲線,該曲線就是roc曲線。而roc曲線下的面積就是auc(area under the curve of roc)。這就是auc指標的由來。

對於乙個特定的分類器和測試資料集,顯然只能得到乙個分類結果,即一組fpr和tpr結果,而要得到乙個曲線,我們實際上需要一系列fpr和tpr的值才能得到這樣的曲線,這又是如何得到的呢?

可以通過分類器的乙個重要功能「概率輸出」,即表示分類器認為某個樣本具有多大的概率屬於正樣本(或負樣本),來動態調整乙個樣本是否屬於正負樣本(還記得當時阿里比賽的時候有乙個表示被判定為正樣本的概率的列麼?)

假如我們已經得到了所有樣本的概率輸出(屬於正樣本的概率),現在的問題是如何改變這個閾值(概率輸出)?我們根據每個測試樣本屬於正樣本的概率值從大到小排序。下圖是乙個示例,圖中共有20個測試樣本,「class」一欄表示每個測試樣本真正的標籤(p表示正樣本,n表示負樣本),「score」表示每個測試樣本屬於正樣本的概率。 

接下來,我們從高到低,依次將「score」值作為閾值,當測試樣本屬於正樣本的概率大於或等於這個閾值時,我們認為它為正樣本,否則為負樣本。舉例來說,對於圖中的第4個樣本,其「score」值為0.6,那麼樣本1,2,3,4都被認為是正樣本,因為它們的「score」值都大於等於0.6,而其他樣本則都認為是負樣本。每次選取乙個不同的閾值,我們就可以得到一組fpr和tpr,即roc曲線上的一點。這樣一來,我們一共得到了20組fpr和tpr的值,將它們畫在roc曲線的結果如下圖: 

當我們將閾值設定為1和0時,分別可以得到roc曲線上的(0,0)和(1,1)兩個點。將這些(fpr,tpr)對連線起來,就得到了roc曲線。當閾值取值越多,roc曲線越平滑。

--在阿里比賽的時候還以為roc是沒用的!!!!真的是有眼無珠啊!!!還是有疑惑的是:如何根據roc來判定結果的好換呢?看哪個分類器更加接近左上角吧。同時,可以根據roc來確定劃定正樣本的概率邊界選擇在**比較合適!!!原來是這樣!!!!!!!!!

既然已經這麼多評價標準,為什麼還要使用roc和auc呢?因為roc曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,roc曲線能夠保持不變。在實際的資料集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試資料中的正負樣本的分布也可能隨著時間變化。下圖是roc曲線和precision-recall曲線的對比: 

在上圖中,(a)和(c)為roc曲線,(b)和(d)為precision-recall曲線。(a)和(b)展示的是分類其在原始測試集(正負樣本分佈平衡)的結果,(c)和(d)是將測試集中負樣本的數量增加到原來的10倍後,分類器的結果。可以明顯的看出,roc曲線基本保持原貌,而precision-recall曲線則變化較大。

機器學習中ROC及AUC通俗易懂的解釋

roc receiver operating characteristic curve 接收者操作特徵曲線。auc area under curve 上面曲線與x,y軸形成的最大面積。如果你實在不理解roc的中文註解,那就簡單了解一下就行了,點到為止吧!步入正題 step1 roc 首先告訴你roc...

ROC與AUC的資料彙總

roc曲線可以認為越靠上代表分類效果越好,網上的介紹是非常的多,在這裡重點是在說明其中的乙個應用,下面還會有部分介紹,但是具體沒有提及的部分可以網上另外查,不是本文重點。常用的二分類演算法如邏輯回歸,往往需要根據業務需求設定乙個臨界值 用以分開0和1,預設是0.5 我們舉乙個列子來說明這個 臨界值 ...

關於ROC曲線和AUC的知識小記

很多分類器根據測試樣本產生乙個概率 然後將該 值與閾值進行比較,高於閾值則被分類為正類,低於閾值則被分為負類。auc值是評價分類器的乙個指標,全稱是area under curve,直譯就是曲線下的面積。什麼曲線呢,就是roc曲線。真實值和 值的混淆矩陣 值 值0 1真實值0tn fp真實值1fn ...