自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

似乎沒區(qū)別,但你混淆過驗(yàn)證集和測試集嗎?

開發(fā) 開發(fā)工具
本文將介紹訓(xùn)練數(shù)據(jù)集(train dataset)、測試數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集的確切定義,以及如何在機(jī)器學(xué)習(xí)項(xiàng)目中使用這三種數(shù)據(jù)集。

很多機(jī)器學(xué)習(xí)入門者對測試集和驗(yàn)證集的概念有所混淆,甚至很多機(jī)器學(xué)習(xí)開發(fā)工程師常常都會(huì)混淆這兩個(gè)概念。因?yàn)楫?dāng)我們采用驗(yàn)證集的時(shí)候,測試集好像和驗(yàn)證集實(shí)際上并沒有多大區(qū)別,所以本文從學(xué)界定義到實(shí)踐中的具體影響探討驗(yàn)證集和測試集間的區(qū)別。

[[199187]]

驗(yàn)證數(shù)據(jù)集(validation dataset)是模型訓(xùn)練過程中留出的樣本集,它可以用于調(diào)整模型的超參數(shù)和評估模型的能力。但測試數(shù)據(jù)集(test dataset)不同,雖然同是模型訓(xùn)練過程中留出的樣本集,但它是用于評估最終模型的性能,幫助對比多個(gè)最終模型并做出選擇。在開發(fā)機(jī)器學(xué)習(xí)系統(tǒng)時(shí),我們對驗(yàn)證數(shù)據(jù)集及其與測試數(shù)據(jù)集的區(qū)別存在諸多混淆。本文將介紹訓(xùn)練數(shù)據(jù)集(train dataset)、測試數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集的確切定義,以及如何在機(jī)器學(xué)習(xí)項(xiàng)目中使用這三種數(shù)據(jù)集。

通過閱讀本文,我們將了解:

  • 機(jī)器學(xué)習(xí)領(lǐng)域的專家對訓(xùn)練數(shù)據(jù)集、測試數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集的定義。
  • 驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集在實(shí)踐中的區(qū)別。
  • 使用哪些過程能充分利用驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集進(jìn)行模型評估。

專家對驗(yàn)證數(shù)據(jù)集的定義

本節(jié),我們將了解部分***教科書和參考文獻(xiàn)如何定義訓(xùn)練數(shù)據(jù)集、測試數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集及其區(qū)別。

通常情況下,「驗(yàn)證數(shù)據(jù)集」指模型訓(xùn)練過程中留出的樣本集,可與「測試數(shù)據(jù)集」這個(gè)術(shù)語互換。在訓(xùn)練數(shù)據(jù)集上對模型能力進(jìn)行評估得到的結(jié)果存在偏差。因此,用留出的樣本對模型能力進(jìn)行評估得出的結(jié)果偏差更小。我們通常稱之為使用訓(xùn)練集測試集劃分方法(train-test split approach)進(jìn)行算法評估。

假如我們想評估在一系列觀察值上使用特定的數(shù)據(jù)學(xué)習(xí)方法后所產(chǎn)生的測試誤差,那么驗(yàn)證集方法非常適合該任務(wù)。它包括將這些觀察值任意切分成兩部分:訓(xùn)練集和驗(yàn)證集(又稱留出集,hold-out set)。模型在訓(xùn)練集上進(jìn)行擬合,然后使用擬合后的模型對驗(yàn)證集中保留的數(shù)據(jù)樣本進(jìn)行預(yù)測。并定量地計(jì)算模型驗(yàn)證誤差,通常我們使用 MSE 對錯(cuò)誤率進(jìn)行評估,評估生成的驗(yàn)證集錯(cuò)誤率即測試錯(cuò)誤率。

——Gareth James, et al., Page 176, An Introduction to Statistical Learning: with Applications in R, 2013.

在 Kuhn 和 Johnson 的著作《應(yīng)用預(yù)測建?!?Applied Predictive Modeling)一書中,我們可以看到作者認(rèn)為「驗(yàn)證數(shù)據(jù)集」和「測試數(shù)據(jù)集」這兩個(gè)詞語可以互換。他們在實(shí)例中明確指出,必須在留出的數(shù)據(jù)集上進(jìn)行最終模型評估,無論評估目的是訓(xùn)練模型還是調(diào)整模型參數(shù)。

理想情況下,模型評估應(yīng)該在未用于模型構(gòu)建或微調(diào)的樣本上進(jìn)行,這樣才能對模型效率進(jìn)行無偏評估。因此如果我們有大量數(shù)據(jù)可用,則可以留出一部分樣本集用于最終模型的評估。訓(xùn)練數(shù)據(jù)集指構(gòu)建模型時(shí)使用的樣本集,而測試數(shù)據(jù)集或驗(yàn)證數(shù)據(jù)集用于評估模型性能。

——Max Kuhn and Kjell Johnson, Page 67, Applied Predictive Modeling, 2013

傳統(tǒng)情況下,對最終模型進(jìn)行性能評估的數(shù)據(jù)叫作「測試集」。Russell 和 Norvig 在 AI 教科書《人工智能:一種現(xiàn)代方法》中再次強(qiáng)調(diào)了保持測試集完全獨(dú)立的重要性。他們認(rèn)為,以任何形式使用測試集中的信息都是一種「窺探」(peeking),因此他們建議封存測試集,直到模型調(diào)整全部完成再作為***的評估。

模型窺探預(yù)留數(shù)據(jù)集是使用測試集選擇并評估假設(shè)函數(shù)的后果。若要避免窺視,必須將測試集單獨(dú)留出,直到模型學(xué)習(xí)過程完全結(jié)束,才能最終對模型假設(shè)進(jìn)行獨(dú)立的評估。(如果你對評估結(jié)果不滿意,想返回尋找更好的模型假設(shè),那么你必須獲取并封存一組全新的測試集。)

—Stuart Russell and Peter Norvig, page 709, Artificial Intelligence: A Modern Approach, 2009 (3rd edition)

重要的是,Russel 和 Norvig 認(rèn)為用于模型擬合的訓(xùn)練數(shù)據(jù)集可以進(jìn)一步劃分成訓(xùn)練集和驗(yàn)證集。驗(yàn)證集是訓(xùn)練數(shù)據(jù)集的子集,用于對模型能力進(jìn)行初步評估。

如果測試集被封存后,你仍想在未知數(shù)據(jù)上進(jìn)行模型性能評估,來選擇性能好的模型假設(shè),那么你需要將可用數(shù)據(jù)(不包含測試集)分為訓(xùn)練集和驗(yàn)證集。

—Stuart Russell and Peter Norvig, page 709,Artificial Intelligence: A Modern Approach, 2009 (3rd edition)

該領(lǐng)域的其他教科書級的著作也佐證了此定義。Ripley 的著作《模式識別與神經(jīng)網(wǎng)絡(luò)》(Pattern Recognition and Neural Networks)中的術(shù)語表就是一個(gè)經(jīng)典實(shí)例。具體來說,訓(xùn)練集、驗(yàn)證集和測試集的定義如下:

訓(xùn)練集:用來學(xué)習(xí)的樣本集,用于分類器參數(shù)的擬合。

驗(yàn)證集:用來調(diào)整分類器超參數(shù)的樣本集,如在神經(jīng)網(wǎng)絡(luò)中選擇隱藏層神經(jīng)元的數(shù)量。

測試集:僅用于對已經(jīng)訓(xùn)練好的分類器進(jìn)行性能評估的樣本集。

—Brian Ripley, page 354, Pattern Recognition and Neural Networks, 1996

這些是數(shù)據(jù)集推薦的定義和用法。重申 Ripley 的術(shù)語定義之后,讓我們來繼續(xù)討論「測試集」和「驗(yàn)證集」在機(jī)器學(xué)習(xí)建模過程中的常見混淆。

機(jī)器學(xué)習(xí)相關(guān)文獻(xiàn)通常顛倒「驗(yàn)證集」和「測試集」的意思。這是人工智能研究中最明顯的術(shù)語混淆。關(guān)鍵在于,神經(jīng)網(wǎng)絡(luò)的文獻(xiàn)對測試集的標(biāo)準(zhǔn)定義認(rèn)為測試集不應(yīng)用于選擇兩個(gè)或多個(gè)網(wǎng)絡(luò)較好的那個(gè),因此測試集上的誤差才是泛化誤差的無偏評估(假設(shè)測試集和實(shí)際總體服從同一分布)。

—Subject: What are the population, sample, training set, design set, validation set, and test set?

訓(xùn)練數(shù)據(jù)集、驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集的定義

為了強(qiáng)調(diào)上文中專家的研究結(jié)果,本節(jié)為這三個(gè)術(shù)語提供明確的定義。

  • 訓(xùn)練數(shù)據(jù)集:用于模型擬合的數(shù)據(jù)樣本。
  • 驗(yàn)證數(shù)據(jù)集:用于調(diào)整模型的超參數(shù),為擬合后的模型提供無偏評估。如果模型配置中已包括在驗(yàn)證集上的調(diào)整,則該評估偏差會(huì)更大。
  • 測試數(shù)據(jù)集:為擬合后的最終模型提供無偏評估。

我們可以通過下列偽代碼具體來看它們的定義:

  1. # split data 
  2. data = ... 
  3. train, validation, test = split(data) 
  4. # tune model hyperparameters 
  5. parameters = ... 
  6. for params in parameters: 
  7.  model = fit(train) 
  8.  skill = evaluate(model, validation) 
  9. # evaluate final model for comparison with other models 
  10. model = fit(train) 
  11. skill = evaluate(model, test) 

以下是額外需要理解的內(nèi)容:

  • 驗(yàn)證數(shù)據(jù)集可能在其他形式的模型預(yù)準(zhǔn)備中發(fā)揮作用,如特征選擇。
  • 最終模型可以在訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集上進(jìn)行擬合。

只有驗(yàn)證數(shù)據(jù)集遠(yuǎn)遠(yuǎn)不夠

在未知數(shù)據(jù)上對模型性能進(jìn)行評估還有其他方式。一個(gè)常見的實(shí)例是使用 K-折交叉驗(yàn)證(k-fold cross-validation)來調(diào)整模型超參數(shù),而不是使用單獨(dú)的驗(yàn)證數(shù)據(jù)集。Kuhn 和 Johnson 在「Data Splitting Recommendations」一章中指出使用單獨(dú)的「測試集」(或驗(yàn)證集)的局限性。

如前所述,k 折交叉驗(yàn)證是一種足以取代單獨(dú)、獨(dú)立測試集的技術(shù):

  • 測試集是對模型的單次評估,無法完全展現(xiàn)評估結(jié)果的不確定性。
  • 將大的測試集劃分成測試集和驗(yàn)證集會(huì)增加模型性能評估的偏差。
  • 分割的測試集樣本規(guī)模太小。
  • 模型可能需要每一個(gè)可能存在的數(shù)據(jù)點(diǎn)來確定模型值。
  • 不同測試集生成的結(jié)果不同,這造成測試集具備極大的不確定性。
  • 重采樣方法可對模型在未來樣本上的性能進(jìn)行更合理的預(yù)測。

Max Kuhn 和 Kjell Johnson 等人還推薦了適用于小規(guī)模樣本的 10-折交叉驗(yàn)證,其偏差低、性能評估變化小;他們還推薦適用于模型性能比較的自助法(bootstrap method),該方法性能評估變化小。對于規(guī)模稍大的樣本集,他們同樣推薦 10-折交叉驗(yàn)證方法。

驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集會(huì)淡化

很可能你再也不會(huì)在應(yīng)用機(jī)器學(xué)習(xí)中看到訓(xùn)練數(shù)據(jù)集、驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集。

當(dāng)實(shí)踐者選擇在訓(xùn)練數(shù)據(jù)集中使用 k-折交叉驗(yàn)證方法調(diào)整模型超參數(shù)時(shí),「驗(yàn)證集」的概念就已經(jīng)淡化了。

我們可以通過以下為代碼具體來看:

  1. # split data 
  2. data = ... 
  3. train, test = split(data) 
  4. # tune model hyperparameters 
  5. parameters = ... 
  6. k = ... 
  7. for params in parameters: 
  8.  skills = list() 
  9.  for i in k: 
  10.  fold_train, fold_val = cv_split(i, k, train) 
  11.  model = fit(fold_train, params) 
  12.  skill_estimate = evaluate(model, fold_val) 
  13.  skills.append(skill_estimate) 
  14.  skill = summarize(skills) 
  15. # evaluate final model for comparison with other models 
  16. model = fit(train) 
  17. skill = evaluate(model, test) 

結(jié)語

在本教程中,你會(huì)了解「驗(yàn)證數(shù)據(jù)集」和「測試數(shù)據(jù)集」中的很多謬誤,以及在評估機(jī)器學(xué)習(xí)模型的能力時(shí)如何正確地區(qū)分這些術(shù)語。

具體來說:

  • 過去的專家學(xué)者已經(jīng)對模型評估中「訓(xùn)練數(shù)據(jù)集」、「驗(yàn)證數(shù)據(jù)集」和「測試數(shù)據(jù)集」給出了明確定義。
  • 「驗(yàn)證數(shù)據(jù)集」主要用于調(diào)整超參數(shù)和數(shù)據(jù)準(zhǔn)備時(shí)對模型進(jìn)行評估,而「測試數(shù)據(jù)集」主要用于對比多個(gè)最終模型時(shí)的評估。
  • 如果采用 k-折交叉驗(yàn)證等重采樣方法,尤其當(dāng)重采樣方法已經(jīng)被嵌套在模型驗(yàn)證中時(shí),「驗(yàn)證數(shù)據(jù)集」和「測試數(shù)據(jù)集」的概念可能會(huì)淡化。

原文:http://machinelearningmastery.com/difference-test-validation-datasets/

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號“機(jī)器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2009-08-03 14:39:25

Asp.Net函數(shù)集

2021-10-27 15:57:48

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2022-10-10 12:14:53

量子深度學(xué)習(xí)

2021-01-20 15:19:32

Google 開源數(shù)據(jù)集

2022-06-08 09:11:55

測試代碼開發(fā)

2020-06-20 14:09:01

信息安全數(shù)據(jù)技術(shù)

2021-03-12 11:00:14

機(jī)器學(xué)習(xí)人工智能爬坡測試

2021-03-04 12:40:25

機(jī)器學(xué)習(xí)人工智能爬坡測試

2018-11-01 13:04:22

IBM云計(jì)算紅帽

2020-01-18 10:04:12

開源sourceforge開發(fā)者

2021-07-15 23:23:20

垃圾回收器GC

2023-10-04 17:25:01

面向接口編程

2024-01-01 08:25:53

ViewSurface框架

2017-11-07 12:35:53

比特幣區(qū)塊鏈虛擬貨幣

2022-08-02 10:01:34

Import語句ES模塊

2018-08-01 14:45:16

PHP編程語言

2022-11-28 07:10:57

2012-07-09 14:25:04

程序集加載

2020-01-05 22:46:31

TCPIP網(wǎng)絡(luò)協(xié)議

2022-03-13 18:53:31

interfacetypeTypeScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號