在上一篇([29]維護Custon Vision Model - 使用歷史查詢記錄做訓練以及如何版控)看完了如何用歷史的搜索結果來持續training Model(模型)并且透過iteration做到Model的測試訓練以及版控,不過上一篇也遺留了一個問題,怎麽看目前的Model是好還是壞?
這裡面就牽扯到了一些數學概念,因此在這一篇將介紹怎麽評判一個Classifier Model是好還是壞,透過Confusion Matrix以及Precision和Recall來瞭解一個Classifier Model的情況。
背景介紹
到目前爲止所使用的Custom Vision服務其實在建立的是所謂的Classifier Model,也就是所謂的分類型的模型。
Classifier Model主要作用是判斷某個傳入的資料是不是屬於某個分類。白話一點來説,假設我有個判斷照片是不是狗的模型,那麽只會有可能是是和不是。
當然上面給的例子是一種分類而已,但是模型可能有好多種類來判別。爲了讓接下來不那麽複雜,將會只有一類的來介紹。
有了這個背景介紹了之後,來看看怎麽看一個Model的準確率。
怎麽計算Model準確度?Confusion Matrix介紹
當只有一類的額情況下,用Model判斷一張圖片只有可能是四種結果:
- True Positive (TP)
- Model判斷圖片屬於狗,并且實際上這張圖片是狗。
- True Negative (TN)
- Model 判斷圖片不屬於狗,并且實際上這張圖片不是狗。
- False Positive (FP)
- Model 判斷圖片屬於狗,但是實際上這張圖片不是狗。
- False Negative (FN)
- Model判斷圖片不屬於狗,但是實際上這張圖片是狗。
這四種結果可以畫成一張表,也就是所謂的Confusion Matrix:
Model判斷是狗 | Model判斷不是狗 | |
---|---|---|
實際是狗 | TP | FN |
實際不是狗 | FP | TN |
如果把數字填上去就會變成:
Model判斷是狗 | Model判斷不是狗 | |
---|---|---|
實際是狗 | 5 | 2 |
實際不是狗 | 1 | 6 |
計算準確度
既然把表建立出來了之後,接下來就看看從數學角度怎麽計算,這邊介紹3種:
- Accuracy
- Recall
- Precision
Accuracy
Accuracy是日常生活最長用的一種算法,也就是把對的加總和總數相除得到結果,公式來説就是:
Accuracy = (TP+TN)/(TP+FP+TN+FN)
以我們的例子就是:(5 + 6) / (5 + 1 + 6 + 2) = 11 / 14 = 0.79
。
Accuracy貌似是很好的一個計算方式,但是實際上沒有任何意義。
想象一下,假設今天這個Model要用作於判斷病患有沒有糖尿病,如果説實際上的人有糖尿病的比例是 0.03 (隨便説的數字哦),那麽就算我的Model對於任何病例進來都判斷説沒有糖尿病,那麽最後的Accuracy也會有 0.97
因此,這個數字在Classifier Model來説一點意義也沒有,因此才有了另外兩個數字。
Recall
Recall的的含義是,和狗相關的圖片能夠找出多少張。
公式是:TP / (TP + FN)
以我們的例子就是:5 / (5 + 2) = 5 / 7 = 0.71
Precision
Precision的含義是:所有認爲是狗的,多少真的是狗
公式是:TP / (TP + FP)
以我們例子就是:5 / 5 + 1 = 5 / 6 = 0.83
以我們上面的例子來説,這個Model的Precision比Recall高,換句話説當這個Model認爲是狗的時候,是狗的幾率很大。
更加的白話介紹Precision和Recall
上面的介紹可能還是有點抽象,下面是用圖片的方式介紹Precision和Recall(來源Wikipedia)
如果圖片還是不太明白,換一個生活例子。
假設你有個10年的女朋友(謎之聲:單身狗遭到暴擊),這10年期間他以不同的名義組織活動送你禮物。一切很美好直到有天他想要測試你有多愛她,因此問了你一個問題:
我總共送過你多少次禮物?然後都送了一些什麽?
這個時候你爲了更好答題(關係到你的幸福生活),說可不可以給一些提示。女朋友說我接下來列出一些禮物,你先告訴我那些事我曾經送過的。
這個時候你大腦的Classifier Model就開始運作啦:
- Recall - 你總共記得多少次有收到禮物
- Precision - 有多少次收到的禮物猜對了
怎麽選擇Precision還是Recall
最好的情況當然是兩個都是100%最好,但是取決於今天這個Model要用來預測什麽,側重會不同。
假設今天要預測是某個病患有沒有癌症,這個時候Recall比Precision重要。因爲,誤判一個人沒有癌症但是其實有的後果嚴重太多,因此這個時候追求的可能就是Recall。
因此,Model要搭配應用來做Training。
結語
這篇介紹了Confusion Matrix并且介紹了Classifier Model常用的兩個指標:Precision和Recall。
實際上Classifier Model還有別的指標,不過因爲Custom Vision只有顯示這兩個,因此目前只介紹了這兩個,在未來,有介紹到自己寫程式Training Classifier Model的時候在介紹其他的指標。
到目前爲止,對於整個Cognitive Service應該有個疑問,沒辦法離綫使用嗎?
Custom Vision可以,下一篇([31]Custom Vision Train好的Model匯出離線和給app使用)將介紹怎麽把Custom Vision的Model匯出并且被本地使用。