機器學習怎麼切分資料:訓練、驗證、測試集

CHEN TSU PEI
NLP-trend-and-review
3 min readDec 17, 2019

訓練集、驗證集、測試集分別代表什麼含義,又該怎麼劃分

機器學習就像一個學生在學習

訓練及測試資料

對於Supervised Learning來說,我們必須使用標註資料(Labeled Data)來做訓練,例如一個CNN(Convolutional Neural Network),因此我們需要訓練資料(Training Data)

但我們好不容易搜集到的資料卻不能全部拿來做訓練,因為我們必須要保留一些當作測試資料(Testing Data)來評估我們的模型表現

這些資料必須跟訓練資料是完全不同的,否則就有作弊的嫌疑,想想如果在考試前就先拿到考題的話,這樣就算出來的成績很高,也並不能代表這個學生真的很了解這個科目,對於機器來說也是一樣的道理

所以最簡單的方式,我們會把我們的資料切分成測試集跟訓練集,通常會保留比較多當作訓練資料(60%~80%),其餘作測試資料

驗證集

大部分的情況下,我們還會需要驗證資料集(Validation Dataset),例如在K-fold方法中,我們會訓練K次模型,這樣的話我們怎麼知道要選擇哪個模型呢?這時候就需要驗證集的幫助,例如10-fold中,我們將90%的訓練資料當作訓練集,而10%的資料當作驗證集,每次訓練完一個模型後,我們使用10%的資料來驗證,並得到一些評估的指摽(例如: Accuracy, F1-score等),再選擇最好當作我們的模型,在這之後,才使用測試集(Test Dataset)來評估此模型的效能

驗證集也可以是拿來調參數的依據,由於驗證集的資料並不被模型所見,所以選擇一組參數使得在驗證集上得到最好的表現,大部分情況會比單純使用訓練集表現來得好。

整體來說,驗證集讓我們能以一個客觀的角度評估目前模型學習的狀況,例如判斷模型是否過擬合(Overfitting),以及用來調整模型參數等,驗證集並不會被模型所學習,所得出的分數也不會是最後評估模型的好壞的指標,而是由測試集來評估

總結

舉一個例子來說,把我們的模型想成一個高中生,平常上課學習時吸收的資料,像是課本、講義等,我們稱為訓練集,而模擬考,就好像是驗證集,從模擬考中,我們可以有一個概略的指標來看哪個學生學的比較好,對於學生來說,從模擬考的成績好壞,進而調整學習的方向,而測試集就是學測或指考,得到的分數就直接評估了學生的優劣

--

--

CHEN TSU PEI
NLP-trend-and-review

這邊停止更新了!麻煩移駕到https://tsupei.github.io,有持續更新更多NLP的文章唷!