iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
AI/ ML & Data

輕鬆上手AI專案-影像分類到部署模型系列 第 13

[Day 13] 評估模型的方法:評估數值

  • 分享至 

  • xImage
  •  

前言

昨天開始進入模型的編譯和訓練,可以觀察到,在模型訓練過程會顯示每一個週期的訓練資料集與驗證資料集的準確度(Accuracy)和損失值(Loss)。今天就來介紹深度學習中幾個常用的評估指標(Metrics)。

準確度

在分類的問題中,我們通常會選擇準確度作為評估指標。準確度為正確分類的樣本數佔總樣本數的比例,其公式如下:
準確度公式1
或者為
準確度公式2
其中 TP = True Positive,為正確預測為正例的樣本數,TN = True Negative,為正確預測為負例的樣本數,FP = False Positive,為錯誤預測為正例的樣本數,FN = False Negative,為錯誤預測為負例的樣本數。

準確度適合使用於類別平均的資料集,如果資料集類別不平均,會造成結果被誤導,這時候可以考慮其他評估指標,如精確度(Precision)、召回率(Recall)或 F1-score 等。

損失值

損失值(Loss)為機器學習或深度學習模型訓練過程中一個很重要的評估指標,為實際值與預測值之間的差距,根據所選擇的損失函數計算得出。在類別分類問題中,通常會選擇交叉熵(Cross-entropy)作為損失函數,在迴歸問題通常會使用均方誤差。

💡在分類問題選擇交叉熵類型的小技巧:

交叉熵類別 輸入資料集類型
binary_crossentropy 二分類
categorical_crossentropy 分類標籤為 One-hot Encoding
sparse_categorical_crossentropy 整數標籤

💡同場加映:
在之前有提到其中一項匯入訓練資料集的方法 flow_from_directory(),其中有一項參數為 class_mode 預設為 categorical(沒有特別寫的話預設為此設定),即為 One-hot Encoding,所以損失函數要使用 categorical_crossentropy(二分類可使用 binary_crossentropy)。

精密度

在前述有提到,單看準確度可能會導致結果被誤導,所以還有其他指標可以作為評估模型的參考。精密度(Precision)和準確度不同在於它留意於預測為正向的正確數量,為預測正向的狀況中,正確預測的機率值,其公式如下:
精密度公式
例如在醫學診斷的問題中,可以使用精密度作為疾病預測指標。

召回率

召回率(Recall)為實際正向的情況中,實際為真的機率值,留意於實際為正向的正確數量,其公式如下:
召回率公式
如果要解決的問題為在乎被遺漏掉的實際正例,例如癌症的檢查,原本有得癌症卻被預測為沒有癌症,這種正向例子被誤判時的成本較高。

範例

將 Precision 和 Recall 加入評估模型的指標方法:

model.compile(optimizer=opt, 
              loss='categorical_crossentropy', 
              metrics=['accuracy', 
                        tf.keras.metrics.Precision(name='precision'), 
                        tf.keras.metrics.Recall(name='recall')
                      ]
             )

執行結果會發現多了兩種評估指標:

7/7 [==============================] - 38s 5s/step - loss: 46.1240 - accuracy: 0.3148 - precision: 0.3131 - recall: 0.3102 - val_loss: 15.2632 - val_accuracy: 0.5938 - val_precision: 0.5938 - val_recall: 0.5938

還有許多評估指標都可以依照專案需求去指定,如果內建沒有,也可以自己定義。明天要進入深度學習中一個很重要的觀念,先深呼吸休息一下吧~/images/emoticon/emoticon33.gif


上一篇
[Day 12] 訓練,啟動!開始編譯模型
下一篇
[Day 14] 我的模型訓練好了嗎?overfitting 是關鍵!
系列文
輕鬆上手AI專案-影像分類到部署模型30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言