auc到多少有意義 對模型評價指標AUC的理解

2021-10-16 19:52:14 字數 2910 閱讀 1828

auc是一種衡量機器學習模型分類效能的重要且非常常用的指標,其只能用於二分類的情況.

auc的本質含義反映的是對於任意一對正負例樣本,模型將正樣本**為正例的可能性 大於 將負例**為正例的可能性的 概率( :-) 沒辦法這句話就是這麼繞, rap~).

auc作為數值,那麼到底是怎麼來的?怎麼理解它的意義?

在真正接觸auc之前,還需要了解兩個概念, 分別是混淆矩陣(confusion matrix) 和 roc曲線.

混淆矩陣:

混淆矩陣.png

可以看出混淆矩陣由四個值構成:

tp : 真實類別為1,且**結果為1的樣本個數,**正確.

fp : 真實類別為0,且**結果為1的樣本個數,**錯誤.

fn : 真實類別為1,且**結果為0的樣本個數,**錯誤.

tn : 真實類別為0,且**結果為0的樣本個數,**正確.

由混淆矩陣可以計算得到roc曲線的關鍵引數:tpr(真正例率) 和 fpr(假正例率).

對tpr最通俗易懂的理解即將正例**為正例的比例

對fpr最通俗易懂的理解即將負例**為正例的比例(注意: tpr和fpr分子上表示的都是模型將樣本**為正例的情況,不過乙個是**正確乙個是**錯誤)

理解到這個程度就可以接觸roc曲線了

roc curve

可以從圖上面看出,fpr和tpr分別是roc曲線的橫座標和縱座標.對於roc曲線有四個點需要單獨拎出來理解,這對理解auc也是很有幫助的.它們分別是:

[0, 0] : fpr,tpr均為0.根據式(1)(2)可以得到即tp=fp=0,其含義為模型將所有樣本均**為負例.

[0, 1] : fpr=0,tpr=1. 根據式(1)(2)可以得到即fp=fn=0,其含義為模型做出了沒有任何錯誤的完美**(由此可以看出roc曲線越是向上凸(貼近上邊界),曲線上的點的縱座標(tpr)越是大,代表模型的效能越好).

[1, 0] : fpr =1,tpr=0.根據式(1)(2)可以得到即tp=tn=0,其含義為模型做出的**全部錯誤(由此可以看出,roc曲線越是貼近下邊界(下凹),那麼模型的效能越是差).

[1, 1] : fpr =1,tpr=1.根據式(1)(2)可以得到即tn=fn=0,其意義為模型將所有樣本均**為正例.

此外,對於圖roc curve中的三根曲線的理解:

黑線: 幾何含義即roc圖的對角線, 數值含義即tpr = fpr,物理含義即對於任意抽取的樣本,模型將其中正例**為正例的概率和將負例**為正例的概率是相等的.這也就意味著和隨機分類的效能一樣.

紅藍色線: 通常來講, 我們的機器學習模型要優於隨機分類器,因此我們經常看到的曲線往往都是像藍色線和紅色線一樣的roc曲線.它們相比黑線是有明顯上凸的,同樣的橫座標(fpr)下,紅藍線縱座標(tpr)是大於黑線的,即代表模型將正例**為正例的概率要大於將負例**為正例的概率.同理可以看出藍線模型由於紅線模型.

如果要將上述的標準進行定量評估,就延伸得到了auc, auc即roc曲線下方與座標軸圍成的面積大小

auc(area under the roc curve)

auc更直觀地反應了roc曲線向我們表達的模型分類能力.其數值大小(越大越好)代表了模型的效能優劣.說到這裡,自然也就能夠明白開篇關於auc物理意義的闡述了,重申一遍即:auc的本質含義反映的是對於任意一對正負例樣本,模型將正樣本**為正例的可能性 大於 將負例**為正例的可能性的 概率(例如: 當auc = 0.5, roc曲線為黑線時, 模型將一對正負例樣本中的正樣本**為正例的概率為0.5,將負樣本**為正例的概率也為0.5,等效於隨機分類**).

auc = 1,代表完美分類器

0.5 < auc < 1,優於隨機分類器

0 < auc < 0.5,差於隨機分類器

如何繪製roc曲線?

繪製曲線,必不可少的就是拿到曲線上的點,也就是需要get到每個點的tpr和fpr數值.

這裡借用在知乎上看到的例子啦:

case_1:

對於像svm這樣的硬分類器,分類得到的結果都是已經標記完成的二分類數值(0/1).就長下面這個樣子:

由此很容易得到混淆矩陣confusion matrix:

fpr-and-tpr.png

imagemogr2/auto-orient/strip%7cimageview2/2/w/1240)

已經拿到tp/fp/tn/fn,那麼可以計算出tpr = 3/4, fpr = 2/4.從而可以繪製得到roc曲線:

roc_1

case_2:

對於邏輯回歸lr, 還有常用的xgb, lgb而言,分類的**結果都是乙個分類概率值.比如長這個樣子:

這種情況,看起來就一臉懵逼,因為完全沒有**好的標籤. 這個時候就需要我們先將**結果進行排序,逐步調整分類的閾值, 依次將樣本劃為正例,然後計算tpr和fpr的數值進行繪圖.

步驟:threshold = 0.9, 即只有第乙個樣本被劃分為正例,此時tpr = 1/4, fpr = 0.

threshold = 0.8, 此時tpr = 2/4, fpr = 0.

threshold = 0.7, 此時tpr = 2/4, fpr = 1/4.

threshold = 0.1, 此時tpr = 1, fpr = 1.

最後繪圖即可.

說了這麼多, 最後強調一下auc作為評價指標的優勢:

由於auc是與tpr核fpr密切相關的,而tpr和fpr分別從正例,負例的角度上去衡量了模型的分類能力(具有跟精準率和召回率一樣的能在樣本極端不平衡的情況下進行有效的衡量優勢),因此在樣本極端不平衡的情況下,auc依然能夠做出合理的評價. :-)

allauc的計算方式:

最為直觀的方式當然是繪製出roc曲線,然後計算出曲線下包繞的面積,面積值即auc.

2.直接計算:假設總共有(m+n)個樣本,其中正樣本m個,負樣本n個,總共有mn個樣本對,計數,正樣本**為正樣本的概率值大於負樣本**為正樣本的概率值記為1,累加計數,然後除以(mn)就是auc的值

有意義的開始

今天真的是很值得紀念的一天,來深圳第一次過得這麼充實。原因很簡單有希望 有盼頭 第一次主動約mm出去玩 好像不是約會,是兩位兄弟幫忙約的,呵呵,再次感謝兩位好兄弟的幫助 值得紀念。一直比較膽小,尤其是現在這種處境,完全沒有什麼信心,自己真是太膽小了,總是想著兩位兄弟幫忙打頭陣,為自己鋪路,好像不大好...

有意義的編碼

現象描述 使用有意義的編碼作為一條記錄的id,甚至作為資料庫的主鍵存在,例如,乙個員工的編碼設定為0203004,其中02代表員工所在分公司,03代表員工所在部門,004代表員工進入到該部門的序號。原因分析 id的設定方式大概有以下幾種,一種是純粹的流水號,從1開始,每次加1,或者對其將以改進,將數...

Working Practice 有意義大於形式

近來我堅持寫部落格一段時間,感覺收穫很多。通過把自己的想法,思考,理解記錄在部落格裡,有下面的優點 可以不用擔心會忘記這些東西。對自己的成長也有了一定的積累。一直保持了學習思考的習慣。開始的時候我也在想,每篇部落格是不是都需要很精闢,讓別人看上去感覺很棒,這種想法一直讓我成為長期以來不寫部落格的藉口...