機器學習-Confusion Matrix混淆矩陣、ROC、AUC

本文整理了關於機器學習分類問題的評價指標——Confusion Matrix、ROC、AUC的概念以及理解。
html

混淆矩陣

在機器學習領域中,混淆矩陣(confusion matrix)是一種評價分類模型好壞的形象化展現工具。其中,矩陣的每一列表示的是模型預測的樣本狀況;矩陣的每一行表示的樣本的真實狀況。機器學習

舉個經典的二分類例子:                    混淆表格:函數

               

 

混淆矩陣是除了ROC曲線和AUC以外的另外一個判斷分類好壞程度的方法,經過混淆矩陣咱們能夠很清楚的看出每一類樣本的識別正誤狀況工具

混淆矩陣比模型的精度的評價指標更可以詳細地反映出模型的」好壞」。模型的精度指標,在正負樣本數量不均衡的狀況下,會出現容易誤導的結果。post

基本概念

【1】True Positive學習

  真正類(TP),樣本的真實類別是正類,而且模型識別的結果也是正類。測試

【2】False Negativespa

  假負類(FN),樣本的真實類別是正類,可是模型將其識別成爲負類。翻譯

【3】False Positive3d

  假正類(FP),樣本的真實類別是負類,可是模型將其識別成爲正類。

【4】True Negative

  真負類(TN),樣本的真實類別是負類,而且模型將其識別成爲負類。

評價指標(名詞翻譯來自機器學習實戰)

【1】Accuracy(精確率)

  模型的精度,即模型識別正確的個數 / 樣本的總個數 。通常狀況下,模型的精度越高,說明模型的效果越好。

  

【2*】Precision(正確率)

  又稱爲查準率,表示在模型識別爲正類的樣本中,真正爲正類的樣本所佔的比例。 通常狀況下,查準率越高,說明模型的效果越好。

  

關於Accuracy(精確率)Precision(正確率)的區別

分類精確率(Accuracy),不論是哪一個類別,只要預測正確,其數量都放在分子上,而分母是所有數據數量,這說明精確率是對所有數據的判斷。

而正確率在分類中對應的是某個類別,分子是預測該類別正確的數量,分母是預測爲該類別的所有數據的數量。

或者說,Accuracy是對分類器總體上的精確率的評價,而Precision是分類器預測爲某一個類別的精確率的評價。

【3*】Recall(召回率)=Sensitivity(敏感指標,truepositive rate ,TPR)

  =敏感性指標=查全率,表示的是,模型正確識別出爲正類的樣本的數量佔總的正類樣本數量的比值。 通常狀況下,Recall越高,說明有更多的正類樣本被模型預測正確,模型的效果越好。

  

關於Precision(正確率)Recall(召回率)的理解,套用網上的一個例子:

某池塘有1400條鯉魚,300只蝦,300只鱉。如今以捕鯉魚爲目的,撒一大網,逮着了700條鯉魚,200只蝦,100只鱉。那麼,這些指標分別以下:

正確率 = 700 / (700 +200 + 100) = 70%

召回率 = 700 / 1400 =50%

正確率和召回率是一對矛盾的度量。以上面這個捕魚的例子爲例,若是但願將鯉魚儘量多地捕出來,能夠用大網把池塘裏的東西都捕出來,那麼鯉魚必然都被捕出來了,但這樣正確率會很低。

但願補出的鯉魚比例儘量高,那麼只捕最有把握的,這樣就不免會漏掉一些鯉魚,使得召回率較低。

一般只有在一些簡單任務中,纔可能使得正確率和召回率都很高。

【4】Specificity

  特異性指標,表示的是模型識別爲負類的樣本的數量,佔總的負類樣本數量的比值。

  

  負正類率(false positive rate, FPR),計算公式爲:FPR=FP/(TN+FP),計算的是模型錯識別爲正類的負類樣本佔全部負類樣本的比例,通常越低越好。

Specificity = 1 - FPR 

【5】_Score

  Fβ的物理意義就是將正確率和召回率的一種加權平均,在合併的過程當中,召回率的權重是正確率的β倍。

  F1分數認爲召回率和正確率同等重要,

  F2分數認爲召回率的重要程度是正確率的2倍,更看重recall,即看重模型對正樣本的識別能力。

  而F0.5分數認爲召回率的重要程度是正確率的一半,更看重precision,即看重模型對負樣本的區分能力。

  分類閾值對Precision/Recall的影響:
  作二值分類時,咱們認爲,若h(x)>=0.5,則predict=1;若h(x)<0.5,則predict=0。這裏0.5就是分類閾值。

  增長閾值,咱們會對預測值更有信心,即增長了查準率。但這樣會下降查全率。(High Precision, Low Recall)
  減少閾值,則模型放過的真例就變少,查全率就增長。(Low Precision, High Recall)

  實際應用:

  (1)若是是作搜索,則要在保證召回率理想的狀況下,提高準確率;

  (2)若是作疾病監測、反垃圾,則是要保證準確率的條件下,提高召回率。

  比較經常使用的是F1分數(F1 Score),是統計學中用來衡量二分類模型精確度的一種指標。

  

【6】F1_Score

  數學定義:F1分數(F1_Score),又稱爲平衡F分數(BalancedScore),它被定義爲正確率和召回率的調和平均數。

  β=1的狀況,F1-Score的值是從0到1的,1是最好,0是最差。

  


 

回到上面二分類的例子:

                         

那麼多分類呢?

         

所以咱們知道,計算Precision,Recall,Specificity等只是計算某一分類的特性,而Accuracy和F1-Score是判斷分類模型整體的標準。

sklearn中 F1-micro 與 F1-macro區別和計算原理

在sklearn中的計算F1的函數爲 f1_score ,其中有一個參數average用來控制F1的計算方式,今天咱們就說說當參數取micromacro時候的區別。

'micro':Calculate metrics globally by counting the total true positives, false negatives and false positives.

'micro':經過先計算整體的TP,FN和FP的數量,再計算F1

'macro':Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.

'macro':分佈計算每一個類別的F1,而後作平均(各種別F1的權重相同)

 詳見:http://www.javashuo.com/article/p-cdznmafo-dm.html

ROC曲線

ROC曲線的橫座標是前文提到的FPR(false positive rate),縱座標是TPR(truepositive rate,召回率)。

放在具體領域來理解上述兩個指標。如在醫學診斷中,判斷有病的樣本。

  • 那麼儘可能把有病的揪出來是主要任務,也就是第二個指標TPR,要越高越好。
  • 而把沒病的樣本誤診爲有病的,也就是第一個指標FPR,要越低越好。

不難發現,這兩個指標之間是相互制約的。若是某個醫生對於有病的症狀比較敏感,稍微的小症狀都判斷爲有病,那麼他的第一個指標應該會很高,可是第二個指標也就相應地變高。最極端的狀況下,他把全部的樣本都看作有病,那麼第一個指標達到1,第二個指標也爲1。

咱們能夠看出

  • 左上角的點(TPR=1,FPR=0),爲完美分類,也就是這個醫生醫術高明,診斷全對。
  • 點A(TPR>FPR),醫生A的判斷大致是正確的。中線上的點B(TPR=FPR),也就是醫生B全都是蒙的,蒙對一半,蒙錯一半;下半平面的點C(TPR<FPR),這個醫生說你有病,那麼你極可能沒有病,醫生C的話咱們要反着聽,爲真庸醫。
  • 曲線距離左上角越近,證實分類器效果越好。

爲何使用ROC曲線

既然已經這麼多評價標準,爲何還要使用ROC和AUC呢?

由於ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線可以保持不變。在實際的數據集中常常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多不少(或者相反),並且測試數據中的正負樣本的分佈也可能隨着時間變化。

AUC值

AUC(Area Under Curve)被定義爲ROC曲線下的面積,顯然這個面積的數值不會大於1。又因爲ROC曲線通常都處於y=x這條直線的上方,因此AUC的取值範圍在0.5和1之間。使用AUC值做爲評價標準是由於不少時候ROC曲線並不能清晰的說明哪一個分類器的效果更好,而做爲一個數值,對應AUC更大的分類器效果更好。

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

計算AUC:

  • 第一種方法:AUC爲ROC曲線下的面積,那咱們直接計算面積可得。面積爲一個個小的梯形面積之和。計算的精度與閾值的精度有關。
  • 第二種方法:根據AUC的物理意義,咱們計算正樣本score大於負樣本的score的機率。取N*M(N爲正樣本數,M爲負樣本數)個二元組,比較score,最後獲得AUC。時間複雜度爲O(N*M)。
  • 第三種方法:與第二種方法類似,直接計算正樣本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)。最後咱們獲得正樣本大於負樣本的機率爲

相關文章
相關標籤/搜索