分類準確率
準確率是評斷分類器最直覺的方式:在你給它看的所有影像中,它正確標記的比例是多少?若模型看了 1,000 張測試影像、答對 920 張,其準確率就是 920/1000 = 92%。它是介於 0 與 1 之間的單一數字(常以百分比表示),回答最樸素的問題:「它多常答對?」在 ImageNet 類的基準上你也會看到 top-5 準確率,只要真實類別落在模型分數最高的五個猜測之內就算答對——這是一種較寬鬆的量度,在許多類別長得相似時很有用。
精確地說,對含 N 個樣本的測試集,準確率等於「預測標籤等於真實標籤的樣本數」除以 N。以二元問題的混淆矩陣來說,它是 (TP + TN) / (TP + TN + FP + FN),其中 TP/TN 是被正確判定的正例/負例,FP/FN 則是兩種錯誤。準確率對每個樣本一視同仁、對每種錯誤一視同仁——把「貓」認錯的代價,恰好等於把「卡車」認錯;漏掉一顆腫瘤的代價,也等同於一次假警報。
這種一視同仁的權重,正是準確率會誤導人的地方。在類別不平衡時——也就是某一類別主宰了資料——模型可以拿到很高的準確率卻毫無用處。若 99% 的醫學掃描都是健康的,一個偷懶、永遠預測「健康」的模型可達 99% 準確率,卻一例疾病都抓不到。這就是「準確率悖論」:標題數字之所以漂亮,恰恰是因為稀有而重要的類別被忽略了。準確率也掩蓋了是哪一類別在失敗,並把一個自信滿滿的錯誤,與一個勉強答錯的情況同等對待。
當類別不平衡、或不同錯誤代價不同時,請改用(或並列使用)更豐富的指標:各類別準確率與完整的混淆矩陣、平衡準確率(各類別召回率的平均,藉此把稀有類別的權重提高)、精確率與召回率搭配 F1 分數、用於衡量與閾值無關之排序品質的 ROC-AUC 或精確率–召回率 AUC,以及在「漏報遠比誤報嚴重」時的成本加權指標。對於大致平衡、且錯誤代價對稱的問題,準確率仍是不錯的摘要——只是在偏斜資料上千萬別只信它一個。
一個有 10,000 張影像的詐欺篩檢資料集,其中 100 張為詐欺(1%)。永遠回答「合法」的模型可得 9,900/10,000 = 99% 準確率,但它在詐欺類別上的召回率是 0/100 = 0%——準確率很高,卻在唯一重要的類別上徹底失敗。
單一準確率數字只有在「於完全相同的測試集與標籤集上評估」時,跨模型比較才有意義;「ImageNet 上的 top-1」與「在重新平衡子集上的準確率」並不是同一把尺。