ROC曲線, AUC, CI, Recall, F1評分, Accuracy, Precision, Sensitivity, Specificity, FP, FN —— 機器學習 與 電腦視覺 常見性能指標 整理

Standard
I. 前言
如果看機器學習或電腦視覺相關的研究,一定對
True Positive(TP), False Positive(FP), True Negative(TN), False Negative(FN)不陌生,
也一定很常看到
ROC curve, AUC, CI, Recall, F1 score, Sensitivity, Specificity, Accuracy等等。
而今天這篇文章就要來嘗試理解這一切。舉個例子來說,
https://ai.googleblog.com/2016/11/deep-learning-for-detection-of-diabetic.html
這是一篇google research的文章,透過Deep Learning與電腦視覺來辨識眼睛,
檢查是否有糖尿病引起的眼睛疾病,
文中他們將結果以以下的方式表示:
 
如果完全能看懂,那麼你已經充分理解這個部分了,可以上一頁
如果沒有,讓我們看下去吧



II. 真真假假,假假真真
基礎中的基礎想必就是這一串看似繞口令的英文名詞了
True Positive(TP), False Positive(FP), True Negative(TN), False Negative(FN)
舉個例子來說明以上四種情況,
若今天的系統是一個監視錄影機要影像辨識,在有人進入視線範圍時跳出警告,那麼
 True Positive(TP)就是Hit,確實有人進入視線範圍被系統抓到,正確跳通知
 True Negative(TN)就是Correct rejection,沒拍到人,沒跳通知
 False Positive(FP)就是False alarm,明明沒拍到人(沒有人),卻還是辨識成功到跳通知
 False Negative(FN)就是Miss,明明有拍到人(有人),卻沒辨識到,沒跳通知

但這樣解釋雖然明白了每個代表的意思,但卻沒有真正理解這些英文單字
分解來說,
後者永遠都是在講預測的情況,可能是Positive or Negative
前者是在講預測與真實情況是否吻合,可能是True or False
所以False Positive就是錯誤的做出了正面的判斷,那真相就是反面的
e.g. 系統錯誤的辨識到了旁邊的樹以為是人,但事實上並沒有人 =False alarm
而False Negative就是錯誤的做出了反面的判斷,那真相就是正面的
e.g. 系統錯誤的以為現在沒有人,但事實上有一個人從畫面中經過卻沒跳通知 =Miss

而True開頭的就代表預測和真實吻合

III. ROC curve, AUC value 你一定看過的圖
這一part因為有一個我覺得解釋得很清楚的影片
我就不自己解釋了,附上資源,
影片 :https://www.youtube.com/watch?v=OAl6eAyP-yo
截圖文章:https://www.dataschool.io/roc-curves-and-auc-explained/

IV. Sensitivity, Specificity, TPR, FPR, Recall 各種率
我認為這部分一開始沒這麼好懂的原因是因為還沒聽過ROC curve
聽過之後對照著ROC curve就會比較明白它們的應用

以ROC curve為例,如果threshold從最左邊掃到最右邊
y軸放TPR(sensitivity),x軸放FPR(1-specificity)
描點的結果就會產生我們常看到的ROC curve,從最右上角到最左下角

藍色的pixel為condition=negative的部分,也就是上表各rate的分母
紅色的pixel為condition=positive的部分,也就是上表各rate的分母
而TP, FP, FN, TN則標示於下圖,
如此對照起來並不難看出為何ROC curve要以TPR和FPR當兩軸
也不難看想像TPR和FPR隨著threshold移動的消長變化

V. Study Cases:threshold 應該設在哪?
前面介紹ROC curve的影片中有解釋道
之所以會有curve就是因為threshold從左邊掃到右邊的關西
但threshold到底該取curve上的哪一點呢?
(visaulization工具:http://www.navan.name/roc/
以下舉兩個極端的例子來說明High sensitivity和 High specificity的好處:

首先是High sensitivity,threshold取在曲線左上角偏上的位置(有點被截掉
想像的應用情境是在前面提過的監視器系統
High sensitivity顧名思義就是很敏感,詳細描述見圖

再者是High specificity,threshold取在曲線左上角偏左的位置(有點被截掉
想像的應用情境是在家事機器人,幫忙拿東西遞送物品的情況
會希望機器人要拿就拿對東西,不要拿錯的東西回來,不然人還要拿回去放
High specificity顧名思義就是很專精,對的一定對,雖然找的機率會下降
詳細描述見圖

VI.Accuracy 和 F1評分(不是賽車
關於Accuracy和Precision相信大家已經聽爛了,不過還是附上一張圖複習一下
而這裡的Accuracy可以這樣表示:
以ROC curve來解釋,
分母就是所有的可能,也就是所有pixel(藍的+紅的),
分子就是condition=prediction也就是true的那些情況

而這裡的Precision可以這樣表示:
以ROC curve來解釋,
分母就是所有被預測為positive(or negative)的可能,
也就是所有threshold右邊(or 左邊)的pixel(包括藍與紅),
分子就是condition=prediction也就是true的那些情況

而F1 score也是另一個用來評斷model好壞的指標:
因為precision(PPV)和sensitivity(Recall or FPR)都是在表達正確性
只是前者是以預測為分母,後者是以真實condition為分母
分子都是放True Positive
因此到底哪用哪種正確率好呢?不然我們把兩個拿起來平均好了~
這時候有一種方法專門用於率的平均,叫harmonic mean
In mathematics, the harmonic mean (sometimes called the subcontrary mean) is one of several kinds of average, and in particular one of the Pythagorean means. Typically, it is appropriate for situations when the average of rates is desired.
於是用harmonic mean平均PPV和FPR的方法就是F1就誕生了

VII. CI(是I不是L
Confidence Interval (CI)
由樣本資料定義一段數值區間,宣稱有多少信心以估計母體的參數包含於此區間內。
該數值區間上、下限稱為信賴界限(confidence limit)。
用以估計的信心程度稱為信賴(心)水準(confidence level)

一般常以 95% 或 99% 為信賴水準指標;
相對應的 Z分數(相差幾個標準差) 分別為 1.96 與 2.58。
可表示為:
有 95% 信心估計母群體平均數,在樣本平均數 ± 1.96 * (母群體標準差 / 樣本數 n 的平方根) 的範圍內。
而 99% 信心估計母群體平均數,則在樣本平均數 ± 2.58 * (母群體標準差 / 樣本數 n 的平方根) 的範圍內。

μ 之 95% CI = X ± 1.96 * ( σ / √n )
μ 之 99% CI = X ± 2.58 * ( σ / √n ) 


以ROC curve為例來說常會寫成以下格式
「AUC=0.887; 95% CI=0.804-0.970」
也就是有95%的信心水準 AUC落在0.887 ± 0.083的區間

VII. 結語
相信看文這篇後大家已經對如何evaluate一個機器學習或電腦視覺的方法的好壞的方式有點概念了,可以試著去看,去解釋前言提到的文章,看看他們的圖到底在講什麼吧!

References
https://en.wikipedia.org/wiki/Sensitivity_and_specificity
https://en.wikipedia.org/wiki/Harmonic_mean#Harmonic_mean_of_two_numbers
https://en.wikipedia.org/wiki/F1_score
https://zh.wikipedia.org/wiki/ROC%E6%9B%B2%E7%BA%BF
http://homepage.ntu.edu.tw/~clhsieh/biostatistic/5/5-4.htm

0 comments:

張貼留言

留言