
我們都聽過『勿枉勿縱』這個說法。一般來說我們希望模型給出答案的『正確率』最高,但是有些情況下,『正確率』不是唯一的標準。本篇介紹與『正確率』(以及『錯誤率』)相關的一些術語和概念,無論是平常工作、生活都會碰到,也是資料分析面試常常出現的考題。
混淆矩陣(confusion matrix)
簡單舉例,對於一個較為罕見的現象(例如 1/10,000 的受測者才會有的疾病),如果追求『正確率』,只要讓模型全部猜『陰性』(沒有疾病),就可以達到很高的正確率,但是這樣做是完全沒有意義的。測試的『正確』,應該要分兩個情況考慮:
- 實際上是『陽性』,被正確測出(True Positive)
- 實際上是『陰性』,被正確測出(True Negative)
同樣的,錯誤也可以分為 False Positive 和 False Negative 兩種。
這四種案例可以以『混淆矩陣』(confusion matrix)表達。

一般說的『正確率』(accuracy),指的是兩種正確案例數佔所有案例的比例:(TN + TP)/ (TN + TP + FN + FN)。
(所謂『陰性』、『陽性』是由我們自己定義的,通常偵測為某種目標以 『陽性』表示,例如常見的疾病測試。如果設計一個偵測對象是不是『狗』的模型,也可能會用『陽性』表示是狗。但沒有絕對標準,例如偵測『詐欺行為』的模行就用『陽性』表示詐欺行為,同樣的模型也可以說成是偵測『非詐欺行為』並用陽性表示『非詐欺行為』。)
Precision vs. Recall
除了正確率,我們通常還會關心模型或是測試的兩種表現。
Precision:所有模型說是陽性的案例中,多少是真的陽性。也就是 TP/(TP + FP)
Recall:所有真的陽性案例中,有多少被模型正確指出。也就是 TP/(TP + FN)
當樣本不平衡(sample imbalance;例如前面說的疾病測試案例)嚴重時,只看正確率可能會很有誤導性。理想的測試,應該要在 Precision vs. recall 兩種指標中取得平衡。至於具體怎麼做,應該要考慮實際情況,在商業環境中,可以估計 precision 和recall 各自的重要性(例如對某個關鍵 kpi 的影響),分別給予權重,設計一個綜合指標。
F1-score 就是綜合指標的一個例子。F1 就是 precision 和 recall 的調和平均數(harmonic mean)。調和平均數的特點就是受到『很小的數』的影響較大。當你希望兩種指標都表現不錯,尤其是不要有一個太差時,就可以使用 F1-score。

ROC curve and AUC
類似的概念,在不同領域(機器學習)也常以 ROC curve(receiver operating characteristic curve)表示。ROC 以兩個指標構成:
False Positive Rate:(FP)/(FP + TN) 也就是所有實際上是陰性案例會被錯誤歸類為陽性的比例,越高表示測試越不準。
True Positive Rate:(TP)/(TP + FN) 也就是所有實際上為陽性的案例,會被正確歸類的比例,越高表示測試越準確。
同一套測試方法,可以使用不同的參數門檻,而得到很多個 False Positive Rate 和 True Positive Rate 的組合;把這些組合畫在一個平面上,就可以得到 ROC curve。

ROC 曲線的一定會經過兩個點:(0, 0),即設置很高的門檻,不管怎樣都測試結果都是陰性,以及(1, 1),即設置很低的門檻,不管怎樣測試結果都為陽性。而曲線中間的表現為測試的特質之一。
上圖中,灰色線和綠色線可以代表兩種不同測試法,例如:用 BMI 或是 『家用體重計測出的體脂肪率』來判定一個人是否屬於『肥胖』。可以看出,在 false positive rate 同樣處於中間值的條件下,綠色線 true positive rate 越高,所以看起來綠色線代表的測試是比較好的測試。
每一種測試都可以有一個 ROC,而 AUC,Area Under the ROC Curve,就可以用來量化比較不同測試的表現。AUC 越高,大約表示測試越好。

其他術語
Type I vs. type II error
Type I error:也就是 False Positive,假陽性。Alpha = FP/(TN + FP),表示假陽性的機率,也就是其實是陰性被認為是陽性的機率。
Type II error:也就是 False Negative,假陰性。Beta = FN/(TP +FN),表示假陽性的機率,也就是其實是陽性被認為是陰性的機率。
Specificity and sensitivity
Specificity:True positive rate = TP/(TP+ FN),有病的人被正確測出的機率。
Sensitivity:True negative rate = TN/(TN+ FP),沒病的人被正確排除的機會。
『勿枉勿縱』:混淆矩陣、precision、recall 及其他 有 “ 4 則迴響 ”