機器學習筆記:訓練集、驗證集和測試集區別


一、介紹

訓練集、驗證集和測試集在機器學習領域及其常見,后兩者容易混用。

在有監督(supervise)的機器學習中,數據集常被切分為2-3部分,即:

  • 訓練集(train set
  • 驗證集(validation set
  • 測試集(test set

一個形象的比喻:

訓練集:學生的課本,學生根據課本中的內容來掌握知識;

驗證集:作業,通過作業可以知道學生的學習情況、進步快慢;

測試集:考試,考題都是平時沒見過的,考察學生舉一反三的能力。

二、訓練集

學習樣本數據集,通過匹配一些參數來建立一個分類器。

建立一種分類的方式,主要是用來訓練模型的。

作用:估計模型。

三、驗證集

對學習出來的模型,調整分類器的參數,如在神經網絡中選擇隱藏單元數。

驗證集還用來確定網絡結構或者控制模型復雜程度的參數。

作用:確定網絡結構或者控制模型復雜程度的參數。

在普通的機器學習中常用的交叉驗證(Cross validation )就是把訓練數據集本身再細分為不同的驗證數據集去訓練模型。

四、測試集

測試訓練好的模型分辨能力。

該數據集與訓練集、驗證集完全分離,不參與模型訓練。

作用:檢驗最終選擇最優的模型性能。

五、為什么需要划分數據集?

簡而言之,為了防止過度擬合

如果我們把所有數據都用來訓練模型的話,建立的模型自然是最契合這些數據的,測試表現也好。

但換了其它數據集測試這個模型效果可能就沒那么好。

總而言之,訓練集和測試集相同的話,模型評估結果肯定比實際要好,但是模型的泛化性能較差。

六、總結

  • train set -- 訓練模型、確定模型參數
  • validation set -- 模型選擇、參數優化
  • test set -- 測試模型泛化性能

典型的交叉驗證,划分比例為 7:2:1,三部分從樣本中隨機抽取。

針對樣本交叉的情況,數據集中每一個樣本都是極其珍貴的,不宜如此划分。

可采用K折交叉驗證、留一法(LOO)等進行模型優化評估。

七、實操

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1)

參考鏈接:訓練集、驗證集和測試集這三個名詞的區別

參考鏈接:訓練集、驗證集、測試集以及交驗驗證的理解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM