指標選擇:準確率什麼時候會誤導你
類別不平衡時,準確率 95% 可能代表模型什麼都沒學到。
一個把所有樣本都判為「正常」的模型,在異常率 5% 的資料上準確率是 95%。這個數字毫無意義,卻常常出現在報告裡。
什麼時候該換指標
- 類別不平衡(少數類別低於 20%)→ 看精確率、召回率、F1。
- 偽陽性與偽陰性代價差很多 → 分別看,不要合併成單一分數。
- 有排序需求(檢索、推薦)→ 看 Recall@k、MRR、NDCG。
- 多類別 → 看 macro 平均,不要只看 micro,後者會被大類別主導。
用混淆矩陣做決策
from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(y_true, y_pred))
print(classification_report(y_true, y_pred, digits=3))
# macro avg 才反映罕見類別的表現門檻與指標是綁在一起的
分類門檻從 0.5 調到 0.3,召回率上升、精確率下降。報告分數時必須同時說明門檻,否則數字無法比較。實務上應該先確定業務可接受的偽陽性率,再反推門檻。
別忘了棄答
允許模型回「不知道」時,傳統指標會失真。要分開統計三件事:作答且正確、作答但錯誤、棄答。只要棄答的代價低於答錯,這個設計就是划算的。
報告一定要附上各類別的支持數(樣本量)。某個類別 F1 高達 0.95 但只有 4 個樣本時,那個數字沒有意義。