Confusion 文章筆記整理 - ft. precision, accuracy, recall, f1-score, f measure
1102 機器學習
這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容為上課之內容及閱讀清單之整理
Confusion Matrix 是什麼
我們要判別一個分類模型的好壞的時候會需要一堆指標,而confusion matrix就是其中一種,且它會衍生出很多指標
一切都得從頭開始說起…
在上面這個表格中,True
、False
代表的是「預測的結果」是否正確Positive
、Negative
代表的是「預測的方向」是否正向
舉個例子來說:
當用你的手機iphone指紋解鎖時,會有以下四個情況:
- 手機「正確解鎖」「你」的指紋
- 手機「無法正確解鎖」「你朋友」的指紋
- 手機「無法解鎖」「你」的指紋
- 手機「解鎖」「你朋友」的指紋
而若是把它填入confusion matrix後會長什麼樣子呢?
實際yes | 實際no | |
---|---|---|
預測yes | 手機「正確解鎖」「你」的指紋 | 手機「解鎖」「你朋友」的指紋 |
預測no | 手機「無法解鎖」「你」的指紋 | 手機「無法正確解鎖」「你朋友」的指紋 |
為什麼是這樣填呢?
對於「你的指紋」來說時實際要是可以解鎖的 –> 實際yes
而「可以正確解鎖」代表預測是也是可以解鎖的 –> 預測yes
而「無法正確解鎖」代表預測是不可解鎖的 –> 預測no
反之「你朋友的指紋」也是同樣概念:
對於「你朋友的指紋」來說時實際要是不可解鎖的 –> 實際no
而「可以正確解鎖」代表預測是也是可以解鎖的 –> 預測yes
而「無法正確解鎖」代表預測是不可解鎖的 –> 預測no
- 手機「正確解鎖」「你」的指紋 –> 實際yes 預測yes –> 實際對預測也對,那預測就是正確的結果(True),預測的方向也是正向的(Positive)
- 手機「無法正確解鎖」「你朋友」的指紋 –> 實際no 預測no –> 實際不能預測也不能,故預測也是對的(True),預測的方向是往不能的方向(Negative)
- 手機「無法解鎖」「你」的指紋 –> 實際yes 預測no –> 實際與預測相反,代表預測的結果不正確(False),預測的方向是往不能的方向(Negative)
- 手機「解鎖」「你朋友」的指紋 –> 實際no 預測yes –> 實際與預測相反,代表預測的結果不正確(False),預測的方向是可以解鎖 - 正向的(Positive)
解釋完了那就再看一次剛剛的圖吧!有看有保庇🙏
實際yes | 實際no | |
---|---|---|
預測yes | 手機「正確解鎖」「你」的指紋(TP) | 手機「解鎖」「你朋友」的指紋(FP) |
預測no | 手機「無法解鎖」「你」的指紋(FN) | 手機「無法正確解鎖」「你朋友」的指紋(TN) |
正常來說我們當然希望TruePositive和TrueNegative多多出現(也就是「手機正確解鎖你的指紋」和「手機無法正確解鎖你朋友的指紋」)
而另外兩種又稱為Error,而這兩種錯誤是不一樣的, FalsePositive又比FalseNegative還要嚴重,就像自己寧願不能解鎖手機但也不要被別人解鎖手機吧!
Confusion Matrix 延伸指標
Accuracy
Accuracy = (TP+TN) / (TP+TN+FP+FN)
所有情況下,正確預測的有多少
在手機解鎖的所有情況中,我們得到的正確結果(我的指紋可以解鎖我的手機、我朋友不能解鎖我的手機)的機率
Precision
Precision = TP / (TP+FP)
在預測為正向的情況下,實際的「精準度」(預測為正向的情況下,實際預測為正向)
在手機可以解鎖的結果下,真正是我解鎖的機率有多少
Recall
Recall = TP / (TP+FN)
在實際為正向的情況下,能夠召回多少實際為正向的
在原本要是能解鎖的情況下,最終可以解鎖的有多少
延伸指標比較
以剛剛手機解鎖的例子,再統整一次:
Accuracy = 在手機解鎖的所有情況中,我們得到的正確結果
Precision = 在手機可以解鎖的結果下,真正是我解鎖的機率有多少
Recall = 在實際是能解鎖的情況下,最終預測可以解鎖的有多少
用哪個指標判斷好壞沒有絕對,只是看適用的場合
像是若是今天在門禁解鎖上,會較注重precision,寧願我不能解鎖,也不要讓陌生人解鎖,所以會較關注「在所有被解鎖的結果下,真正是我解鎖的有多少」
在信用卡盜刷的情況上,則是會較注重recall,因爲比起精準度不好,或是不是盜刷的被認為盜刷,我們會更希望「真的是盜刷的有被抓到」
混合延伸指標
若是今天要同時用兩個指標來判斷,我們可以用一個指標來統整他們,就是f measure
f measure的公式如下:
若是precision重要一點,belta可以小一點,belta為零時,f measure 即為precision
而f1-score,也就是f1 measure
他是f measure的一個特例,當belta=1時,就是f1 measure,代表recall, precision都相同重要
延伸
對於二元分類,我們可以注重在positive class的分數
對於多元分類,我們可以注重在recall, precision, f1-score的micro, macro, weighted average指標,這些指標有助於選出更好的模型
在多分類時,需要把各類別都匯總起來,有以下三種匯總方式:
average = micro
將所有類別看成一個類別,直接計算recall, precision, f1-scoreaverage = macro
會對各類別計算各自的recall, precision, f1-score,再計算他們的平均average = weighted
因爲macro會有樣本數不平衡問題,因此在計算出各自的recall, precision, f1-score後,對各類別給予權重,再計算平均