1102 機器學習

這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容為上課之內容及閱讀清單之整理

Confusion Matrix 是什麼

我們要判別一個分類模型的好壞的時候會需要一堆指標,而confusion matrix就是其中一種,且它會衍生出很多指標
classification

一切都得從頭開始說起…
classification
在上面這個表格中,
TrueFalse代表的是「預測的結果」是否正確
PositiveNegative代表的是「預測的方向」是否正向

舉個例子來說:
當用你的手機iphone指紋解鎖時,會有以下四個情況:

  1. 手機「正確解鎖」「你」的指紋
  2. 手機「無法正確解鎖」「你朋友」的指紋
  3. 手機「無法解鎖」「你」的指紋
  4. 手機「解鎖」「你朋友」的指紋

而若是把它填入confusion matrix後會長什麼樣子呢?

實際yes 實際no
預測yes 手機「正確解鎖」「你」的指紋 手機「解鎖」「你朋友」的指紋
預測no 手機「無法解鎖」「你」的指紋 手機「無法正確解鎖」「你朋友」的指紋

為什麼是這樣填呢?
對於「你的指紋」來說時實際要是可以解鎖的 –> 實際yes
而「可以正確解鎖」代表預測是也是可以解鎖的 –> 預測yes
而「無法正確解鎖」代表預測是不可解鎖的 –> 預測no

反之「你朋友的指紋」也是同樣概念:
對於「你朋友的指紋」來說時實際要是不可解鎖的 –> 實際no
而「可以正確解鎖」代表預測是也是可以解鎖的 –> 預測yes
而「無法正確解鎖」代表預測是不可解鎖的 –> 預測no

  1. 手機「正確解鎖」「你」的指紋 –> 實際yes 預測yes –> 實際對預測也對,那預測就是正確的結果(True),預測的方向也是正向的(Positive)
  2. 手機「無法正確解鎖」「你朋友」的指紋 –> 實際no 預測no –> 實際不能預測也不能,故預測也是對的(True),預測的方向是往不能的方向(Negative)
  3. 手機「無法解鎖」「你」的指紋 –> 實際yes 預測no –> 實際與預測相反,代表預測的結果不正確(False),預測的方向是往不能的方向(Negative)
  4. 手機「解鎖」「你朋友」的指紋 –> 實際no 預測yes –> 實際與預測相反,代表預測的結果不正確(False),預測的方向是可以解鎖 - 正向的(Positive)

解釋完了那就再看一次剛剛的圖吧!有看有保庇🙏
classification

實際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的公式如下:
classification

若是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-score

  • average = macro
    會對各類別計算各自的recall, precision, f1-score,再計算他們的平均

  • average = weighted
    因爲macro會有樣本數不平衡問題,因此在計算出各自的recall, precision, f1-score後,對各類別給予權重,再計算平均

閱讀清單

  1. 如何辨別機器學習模型的好壞?秒懂Confusion Matrix
  2. 机器学习–Micro Average,Macro Average, Weighted Average