iT邦幫忙

0

[Machine Learning A-Z [2026] ] 學習筆記 Day16 Model Selection: Accuracy Score & CAP

  • 分享至 

  • xImage
  •  

前面幾章有講到Confusion Matrix跟Accuracy Score
在整個Classification 章節上完後,又發現有一章比較深入談選模型時,怎麼使用Confusion Matrix的內容跟Accuracy Paradox,以及CAP的觀念。

Confusion Matric再複習一次,就是根據我們預測值及實際值,sklearn 可以產生一個Confusion Matrix

from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)

延續先前提過的案例,根據一些檢驗結果做模型訓練後預測是否得病,
Confusion Matrix會給一個4X4的內容表格,如下,要看預測正確的量是左上右下,而預測不準的部分是右上左下。

++ 預測沒有 預測有
實際沒有 30 TypeI error
實際有 TypeII error 80

其中、右上又可稱型一錯誤,就是實際上沒有但被預測成有,這個就講師的觀點來說影響性比較低,畢竟只是誤判,實際沒有發生事情。而左下的型二錯誤實際影響就比較嚴重了,型二是沒被預測到,但實際有發生的狀況。
這個在判斷模型適切度來說也是蠻重要的指標之一

Accuracy Score & Accuracy Score Paradox
Accuracy Score的算法從Confusion matrix延續,

++ 預測沒有 預測有
實際沒有 43 12
實際有 4 41

準確率(AR) =預測準確(84) /全部(100) = 84%
錯誤率(ER) =沒預測到(16)/全部(100)=16%

Accuracy Paradox可能會在不平衡的資料中,很有可能會算出很好的準確度但其實沒有參考性。例如以下:

++ 預測沒有 預測有
實際沒有 95 0
實際有 5 0

AR = 95 / 100 = 95% 準確率反而會一下子上升到96%,看似很有價值,但反而沒有參考性。
因為、完全沒有抓到實際'有'的狀況。維基百科是說這種狀況下適合拿來評估的方式是
Precision & Recall

++ 預測沒有 預測有
實際沒有 TN(95) FP(0)
實際有 FN(5) TP(0)

Precision = TP / (TP+FP) = 0/0 = 0% 模型預測沒有人...不過我們這個算式等於無法評估哈哈。
Recall = TP / (TP+FN) = 0/5 = 0% 實際有5個人、但模型一個都沒預測到。
總之Precision 跟recall兩個都很差的狀況下,就表示accuracy score的可信度不高了,模型需要重跑。

至於sklearn怎麼跑

from sklearn.metrics import precision_score, recall_score, classification_report
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)

查官網發現了Classification report這個東西,實際試跑得到以下結果
左上陣列是confusion matrix,放在這邊當參考值而已XD
https://ithelp.ithome.com.tw/upload/images/20260907/20183477n9VR8OJN2w.png
我們可以看到分類為0 / 1的precision 跟recall分別為多少,然後還有一個f1_score這個指標經過查詢是個precision跟recall的綜合指數,我想應該有超過80%都算是蠻不錯的。
下方的指標我就不寫了、macro avg 跟 weighted avg 兩種都是把precision跟recall指數算進來的綜合性的Accuracy 指標,Macro是每個類別同樣重要,可以避免資料量差異帶來的影響,weighted則是有考量每個類別的數量,數量多的會拿到說一點分數。

總之各種accuracy指標都差不多讀到了


最後,來看一下CAP (Cumulative Accuracy Profile)
是拿來評估模型效率的一個方法。模型效率越好、我們可以拿越少的資料預測更多的可能,引用課堂的圖
ML
其中有三條線、灰色虛線是random model,我覺得那條線應該不存在,只是當基準線用的,random假設基本是50%的資料預測50%的正確結果。但是假設訓練模型訓練了半天還是這樣,真不如躺平了XD 比較好的模型結果當然是拿10%資料預測90%的正確結果,但10%預測90%又太夢幻了,通常是perfect model才有可能,現實中不太可能存在,通常拿到good model就很不錯。我們要看模型效率好不好,可以看圖片灰色區塊大不大,還有在小樣本數的時候對應的預測結果高不高。不過sklearn其實沒有把CAP出成一個模組、我想主要應該是因為...這個是'看圖'用的,比較不是算出一個分出來做參考的。後頭的課程不知道會不會介紹更有效的方式,有的話到時候再寫囉~


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言