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匯出并且被本地使用。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus