混淆矩陣計算工具
機器學習分類模型或檢查的結果,可以用預測與實際的四種組合的件數(混淆矩陣)來表示,本工具由此計算評估指標。要重視哪個指標,取決於漏判(偽陰性)與誤判(偽陽性)哪一種的代價較大。
評估指標
- 準確率(Accuracy)
- –
- 精確率(Precision)
- –
- 召回率(Recall・敏感度)
- –
- F1 分數
- –
- Fβ 分數
- –
- 特異度(Specificity)
- –
- 偽陽性率(FPR)
- –
- 陰性預測值(NPV)
- –
- 平衡準確率
- –
- 馬修斯相關係數(MCC)
- –
- 陽性的比例
- –
- 總件數
- –
準確率雖高,但召回率低,漏掉了大部分的陽性。在陽性很少(不平衡)的資料上,請勿只以準確率評估。
分母為 0 的指標(例如沒有任何預測為陽性時的精確率)會顯示為「–」。MCC 的值介於 −1 到 1,1 代表完美的預測,0 代表與隨機預測差不多。
以圖表檢視
其他輸入維持目前的值,只讓選擇的輸入在目前值的 1/4 到 4 倍之間變化時的結果。紅點是目前的值。
什麼是混淆矩陣
混淆矩陣是把二元分類的結果,依實際的類別(陽性・陰性)與預測(陽性・陰性)的組合分成四格來計數的表。陽性正確預測為陽性稱為真陽性(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)來評估。
練習相關題目
- A精確率0.50,召回率0.90
- B精確率0.75,召回率0.50
- 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。
- A0.40
- B0.53
- 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,看起來很高,但這個模型漏掉了六成的陽性。
- A0%
- B1%
- 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 分數,或說明為什麼在不平衡資料上準確率不可靠。這是機器學習課程與資料科學面試的基本題。