[机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)
在有監(jiān)督(supervise)的機器學(xué)習(xí)中,數(shù)據(jù)集常被分成2~3個即:
訓(xùn)練集(train set) 驗證集(validation set) 測試集(test set)
????? 一般需要將樣本分成獨立的三部分訓(xùn)練集(train set),驗證集(validation set)和測試集(test set)。其中訓(xùn)練集用來估計模型,驗證集用來確定網(wǎng)絡(luò)結(jié)構(gòu)或者控制模型復(fù)雜程度的參數(shù),而測試集則檢驗最終選擇最優(yōu)的模型的性能如何。一個典型的劃分是訓(xùn)練集占總樣本的50%,而其它各占25%,三部分都是從樣本中隨機抽取。?
???? 樣本少的時候,上面的劃分就不合適了。常用的是留少部分做測試集。然后對其余N個樣本采用K折交叉驗證法。就是將樣本打亂,然后均勻分成K份,輪流選擇其中K-1份訓(xùn)練,剩余的一份做驗證,計算預(yù)測誤差平方和,最后把K次的預(yù)測誤差平方和再做平均作為選擇最優(yōu)模型結(jié)構(gòu)的依據(jù)。特別的K取N,就是留一法(leave one out)。
???? training set是用來訓(xùn)練模型或確定模型參數(shù)的,如ANN中權(quán)值等; validation set是用來做模型選擇(model selection),即做模型的最終優(yōu)化及確定的,如ANN的結(jié)構(gòu);而 test set則純粹是為了測試已經(jīng)訓(xùn)練好的模型的推廣能力。當(dāng)然,test set這并不能保證模型的正確性,他只是說相似的數(shù)據(jù)用此模型會得出相似的結(jié)果。但實際應(yīng)用中,一般只將數(shù)據(jù)集分成兩類,即training set 和test set,大多數(shù)文章并不涉及validation set。
train
訓(xùn)練數(shù)據(jù)。擬合模型,用這部分?jǐn)?shù)據(jù)來建立模型。
是一些我們已經(jīng)知道輸入和輸出的數(shù)據(jù)集訓(xùn)練機器去學(xué)習(xí),通過擬合去尋找模型的初始參數(shù)。例如在神經(jīng)網(wǎng)絡(luò)(Neural Networks)中, 我們用訓(xùn)練數(shù)據(jù)集和反向傳播算法(Backpropagation)去每個神經(jīng)元找到最優(yōu)的比重(Weights)。
validation
驗證數(shù)據(jù)。train建了一個模型,但是模型的效果僅體現(xiàn)了訓(xùn)練數(shù)據(jù),但不一定適合同類的其他數(shù)據(jù),所以建模前數(shù)據(jù)分成兩部分,一部分為訓(xùn)練數(shù)據(jù),一部分為驗證數(shù)據(jù)(兩部分?jǐn)?shù)據(jù)的比例大致為7:3,這取決于你驗證的方法)。另外,你也可能訓(xùn)練多個模型,但不知哪個模型性能更佳,這時可以將驗證數(shù)據(jù)輸入不同模型進行比較。
是一些我們已經(jīng)知道輸入和輸出的數(shù)據(jù)集,通過讓機器學(xué)習(xí)去優(yōu)化調(diào)整模型的參數(shù),在神經(jīng)網(wǎng)絡(luò)中, 我們用驗證數(shù)據(jù)集去尋找最優(yōu)的網(wǎng)絡(luò)深度(number of hidden layers),或者決定反向傳播算法的停止點;在普通的機器學(xué)習(xí)中常用的交叉驗證(Cross Validation) 就是把訓(xùn)練數(shù)據(jù)集本身再細(xì)分成不同的驗證數(shù)據(jù)集去訓(xùn)練模型。
test
測試數(shù)據(jù)。跟前兩者的最大區(qū)別在于:train和validation數(shù)據(jù)均是同一對象的數(shù)據(jù),但是測試,我們就需要用跨對象的數(shù)據(jù)來驗證模型的穩(wěn)定性。
用戶測試模型表現(xiàn)的數(shù)據(jù)集,根據(jù)誤差(一般為預(yù)測輸出與實際輸出的不同)來判斷一個模型的好壞。
?
為什么驗證數(shù)據(jù)集和測試數(shù)據(jù)集兩者都需要?
因為驗證數(shù)據(jù)集(Validation Set)用來調(diào)整模型參數(shù)從而選擇最優(yōu)模型,模型本身已經(jīng)同時知道了輸入和輸出,所以從驗證數(shù)據(jù)集上得出的誤差(Error)會有偏差(Bias)。
但是我們只用測試數(shù)據(jù)集(Test Set) 去評估模型的表現(xiàn),并不會去調(diào)整優(yōu)化模型。
在傳統(tǒng)的機器學(xué)習(xí)中,這三者一般的比例為training/validation/test = 50/25/25, 但是有些時候如果模型不需要很多調(diào)整只要擬合就可時,或者training本身就是training+validation (比如cross validation)時,也可以training/test =7/3.
但是在深度學(xué)習(xí)中,由于數(shù)據(jù)量本身很大,而且訓(xùn)練神經(jīng)網(wǎng)絡(luò)需要的數(shù)據(jù)很多,可以把更多的數(shù)據(jù)分給training,而相應(yīng)減少validation和test。
轉(zhuǎn)載于:https://www.cnblogs.com/WayneZeng/p/9290793.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的[机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java BASE64流 输出图片。
- 下一篇: rancher使用fluentd-pil