本文整理了關於機器學習分類問題的評價指標——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】Fβ_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的函數爲 f1_score ,其中有一個參數average用來控制F1的計算方式,今天咱們就說說當參數取micro和macro時候的區別。
'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曲線的橫座標是前文提到的FPR(false positive rate),縱座標是TPR(truepositive rate,召回率)。
放在具體領域來理解上述兩個指標。如在醫學診斷中,判斷有病的樣本。
不難發現,這兩個指標之間是相互制約的。若是某個醫生對於有病的症狀比較敏感,稍微的小症狀都判斷爲有病,那麼他的第一個指標應該會很高,可是第二個指標也就相應地變高。最極端的狀況下,他把全部的樣本都看作有病,那麼第一個指標達到1,第二個指標也爲1。
咱們能夠看出
既然已經這麼多評價標準,爲何還要使用ROC和AUC呢?
由於ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線可以保持不變。在實際的數據集中常常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多不少(或者相反),並且測試數據中的正負樣本的分佈也可能隨着時間變化。
AUC(Area Under Curve)被定義爲ROC曲線下的面積,顯然這個面積的數值不會大於1。又因爲ROC曲線通常都處於y=x這條直線的上方,因此AUC的取值範圍在0.5和1之間。使用AUC值做爲評價標準是由於不少時候ROC曲線並不能清晰的說明哪一個分類器的效果更好,而做爲一個數值,對應AUC更大的分類器效果更好。