設為星标,第一時間擷取更多幹貨
連結:https://zhuanlan.zhihu.com/p/69101372
本文僅作學術分享,若侵權,請聯系背景删文處理
前言
最近分類問題搞的有點多,但對一些名額依舊有模糊的地方(雖然做了筆記), 事實證明, 筆記筆記,沒有進到腦子裡呀。是以,我想着肯定有跟我一樣半生半熟的小夥伴在分類名額這塊依舊有迷惑,畢竟常用的幾個大多數情況下就夠用了, 這篇文章就主要講一講分類的評估名額。
二、幾個定義:混淆矩陣
- TP:True Positives, 表示實際為正例且被分類器判定為正例的樣本數
- FP:False Positives, 表示實際為負例且被分類器判定為正例的樣本數
- FN:False Negatives, 表示實際為正例但被分類器判定為負例的樣本數
- TN:True Negatives, 表示實際為負例且被分類器判定為負例的樣本數
一個小技巧, 第一個字母表示劃分正确與否, T 表示判定正确(判定正确), F表示判定錯誤(False);第二個字母表示分類器判定結果, P表示判定為正例, N表示判定為負例。
三、幾個正常的名額
Accuracy:
Accuracy 能夠清晰的判斷我們模型的表現,但有一個嚴重的缺陷:在正負樣本不均衡的情況下,占比大的類别往往會成為影響 Accuracy 的最主要因素,此時的 Accuracy 并不能很好的反映模型的整體情況。
Precision:
Recall:
Precision 與 Recall 的權衡
精确率高,意味着分類器要盡量在 “更有把握” 的情況下才将樣本預測為正樣本, 這意味着精确率能夠很好的展現模型對于負樣本的區分能力,精确率越高,則模型對負樣本區分能力越強。
召回率高,意味着分類器盡可能将有可能為正樣本的樣本預測為正樣本,這意味着召回率能夠很好的展現模型對于正樣本的區分能力,召回率越高,則模型對正樣本的區分能力越強。
從上面的分析可以看出,精确率與召回率是此消彼長的關系, 如果分類器隻把可能性大的樣本預測為正樣本,那麼會漏掉很多可能性相對不大但依舊滿足的正樣本,進而導緻召回率降低。
四、F1-Score
F1-Score 能夠很好的評估模型,其主要用于二分類問題, 計算如下:
而 更一般的有
:
其實,
本質上是Recall, Precision 權重比, 當
時,
表明 Recall 的權重要比Precision高,其影響更大, ;當
時,
表明 Recall 的權重要比Precision低, 對應的影響更小;
前面提到 F1 針對的是二分類,而更一般的是,對于多分類問題來說, F1 的計算有多種方式,可以參見 Scikit-Learn 中的評價名額,我們來分别介紹一下。
對于一個多分類問題,假設,對于分類
而言有:
, 那麼各種 F1 的值計算如下。
Macro F1: 宏平均
Macro 算法在計算 Precision 與 Recall 時是先分别計算每個類别的Precision 與 Recall, 然後再進行平均。
那麼我們就得到最終的 Macro F1 的計算為:
我們看到, Macro F1 本質上是所有類别的統計名額的算術平均值來求得的,這樣單純的平均忽略了樣本之間分布可能存在極大不平衡的情況
Micro F1 :微平均
Micro 算法在計算 Precision 與 Recall 時會将所有類直接放到一起來計算。
Macro vs Micro [1]
Macro 相對 Micro 而言,小類别起到的作用更大,舉個例子而言,對于一個四分類問題有:
- class A:1 TP, 1 FP
- class B:10 TP , 90 FP
- class C:1 TP, 1 FP
- class D:1 TP, 1 FP
那麼對于 Precision 的計算有:
我們看到,對于 Macro 來說, 小類别相當程度上拉高了 Precision 的值,而實際上, 并沒有那麼多樣本被正确分類,考慮到實際的環境中,真實樣本分布和訓練樣本分布相同的情況下,這種名額明顯是有問題的, 小類别起到的作用太大,以至于大樣本的分類情況不佳。而對于 Micro 來說,其考慮到了這種樣本不均衡的問題, 是以在這種情況下相對較佳。
總的來說, 如果你的類别比較均衡,則随便;如果你認為大樣本的類别應該占據更重要的位置, 使用Micro;如果你認為小樣本也應該占據重要的位置,則使用 Macro;如果 Micro << Macro , 則意味着在大樣本類别中出現了嚴重的分類錯誤;如果 Macro << Micro , 則意味着小樣本類别中出現了嚴重的分類錯誤。
為了解決 Macro 無法衡量樣本均衡問題,一個很好的方法是求權重的 Macro, 是以 Weighed F1 出現了。
Weight F1
Weighted 算法算術 Macro 算法的改良版,是為了解決Macro中沒有考慮樣本不均衡的原因, 在計算 Precision與Recall 時候,各個類别的 Precision 與 Recall要乘以該類在總樣本中的占比來求和:
那麼我們就得到最終的 Macro F1 的計算為:
五、MCC :馬修斯相關系數
MCC 主要用于衡量二分類問題,其綜合考慮了 TP TN, FP , FN, 是一個比較均衡的名額, 對于樣本不均衡情況下也可以使用。MCC的取值範圍在[-1.1],取值為1表示預測與實際完全一緻, 取值為0表示預測的結果還不如随機預測的結果,-1表示預測結果與實際的結果完全不一緻。是以我們看到, MCC 本質上描述了預測結果與實際結果之間的相關系數。
值得注意的是,對于兩個分類器而言,可能其中一個分類器的 F1 值較高,而其 MCC 值較低, 這表示單一的名額是無法衡量分類器的所有優點與缺點的。
六、ROC 曲線
在分類任務中,測試部分通常是獲得一個機率表示目前樣本屬于正例的機率, 我們往往會采取一個門檻值,大于該門檻值的為正例, 小于該門檻值的為負例。如果我們減小這個門檻值, 那麼會有更多的樣本被識别為正類,這會提高正類的識别率,但同時會降低負類的識别率。
為了形象的描述上述的這種變化, 引入ROC曲線來評價一個分類器的好壞。ROC 曲線主要關注兩個名額:
其中, FPR 代表将負例錯分為正例的機率, TPR 表示能将正例分對的機率, 如果我們增大門檻值, 則 TPR 會增加,而對應的FPR也會增大, 而繪制ROC曲線能夠幫助我們找到二者的均衡點,下圖很清晰的描述了ROC 曲線關系:
在 ROC 曲線中, 有:
- FPR = 0, TPR = 0:表示将每一個執行個體都預測為負類
- FPR = 1, TPR = 1:表示将每一個執行個體都預測為正例
- FPR = 0, TPR = 1:為最優分類點
- 分類器對應的ROC曲線應該盡可能靠近坐标軸的左上角, 而對角線的位置意味着分類器的效果和随機猜測一樣的差。
ROC曲線在測試集中的樣本分布發生變化的時候能夠保持不變。但遺憾的是,很多時候, ROC 曲線并不能清晰的說明哪個分類器的效果更好, 而 AUC 恰恰能夠對分類器做出直覺的評價。
七、AUC:Area under Curve
AUC 為ROC 曲線下的面積, 這個面積的數值介于0到1之間, 能夠直覺的評價出分類器的好壞, AUC的值越大, 分類器效果越好。
- AUC = 1:完美分類器, 采用該模型,不管設定什麼門檻值都能得出完美預測(絕大多數時候不存在)
- 0.5 < AUC < 1:優于随機猜測,分類器好好設定門檻值的話,有預測價值
- AUC = 0.5:跟随機猜測一樣,模型沒有預測價值
- AUC < 0.5 :比随機猜測還差,但是如果反着預測,就優于随機猜測。
值得一提的是,兩個模型的AUC 相等并不代表模型的效果相同, 比如這樣:
實際場景中, AUC 的确是非常常用的一種名額。
需要注意的是, 在多分類場景下的 ROC 曲線以及 AUC 值, 此時 ROC 曲線應該有多個, 而AUC 的計算如下:
八、P-R 曲線
P-R 曲線其橫坐标為 Recall, 縱坐标為 Precision, 其能幫助我們很好的做出權衡
在上圖中,我們發現, A 完全包住了C, 着意味着A 的Precision 與 Recall 都高于C, A優于C。而對比 A,B, 二者存在交叉的情況,此時采用曲線下面積大小衡量性能,面積越大,性能越好,此處的A優于B。
九、最後
對于最終分類名額的選擇, 在不同資料集,不同場景,不同時間下都會有不同的選擇,但往往最好選出一個名額來做優化,對于二分類問題,我目前用 AUC 比較多一些, 多分類我還是看 F1 值。
十、Reference
[1] Should I make decisions based on micro-averaged or macro-averaged evaluation measures?
[2] Micro Average vs Macro average Performance in a Multiclass classification setting>
[3 機器學習性能評估名額
今天因為你的點贊,讓我元氣滿滿