前言:「準確率 90%」到底代表什麼?
當有人告訴你「我們的 AI 模型準確率達到 90%」,你的第一個反應應該是問:「在什麼任務上?用什麼指標衡量的?」
因為一個疾病篩查模型,如果只是把所有病人都判斷為「健康」,在某些罕見疾病的數據集上,準確率照樣可以高達 99%。這樣的數字毫無意義,甚至危險。
準確率(Accuracy) 只是眾多評估指標中最基礎的一個,而且它往往不是最重要的那個。
本系列文章分三篇,帶你系統性地了解如何客觀衡量 AI 的準確度:
- 第一篇(本文):分類與回歸任務的基礎評估指標
- 第二篇:大型語言模型(LLM)的評估方法
- 第三篇:RAG 檢索增強生成系統的可靠性評估
一、分類任務指標(Classification Metrics)
分類任務就是讓模型把輸入歸到某個類別,例如:
- 這封郵件是不是垃圾郵件?
- 這張 X 光片是否顯示腫瘤?
- 這則評論是正面還是負面的?
混淆矩陣(Confusion Matrix)
一切的起點是混淆矩陣。它把模型的預測結果與真實標籤交叉對照,分成四個格子:
| 預測為正 | 預測為負 | |
|---|---|---|
| 實際為正 | TP(真陽性) | FN(假陰性) |
| 實際為負 | FP(假陽性) | TN(真陰性) |
- TP(True Positive):模型說「是」,實際也是「是」。✅
- TN(True Negative):模型說「否」,實際也是「否」。✅
- FP(False Positive):模型說「是」,但實際是「否」。❌(誤報)
- FN(False Negative):模型說「否」,但實際是「是」。❌(漏報)
最基礎的準確率定義就是:
$$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$
但當數據嚴重不平衡時(例如只有 1% 的郵件是垃圾郵件),全部預測為「非垃圾」就能拿到 99% 的準確率,模型根本沒在做事。
精確率(Precision):我說的「是」有多可信?
$$\text{Precision} = \frac{TP}{TP + FP}$$
精確率衡量的是:模型預測為正類的結果中,有多少是真的正類。
適用場景:當誤報(FP)代價很高時。 例如垃圾郵件過濾——如果系統把重要的客戶合約誤判為垃圾郵件,損失就很大。此時我們希望「被標記為垃圾的郵件」要盡量都是真的垃圾。
召回率(Recall):真正的正類有多少被我找到?
$$\text{Recall} = \frac{TP}{TP + FN}$$
召回率衡量的是:實際為正類的樣本中,有多少被模型成功找出來。
適用場景:當漏報(FN)代價很高時。 例如癌症篩查——我們寧可多做幾次確認檢查(產生誤報),也絕對不能讓一個真正的病人被漏掉。
F1 分數(F1-Score):精確率與召回率的調和平均
Precision 和 Recall 往往互相拉扯——提高 Precision 通常會降低 Recall,反之亦然。F1 分數提供了一個綜合評估:
$$F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}$$
F1 使用的是調和平均數,而不是算術平均數。這意味著如果 Precision 和 Recall 其中一個很低,F1 也會被拖累——它強迫你在兩者之間取得平衡,而不是讓一個極高的值掩蓋另一個極低的值。
一個具體範例
假設你訓練了一個詐騙訂單偵測模型,在測試集上的結果如下:
| 指標 | 數值 |
|---|---|
| 準確率 | 97.5% |
| 精確率 | 62% |
| 召回率 | 80% |
| F1 分數 | 69.9% |
準確率看起來很高,但 62% 的精確率意味著每 10 筆被標記為詐騙的訂單中,有近 4 筆是誤報——會讓正常客戶的訂單被擋下來,造成客訴。這就是為什麼只看準確率是危險的。
二、回歸任務指標(Regression Metrics)
回歸任務是預測一個連續的數值,例如:
- 明天的氣溫是幾度?
- 這間房子的市場售價是多少?
- 明年這款產品的銷售量預測?
這類任務的評估核心是:預測值與真實值之間的距離有多近。
平均絕對誤差(MAE, Mean Absolute Error)
$$MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|$$
MAE 計算所有預測誤差絕對值的平均數。它的意義非常直觀:「平均每次預測,大概差了多少單位?」
特點:對異常值(outlier)不敏感。所有誤差的權重相同,一個非常大的錯誤不會讓整體指標看起來特別糟糕。
均方根誤差(RMSE, Root Mean Square Error)
$$RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}$$
RMSE 先把誤差平方,再取平均,最後開根號。因為平方的關係,較大的誤差會被放大懲罰。
特點:當你的業務無法容忍「偶爾的大偏差」時,RMSE 是更好的指標。 例如自動駕駛的速度預測,偏差 1 km/h 很常見,偏差 50 km/h 則可能致命——RMSE 能讓你更警覺後者的存在。
R 平方(R²,決定係數)
$$R^2 = 1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}$$
R² 衡量的是模型對數據變異的解釋能力:
- R² = 1:模型完美預測了所有數值。
- R² = 0:模型的預測效果與「直接用平均值猜測」一樣差。
- R² < 0:模型比直接猜平均值還差(通常代表模型有根本性的問題)。
特點:R² 提供了一個相對的比較基準,讓你知道模型「比隨機猜測好了多少」。
MAE vs RMSE:如何選擇?
任務性質 建議指標
──────────────────────────────────────
需要理解「平均誤差」 → MAE
無法容忍大偏差存在 → RMSE
需要與基準線比較 → R²
財務、醫療等高風險場景 → RMSE(更嚴格)
三、指標選擇的核心原則
從業務問題反推
選擇指標不是技術問題,而是業務問題。你需要先問:
- 什麼樣的錯誤代價最高? 誤報還是漏報?大偏差還是頻繁的小偏差?
- 數據是否平衡? 不平衡數據下,準確率幾乎沒有參考價值。
- 有沒有明確的可接受閾值? 例如「精確率不得低於 85%」。
不要只看單一指標
單一指標幾乎無法全面反映模型的表現。實際評估時,通常需要:
- 主要指標(Primary metric):直接對應業務目標
- 輔助指標(Secondary metrics):監控潛在的退化
- 約束指標(Guardrail metrics):設定不可跨越的底線
例如,訓練一個信用評分模型,主要指標是 F1-Score,輔助指標是各個風險族群的 Recall(確保公平性),約束指標是整體誤報率不得超過 5%。
本文小結
| 任務類型 | 指標 | 核心問題 |
|---|---|---|
| 分類(平衡數據) | Accuracy | 整體答對率是多少? |
| 分類(不平衡 / 誤報代價高) | Precision | 我說「是」的有多可信? |
| 分類(不平衡 / 漏報代價高) | Recall | 真正的正類我找到了多少? |
| 分類(需要綜合評估) | F1-Score | Precision 與 Recall 的平衡點在哪? |
| 回歸(直觀誤差理解) | MAE | 平均差了多少? |
| 回歸(嚴格懲罰大偏差) | RMSE | 最大的錯誤有多嚴重? |
| 回歸(與基準比較) | R² | 比直接猜平均值好了多少? |
這些都是機器學習中相對客觀、有標準答案的評估場景。但當我們進入大型語言模型(LLM)的世界,問題就變得更加複雜——因為「好的回答」本來就沒有唯一的標準答案。
下一篇,我們將深入探討如何衡量 LLM 的輸出品質,包括 BLEU、ROUGE、BERTScore,以及近年流行的「用 AI 評估 AI」方法(LLM-as-a-Judge)。