訓練集、驗證集和測試集區別


我們在進行模型評估和選擇的時候,先將數據集隨機分為訓練集、驗證集和測試集,然后用訓練集訓練模型,用驗證集驗證模型,根據情況不斷調整模型,選擇其中最好的模型,再用訓練集和測試集訓練模型得到一個最好的模型,最后用測試集評估最終的模型。

  • 訓練集

訓練集是用於模型擬合數據樣本。

  • 驗證集

是模型訓練過程中單獨留出的樣本集,它可以用於調整模型的超參數和用於對模型的能力進行初步評估。 通常用來在模型迭代訓練時,用以驗證當前模型泛化能力(准確率,召回率等),以決定是否停止繼續訓練。在神經網絡中,用驗證集去尋找最優的網絡深度,或者決定反向傳播算法的停止點,或者在神經網絡中選擇隱藏層神經元的數量。驗證集是可以多次使用的,來不斷調節參數。

缺陷:模型在一次次重新手動調參並繼續訓練后所逼近的驗證集,可能只代表一部分非訓練集,導致訓練好的模型泛化能力不夠。

  • 測試集

用來評估最終模型的泛化能力,但不能作為調參、選擇特征等算法相關的依據,測試集只能使用一次。

為什么要用交叉驗證?

如果驗證集較大,那么訓練集就會變得很小,如果數據集本身就不大的話,顯然這樣訓練出來的模型就不好。如果驗證集很小,那么此驗證誤差就不能很好地反映出泛化誤差。此外,在不同的划分方式下,訓練出的不同模型的驗證誤差波動也很大(方差大)。到底以哪次驗證誤差為准?誰都不知道。但是如果將這些不同划分方式下訓練出來的模型的驗證過程重復多次得到的平均誤差可能就是對泛化誤差的一個很好的近似。

  • 交叉驗證法

就是嘗試利用不同的訓練集或者驗證集來對模型進行多組不同的訓練或者驗證,來解決對單獨測試結果過於片面以及訓練數據不足的問題。

K折交叉驗證法就是將數據(除去測試集的數據)分成相對來說數據量相同但是數據互不相交的k份,依次從K份中選出1份作為驗證集,其余K-1份作為訓練集,這樣就進行了K次單獨的模型訓練和驗證,最后將K次驗證結果取平均值,作為模型的驗證誤差。

交叉驗證博客:https://zhuanlan.zhihu.com/p/113623623


免責聲明!

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



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