混淆矩陣計算工具

機器學習分類模型或檢查的結果,可以用預測與實際的四種組合的件數(混淆矩陣)來表示,本工具由此計算評估指標。要重視哪個指標,取決於漏判(偽陰性)與誤判(偽陽性)哪一種的代價較大。

混淆矩陣的件數

評估指標

準確率(Accuracy)
–
精確率(Precision)
–
召回率(Recall・敏感度)
–
F1 分數
–
Fβ 分數
–
特異度(Specificity)
–
偽陽性率(FPR)
–
陰性預測值(NPV)
–
平衡準確率
–
馬修斯相關係數(MCC)
–
陽性的比例
–
總件數
–

分母為 0 的指標(例如沒有任何預測為陽性時的精確率)會顯示為「–」。MCC 的值介於 −1 到 1,1 代表完美的預測,0 代表與隨機預測差不多。

什麼是混淆矩陣

混淆矩陣是把二元分類的結果,依實際的類別(陽性・陰性)與預測(陽性・陰性)的組合分成四格來計數的表。陽性正確預測為陽性稱為真陽性(TP),陽性預測為陰性的漏判稱為偽陰性(FN),陰性預測為陽性的誤判稱為偽陽性(FP),陰性正確預測為陰性稱為真陰性(TN)。在範例「垃圾郵件判定」中,50 封垃圾郵件找出了 40 封(TP = 40、FN = 10),150 封一般郵件中有 20 封被誤判為垃圾郵件(FP = 20、TN = 130)。

精確率與召回率

精確率 = TP ÷ (TP + FP),是預測為陽性者之中真正為陽性的比例,代表誤判的少寡。召回率 = TP ÷ (TP + FN),是實際陽性之中被預測為陽性的比例,代表漏判的少寡。範例中精確率為 40 ÷ 60 ≒ 66.67%,召回率為 40 ÷ 50 = 80%。降低判定的門檻通常會提高召回率,但誤判增加、精確率下降,兩者是取捨(trade-off)的關係。

F1 分數與 Fβ 分數

F1 分數是精確率與召回率的調和平均,為 2 × 精確率 × 召回率 ÷ (精確率 + 召回率)。只要其中一方偏低,F1 分數也會偏低,因此能用一個數字看出兩者的平衡。範例中為 2 × 0.6667 × 0.8 ÷ 1.4667 ≒ 72.73%。在漏判代價較大的疾病篩檢等情況,會使用把召回率加重 β 倍的 Fβ 分數 = (1 + β²) × 精確率 × 召回率 ÷ (β² × 精確率 + 召回率)。

不平衡資料與準確率的陷阱

準確率 = (TP + TN) ÷ 總數 雖然容易理解,但在陽性極少的資料上派不上用場。在範例「全部預測為陰性」中,即使 10 件陽性全部漏判,準確率仍有 990 ÷ 1000 = 99%,召回率卻是 0%。這時應改用召回率、精確率、F1 分數,或是把陽性與陰性各自的正確率平均的平衡準確率,以及使用全部四個件數的馬修斯相關係數(MCC)來評估。

練習相關題目

以200筆測試資料評估某個二元分類模型,其混淆矩陣為真陽性(TP)45筆、偽陽性(FP)5筆、偽陰性(FN)45筆、真陰性(TN)105筆。精確率與召回率的組合,何者正確?

  1. A精確率0.50,召回率0.90
  2. B精確率0.75,召回率0.50
  3. C精確率0.90,召回率0.50
查看答案與解析

正確答案:C. 精確率0.90,召回率0.50

精確率(precision)是預測為陽性者中實際為陽性的比例,TP ÷ (TP + FP) = 45 ÷ 50 = 0.90。召回率(recall)是實際為陽性者中被預測為陽性的比例,TP ÷ (TP + FN) = 45 ÷ 90 = 0.50。這個模型判為陽性者幾乎都正確,但漏掉了一半的陽性。準確率為 (45 + 105) ÷ 200 = 0.75。

以200筆測試資料評估某個二元分類模型,結果為TP 20筆、FP 5筆、FN 30筆、TN 145筆。F1分數最接近下列何者?

  1. A0.40
  2. B0.53
  3. C0.60
查看答案與解析

正確答案:B. 0.53

首先,精確率為 20 ÷ (20 + 5) = 0.8,召回率為 20 ÷ (20 + 30) = 0.4。F1分數是精確率與召回率的調和平均,2 × 0.8 × 0.4 ÷ (0.8 + 0.4) = 0.64 ÷ 1.2 ≈ 0.53。調和平均會被較小的值拉低,因此只有其中一方高時,F1分數不會高。另外,準確率為 (20 + 145) ÷ 200 = 0.825,看起來很高,但這個模型漏掉了六成的陽性。

對於1000筆中只有10筆陽性的資料,將全部預測為陰性之模型的準確率為何者?

  1. A0%
  2. B1%
  3. C99%
查看答案與解析

正確答案:C. 99%

全部預測為陰性時,990筆陰性全部正確,10筆陽性全部錯誤,因此準確率為 990 ÷ 1000 = 99%。另一方面,因為連1筆陽性都找不到,召回率為0%,若目的是像偵測疾病或詐欺那樣找出陽性,就派不上用場。像這樣類別比例嚴重偏斜的資料(不平衡資料),不能只用準確率評估,而要一併參考精確率、召回率、F1分數等。也有加重少數類別之錯誤權重,或使各類別資料數量一致之抽樣等對策。

常見問題

應該重視精確率還是召回率?

依各種錯誤的代價決定。像疾病篩檢或詐欺偵測這類漏判(偽陰性)代價大的情況,應重視召回率;像垃圾郵件判定把重要郵件誤判為垃圾郵件(偽陽性)代價大的情況,則應重視精確率。

召回率與敏感度、偽陽性率與特異度的關係?

召回率在醫學領域稱為敏感度(真陽性率),是同一個指標。特異度 = TN ÷ (TN + FP),是能把陰性正確判定為陰性的比例,偽陽性率 = 1 − 特異度。ROC 曲線是改變門檻時,以偽陽性率為橫軸、召回率為縱軸所畫出的圖。

多類別分類要怎麼計算?

對每個類別,把「該類別視為陽性、其他視為陰性」做出二元混淆矩陣,求出精確率、召回率與 F1 分數。把這些值直接平均的是巨觀平均(macro average),先把所有類別的 TP、FP、FN 加總再計算的是微觀平均(micro average)。

考試中會怎麼出題?

常見的題目是由混淆矩陣的件數計算準確率、精確率、召回率與 F1 分數,或說明為什麼在不平衡資料上準確率不可靠。這是機器學習課程與資料科學面試的基本題。

相關用語

混淆矩陣(Confusion matrix) 精確率與召回率(Precision and recall) 過擬合(Overfitting)

相關計算工具

半導體、電子電路與資訊計算工具 →