機器學習常用衡量指標Precision, Recall, F1-score

前面說完了一個大概, 基本上也底定了我想研究人工智慧的方向, 接著我想從基礎知識開始記錄起, 我是個怪人, 對於有興趣的東西不希望太過不求甚解, 反倒比較期望了解他的原理, 期待能擦出一些不同的火花。

實際上我在這裡提到的指標, 會包含Accuracy、Precision、Recall 、 F1-score

正如前面講到, 機器學習的目標, 就是希望透過擷取到的資料特徵, 來預測目標的模樣, 那想當然我要知道模型(Model)好不好, 就會去判斷他預測的準不準, 而想知道準不準, 想當然就會像考試一樣, 每題都會有正確答案, 然後我們來看看模型預測的答案和我正確答案相差多少, 比如說, 我的正確答案是True ( O ), 而模型預測卻是False (X), 那他就錯了一題, 而 我的正確答案是True ( O ), 而模型預測也預測 True (O), 那他就對了一題。

有趣的是, 從以上我講的爛例子, 模型不一定預測都對, 有可能他預測是 True , 但實際答案是 False , 也可能他預測是 True , 但實際答案是 True , 綜合不同預測結果, 可以得到四種結果, 也就是混淆矩陣 Confusion Matrix。

實際 True實際 False
預測 TrueTP
(True Positive)
FP
(False Positive)
預測 FalseFN
(False Negative)
TN
(True Negative)
Confusion Matrix

如果還是很混淆, 不然用個很貼近生活的例子來看好了, 相信很多人經過一段時間的新聞洗禮後, 對這些詞都很熟悉才對….。

實際陽性實際陰性
快篩陽性確診 TP
(True Positive)
偽陽 FP
(False Positive)
快篩陰性偽陰 FN
(False Negative)
未感染 TN
(True Negative)
COVID快篩結果

在往下寫之前, 我們需要先搞清楚指標的用途, 在深度學習中, 指標往往是用來衡量一個模型預測的準確度, 而用準確度得到指標後, 我們的功課就會開始著重在怎麼樣去提升指標的數值。

假設今天我們將一群人抓過來逐個檢測, 一個是陽性(Positive), 一個是陰性(Negative), 在我們的測試結果就只有這兩種,再從中去抓出偽陽(Fasle Positive)和偽陰(False Negative) 的人, 最終就會形成像上面的圖, 也就是混淆矩陣(Confusion Matrix), 那綜合以上4種狀況, 我們可以得出幾種指標。

Accuracy, 算是比較常見的指標, 主要是把正確找到的陽性 (TP) 數量, 正確找到的陰性(TN) 數量, 兩者相加後, 來除以所有的檢驗個數, 公式如下;

Accuracy =( TPs+TNs ) / Total N.

換句話說, 假設今天檢驗100人, TP 有 20人, TN 有5人, 那 Accuracy 就是0.25。

超低, 算出來是這樣沒錯,只是要澄清, 這個超低主要是因為你有75人混在FP、FN裡面, 可見這預測模型是有問題的, 但這是一個最大而化之的方法, 而我們沒辦法從這指標去衡量偽陽(Fasle Positive)和偽陰(False Negative) 的狀況, 只能知道哪些陽性和陰性是真的被抓出來了, 只能去改善衡量的標準, 但沒法從根本去減少偽陽和偽陰。

換句話說, 今天你觀察模型的主要訴求是希望能抓得越精確越好, 那你就可以用 Accuracy 來做為衡量指標, 但因為模型任務不盡相同, 所以用 Accuracy 並不會是一個最完善的解法。

Precision(準確率)就會從另一個角度來看這4種狀況, 主要是把真陽性(TP)和偽陽(FP)的個數聯合起來做運算,公式如下:

Precision =( TPs) / TPs+FPs

這個指標先把真陽性(TP)去和真陽性(TP)和偽陽(FP)總和做相除, 說起來很混亂, 但是可見當Precision指標越來越大時, 代表模型預測到的偽陽性就越來越少, 趨近於1時, 代表偽陽的個數超級少, 也意味我們模型排除假陽性的能力強, 假設今天你想要改善或是觀察模型的假陽性狀況時, 就可以用這個指標做為衡量標準。

譬 譬如你要做一個人臉辨識的門鎖功能, 這時你就要思考怎麼把假陽性降到最低, 當降到最低時,才能有效避免門鎖誤辨認, 就放行讓他人通過。

Recall(召回率), 也是做了跟Precision相似的事情, 只是算式不同, 邏輯意義也不相同,在這裡主要是把真陽性(TP)和真陽性(TP)和偽陰(FN)相加去做相除。

Recall =( TPs) / TPs+FNs

在Recall裏面, 若是當FN越來越少時, 則指標也會越來越大, 也就是說, 真陽性的比例會越來越高, 指標越來越大時, 代表模型預測到的偽陽性就越來越少, 趨近於1時, 代表偽陰的個數超級少, , 也意味我們模型排除假陰性的能力強,假設今天你想要做的是改善模型的假陰性狀況時, 就會需要用這指標來衡量。

譬如你要評估一個模型能否有效抓出網路惡意攻擊時, 這時你就要思考怎麼把假陰性降到最低, 當降到最低時, 能找到的惡意攻擊自然是最有效的。

F1-score則又是另一個更進階的衡量指標了,主要是把Recall和Precision做加權平均,這樣的好處可以調和前述兩個指標, 因為若是 Recall、 Precision 其一偏小, 就無法同時兼顧兩種指標, 故進行調和後, F1的變化依然會在0~1之間, 而越趨近1 ,代表模型越穩健, 評估能力也越好。

F_{1}=2\cdot \frac{precision\cdot recall}{precision+recall}