目錄

使用機器學習解決問題的五步驟:模型評估

模型訓練跑完之後,馬上會冒出一個很現實的問題:這個模型到底好不好用?回答這個問題,就是機器學習五步驟中第四步「模型評估」(Model Evaluation) 的工作。

本篇是機器學習入門觀念系列的第六篇。前一篇「使用機器學習解決問題的五步驟:模型訓練」談的是模型怎麼被訓練出來,以及常見的模型種類。這篇要接著談的是:訓練完之後,我們用什麼方式量化模型的表現、Overfitting 是怎麼一回事,以及分類任務與回歸任務各自會用到哪些評估指標。

機器學習解決問題五步驟的流程示意圖,標示出目前所在的第四個步驟「模型評估」。
用機器學習解決問題的第四步驟:模型評估

在前面「建立資料集」的步驟中,我們把手上的資料切成訓練資料與測試資料兩份。訓練模型時只餵訓練資料,評估模型時則刻意換上測試資料,也就是模型從頭到尾都沒看過的那一份。

為什麼一定要用沒看過的資料?拿考試來比喻最好懂。考前寫一大堆練習題,等於模型的「訓練」階段;考試當天則是「評估」階段,用一份沒寫過的考卷來檢驗練習的成果。考卷的題型通常跟練習題差不多,所以只要練習時真的把觀念搞懂,考試至少拿得到基本分。

反過來說,如果練習時只是死記硬背,把題目連同答案整組背下來,考試換個問法就傻眼了,畢竟出現一模一樣題目的機率不高。

模型也會犯同樣的毛病。訓練階段表現得很漂亮、評估階段卻慘不忍睹,這種狀況稱為**「過度擬合」(Overfitting)**:模型並沒有真的從訓練資料中學到解決問題的方法,只是把答案記了下來。用模型沒看過的測試資料來評估,正是為了把這種模型抓出來。

要說一個模型「好」或「不好」,得先有一個算得出分數的指標。延續考試的比喻:假設整張考卷都是是非題,老師改考卷時不是全對就是全錯,沒有對一半這種事,那整張考卷的分數就取決於總共「對了幾題」。

分類模型也是同樣的道理。以圖片分類為例,每一張圖片都有唯一正確的類別,把模型分類正確的張數除以圖片總數,得到的分數就是**「準確率」(Accuracy)**。100 張圖片分對 92 張,Accuracy 就是 92%。

除了 Accuracy 之外,F1 Score 也是分類任務常見的評估指標,之後的文章會再詳細介紹。

在「使用機器學習解決問題的五步驟:定義問題」一文中提過,常見的機器學習任務分成「分類」與「回歸」兩種。分類任務可以數對錯,但回歸模型輸出的是連續數值,沒有「對」或「錯」可以數,那要怎麼評估?

比較直觀的方式,是看預測值跟正確答案差了多少。例如回歸模型預測房價為 12300,而正確的房價是 15000,則這個模型在這一筆樣本上的 Error 為 | 12300 – 15000 | = 2700。

把每一筆樣本的 Error 取絕對值並加總,再除以總樣本數,就得到一個平均 Error,稱為 Mean Absolute Error (MAE)。也可以做一些變形,改成將每一筆樣本的 Error 取平方,再除以總樣本數,此時得到的 Error 稱為 Mean Square Error (MSE)

這些指標實務上不需要自己刻,scikit-learn 都有現成的實作可以直接呼叫。下面兩張圖分別列出 scikit-learn 在評估「回歸」與「分類」模型時經常用到的指標:

scikit-learn 中回歸任務常用評估指標的一覽表。
Regression 常用的 Loss Function [source: scikit-learn]
scikit-learn 中分類任務常用評估指標的一覽表。
Classification 常用的 Loss Function [source: scikit-learn]

完整的清單與各指標的說明,可以參考 scikit-learn 官方文件的 Model evaluation 章節

機器學習五步驟的流程示意圖,以箭頭標示評估結果不佳時回頭修正前面步驟的循環。
模型評估的結果如果不佳,可能是前面的某個步驟有問題

這篇文章介紹了模型評估 (Model Evaluation) 的概念:用模型沒看過的測試資料來檢驗訓練成果,並依據任務類型選擇合適的指標,分類任務常用 Accuracy,回歸任務則常用 MAE 與 MSE。我們也談到 Overfitting,也就是模型把訓練資料背起來、導致評估階段表現不佳的情況。

評估結果不理想時,問題不一定出在評估這一步,往往是前面某個環節出了狀況:可能需要重新定義問題、重新建立資料集,或是重新訓練模型。在進入下一個步驟「使用模型」之前,這前四個步驟通常會反覆跑上好幾輪,直到得到一個品質夠好的模型為止。