[chatbot + AI = 下一代操作模式][30]Confusion Matrix - 用來衡量Classifier Model的方式 Precision和Recall @ Alan Tsai 的學習筆記|An Asp .Net Mvc Web Developer Blog

Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[chatbot + AI = 下一代操作模式][30]Confusion Matrix - 用來衡量Classifier Model的方式 Precision和Recall

[chatbot + AI = 下一代操作模式][30]Confusion Matrix - 用來衡量Classifier Model的方式 Precision和Recall.jpg
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([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判斷不是狗
實際是狗TPFN
實際不是狗FPTN

如果把數字填上去就會變成:

Model判斷是狗Model判斷不是狗
實際是狗52
實際不是狗16

計算準確度

既然把表建立出來了之後,接下來就看看從數學角度怎麽計算,這邊介紹3種:

  1. Accuracy
  2. Recall
  3. 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)

Precisionrecall.svg.png
用圖片介紹Precision和Recall,原始位置:https://en.wikipedia.org/wiki/Precision_and_recall

如果圖片還是不太明白,換一個生活例子。

假設你有個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匯出并且被本地使用。

comments powered by Disqus