認識混淆矩陣

封面圖片是由 ChatGPT 生成並經由 Canva 修改的混淆矩陣圖片。 ChatGPT 的提示詞為 “A visually engaging illustration of a confusion matrix used in machine learning, with labeled sections for True Positive, False Positive, True Negative, and False Negative. The matrix is displayed on a futuristic digital interface with a blue neon glow. The background features abstract neural network connections and data flow lines, symbolizing artificial intelligence and deep learning. The image is designed with a professional and modern aesthetic.” 。
前言
在機器學習中,我們能建立各式各樣的模型,從簡單的線性迴歸到複雜的神經網路模型等。這些模型可以應用於不同的領域,例如影像辨識、語言生成、金融預測等。不同的模型各有其優勢與適用場景,例如線性迴歸適合處理資料集與目標變數的擬合與分析,而深度學習則能處理複雜的非線性的資料集。然而,如何判斷一個模型的好壞呢?單純依賴準確率(Accuracy)可能不足以評估模型的表現,特別是在類別分佈不均的情境下。因此,我們使用 混淆矩陣(Confusion Matrix) 來分析分類模型的效能。
什麼是準確率?
準確率(Accuracy)是最直觀的評估指標之一,能夠簡單地表示模型預測正確的樣本數占總樣本數的比例。但僅看準確率可能會出現評估失準的現象,這個現象在分類類別嚴重不均衡的情境下尤為明顯。例如:
在醫院中有 10,000 名民眾進行某疾病的篩選,而實際上僅有 50 人患有該疾病。現在經由醫療設備篩選出 10 人呈現陽性,則準確率為
$$ \frac{\text{總人數} - (\text{實際患病人數} - \text{患病且檢驗陽性人數})}{\text{總人數}} = \frac{10000 - (50 - 10)}{10000} = 99.6 \% $$
別以為準確率為 99.6% 相當高,但實際上患病 50 人中僅有 10 人被診斷為陽性,仍有 $\frac{50 - 10}{50} = \frac{4}{5} = 80\%$ 的人未被檢驗出來,這是很可怕的!
對於準確率失準的問題,我們可以使用更詳細的分析工具 —— 混淆矩陣,協助我們進行分析。
什麼是混淆矩陣?
混淆矩陣是一種表格格式的評估指標,能夠展示分類模型的預測結果與實際標籤之間的關係。對於二元分類問題,混淆矩陣通常呈現為 $2 \times 2$ 矩陣,其組成如下:
實際為真 (Positive) (陽性) | 實際為假 (Negative) (陰性) | |
---|---|---|
預測為真 (Positive) (陽性) | 真陽性 (True Positive, TP) | 偽陽性 (False Positive, FP) (型一錯誤) |
預測為假 (Negative) (陰性) | 偽陰性 (False Negative, FN) (型二錯誤) | 真陰性 (True Negative, TN) |
- 真陽性(TP):模型正確預測為真的數量。
- 假陽性(FP):模型將假值預測為真的數量。
- 假陰性(FN):模型將真值預測為假的數量。
- 真陰性(TN):模型正確預測為假的數量。
型一錯誤與型二錯誤
在統計學與機器學習中,我們通常關心兩種類型的錯誤:
型一錯誤 (Type I Error)
也稱為 假陽性(False Positive, FP),即模型錯誤地將假分類為真。例如,在醫學檢測中,某位健康的病人被誤診為患病。
型二錯誤 (Type II Error)
也稱為 假陰性(False Negative, FN),即模型錯誤地將真分類為假。例如,一位真正有病的病人被誤診為健康。
型一錯誤與型二錯誤的影響取決於應用場景。例如,在詐欺偵測中,型一錯誤可能導致誤判正常交易為詐欺,而型二錯誤則可能導致真正的詐欺行為未被發現。型二錯誤通常比型一錯誤更嚴重,例如在醫療診斷中,因為錯過疾病可能導致病情惡化。
混淆矩陣的衍生指標
透過混淆矩陣,我們可以計算多種評估指標,取得相較於準確率更多的資訊。
Total population = $P + N$ | Predicted positive | Predicted negative | Informedness, Bookmaker informedness ($BM$) = $TPR + TNR - 1$ | Prevalence threshold ($PT$) = $\frac{\sqrt{TPR \times FPR} - FPR}{TPR - FPR}$ |
---|---|---|---|---|
Actual positive ($P$) | True positive ($TP$) | False negative ($FN$) | True positive rate ($TPR$), Recall, Sensitivity ($SEN$) = $\frac{TP}{P}$ = $1 - FNR$ | False negative rate ($FNR$) = $\frac{FN}{P}$ = $1 - TPR$ |
Actual negative ($N$) | False positive ($FP$) | True negative ($TN$) | False positive rate ($FPR$) = $\frac{FP}{N}$ = $1 - TNR$ | True negative rate ($TNR$) = $\frac{TN}{N}$ = $1 - FPR$ |
Prevalence = $\frac{P}{P + N}$ | Positive predictive value ($PPV$) = $\frac{TP}{TP + FP}$ = $1 - FDR$ | False omission rate ($FOR$) = $\frac{FN}{TN + FN}$ = $1 - NPV$ | Positive likelihood ratio ($LR+$) = $\frac{TPR}{FPR}$ | Negative likelihood ratio ($LR−$) = $\frac{FNR}{TNR}$ |
Accuracy ($ACC$) = $\frac{TP + TN}{P + N}$ | False discovery rate ($FDR$) = $\frac{FP}{TP + FP}$ = $1 - PPV$ | Negative predictive value ($NPV$) = $\frac{TN}{TN + FN}$ = $1 - FOR$ | Markedness ($MK$) = $PPV + NPV - 1$ | Diagnostic odds ratio ($DOR$) = $\frac{LR+}{LR−}$ |
Balanced accuracy ($BA$) = $\frac{TPR + TNR}{2}$ | $F_1$ score = $\frac{2 \times PPV \times TPR}{PPV + TPR}$ = $\frac{2 \times TP}{2 \times TP + FP + FN}$ | Fowlkes–Mallows index ($FM$) = $\sqrt{PPV \times TPR}$ | Matthews correlation coefficient ($MCC$) = $\sqrt{TPR \times TNR \times PPV \times NPV}$ $- \sqrt{FNR \times FPR \times FOR \times FDR}$ | Threat score ($TS$), Critical success index ($CSI$), Jaccard index = $\frac{TP}{TP + FN + FP}$ |
以上擷取自英文版維基百科。
常見的指標計算方式如下:
準確率 (Accuracy)
$$ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} $$
混淆矩陣也能夠計算準確率,它能衡量整體正確預測的比例。但同樣地,在類別不平衡的資料集中可能會誤導結果。
精確率 (Precision)
$$ Precision = \frac{TP}{TP + FP} $$
也稱為 陽性預測率(Positive Predictive Value, PPV) ,表示模型預測為真的樣本中,真陽性的比例。
召回率 (Recall)
$$ Recall = \frac{TP}{TP + FN} $$
也稱為 靈敏度(Sensitivity) 或 真陽性率(True Positive Rate, TPR) ,表示實際為真的樣本中,被模型正確辨識的比例。
F 分數 (F-score)
$$ F_\beta = (1 + \beta^2) \times \frac{Precision \times Recall}{(\beta^2 \times Precision) + Recall} $$
F-score 也稱為 F-measure ,會同時考慮精確率與召回率,通常用於判斷演算法的精確度。在上式中, $\beta$ 是權重參數,當 $\beta \to 0$ 時, F 分數會退化成精確率;當 $\beta \to \infty$ 時, F 值會退化成召回率。
$\beta = 1$ 是 F 分數的一個特例,表示精確率與召回率擁有相同的權重。換句話說,$F_1$ 分數是精確率與召回率的調和平均數,適合用於評估當精確率與召回率之間存在權衡時的模型表現。
$$ F_1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} = \frac{2TP}{2TP + FP + FN} $$
計算過程:
分子
$$ Precision \times Recall = \left( \frac{TP}{TP + FP} \right) \times \left( \frac{TP}{TP + FN} \right) = \frac{TP^2}{(TP+FP)(TP+FN)} $$
分母
$$ Precision + Recall = \left( \frac{TP}{TP + FP} \right) + \left( \frac{TP}{TP + FN} \right) = \frac{2TP^2 + TP \times FN + TP \times FP}{(TP+FP)(TP+FN)} $$
故
$$ F_1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} = 2 \times \frac{\frac{TP^2}{(TP+FP)(TP+FN)}}{\frac{2TP^2 + TP \times FN + TP \times FP}{(TP+FP)(TP+FN)}} = \frac{2TP}{2TP + FP + FN} $$
特異性 (Specificity)
$$ Specificity = \frac{TN}{TN + FP} $$
也稱為 真陰性率(True Negative Rate, TNR) ,是相對於召回率的指標,表示實際為負的樣本中,被模型正確辨識的比例。
何時使用混淆矩陣?
- 類別不均衡時: 當某一類別佔據大部份資料集時,單純使用準確率可能會高估模型的表現。
- 關心誤分類成本時: 在醫療診斷、詐欺偵測等應用中,假陽性與假陰性的影響可能不同,因此需要精細分析錯誤類型。
- 多類別分類問題: 混淆矩陣可以擴展至多類別分類( $N \times N$ 矩陣),用於分析不同類別的錯誤分類情況。
結語
混淆矩陣是很實用的評估指標,可以幫助我們從不同的角度分析分類模型的效能。透過計算各類衍生指標,我們能夠更全面地評估模型表現,並根據需求調整模型。
參考資料
李航(2022)。機器學習聖經:最完整的統計學習方法(初版)。深智數位股份有限公司。
F-score(2024年6月25日)。維基百科,自由的百科全書。2025年3月22日參考自 https://zh.wikipedia.org/zh-tw/F-score
型一錯誤與型二錯誤(2024年9月29日)。維基百科,自由的百科全書。2025年3月22日參考自 https://zh.wikipedia.org/zh-tw/型一錯誤與型二錯誤
混淆矩陣(2024年11月8日)。維基百科,自由的百科全書。2025年3月22日參考自 https://zh.wikipedia.org/zh-tw/混淆矩阵
Confusion matrix(2025年2月28日)。維基百科,自由的百科全書。2025年3月22日參考自 https://en.wikipedia.org/wiki/Confusion_matrix