机器学习笔记:训练集、验证集与测试集
在學(xué)習(xí)《深度學(xué)習(xí)原理與pythorch實戰(zhàn)》這本書的4.3.4劃分?jǐn)?shù)據(jù)集這一小節(jié)(即76頁劃分?jǐn)?shù)據(jù)集)的過程中,提到了訓(xùn)練集、測試集與驗證集這幾個概念,以及為何相對于通用的訓(xùn)練集、測試集,多了一個驗證集的概念。不過這本書講解還是沒有那么透徹清晰,基于此查了很多資料,又加深鞏固理解了訓(xùn)練集、測試集和驗證集的概念。
一、定義
Ripley, B.D在《Pattern Recognition and Neural Networks》(1996)中給出了這三個詞的定義。
- Training set: A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier.
- Validation set: A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network.
- Test set: A set of examples used only to assess the performance [generalization] of a fully specified classifier.
翻譯為中文大白話就是
訓(xùn)練集(train set) —— 用于訓(xùn)練模型(擬合參數(shù)):即模型擬合的數(shù)據(jù)樣本集合,如通過訓(xùn)練擬合一些參數(shù)來建立一個分類器。
驗證集(validation set)——?用于確定網(wǎng)絡(luò)結(jié)構(gòu)或者控制模型復(fù)雜程度的超參數(shù)(擬合超參數(shù)):是模型訓(xùn)練過程中單獨(dú)留出的樣本集,它可以用于調(diào)整模型的超參數(shù)和用于對模型的能力進(jìn)行初步評估。 通常用來在模型迭代訓(xùn)練時,用以驗證當(dāng)前模型泛化能力(準(zhǔn)確率,召回率等),防止過你話的現(xiàn)象出現(xiàn),以決定如何調(diào)整超參數(shù)。具體原理參照本文的二(三)。
測試集(test set) —— 用來評估模最終模型的性能如何(評價模型好壞):測試集沒有參于訓(xùn)練,主要是測試訓(xùn)練好的模型的準(zhǔn)確能力等,但不能作為調(diào)參、選擇特征等算法相關(guān)的選擇的依據(jù)。說白了就只用于評價模型好壞的一個數(shù)據(jù)集。
二、圖解訓(xùn)練集、測試集和驗證集
(一)是否參與訓(xùn)練
基于數(shù)據(jù)集是否參與了訓(xùn)練過程,可通過下圖來理解,即測試集完全沒參與訓(xùn)練,它只是用于測試,評估模型到底性能如何
(二)訓(xùn)練集與測試集
這種最常見的方法就是將數(shù)據(jù)分為訓(xùn)練集和測試集兩個部分,先用訓(xùn)練集訓(xùn)練算法模型,再用測試集測試準(zhǔn)確率,示意圖如下。
?(三)訓(xùn)練集、測試集與驗證集
????????在機(jī)器學(xué)習(xí)的上下文中,超參數(shù)是在開始學(xué)習(xí)過程之前設(shè)置值的參數(shù),而不是通過訓(xùn)練得到的參數(shù)數(shù)據(jù)。通常情況下,需要對超參數(shù)進(jìn)行優(yōu)化,給學(xué)習(xí)機(jī)選擇一組最優(yōu)超參數(shù),以提高學(xué)習(xí)的性能和效果。
? ? ? ? 但是我們思考一下,如果數(shù)據(jù)集僅僅分為訓(xùn)練集和測試集,那么我們通過修改一些超參數(shù)(不能通過學(xué)習(xí)來自動調(diào)整的參數(shù))來降低誤差,但是這種方法在實際中的應(yīng)用效果卻并沒有想象的那么好。這是因為超參數(shù)都是基于測試集來調(diào)整的,就相當(dāng)于把測試集當(dāng)成了訓(xùn)練超參數(shù)的數(shù)據(jù)。這樣對于新的數(shù)據(jù)效果不一定會更好。
? ? ? ? 于是就想出一種解決辦法,即保留一個數(shù)據(jù)集作為驗證集,在這些步驟做完之后再進(jìn)行最終的驗證。
?
?而訓(xùn)練集、驗證集和測試集的工作流程如下圖所示,可以很明顯看到訓(xùn)練集用于訓(xùn)練模型,驗證集用于調(diào)節(jié)超參數(shù),而測試集就只是用于評估模型好壞的
(四)交叉驗證
?下圖示意3折交叉驗證法,如下所示
三、數(shù)據(jù)集劃分原則
數(shù)據(jù)劃分的方法并沒有明確的規(guī)定,不過可以參考3個原則:
1.對于小規(guī)模樣本集(幾萬量級),常用的分配比例是 60% 訓(xùn)練集、20% 驗證集、20% 測試集。
2.對于大規(guī)模樣本集(百萬級以上),只要驗證集和測試集的數(shù)量足夠即可,例如有 100w 條數(shù)據(jù),那么留 1w 驗證集,1w 測試集即可。1000w 的數(shù)據(jù),同樣留 1w 驗證集和 1w 測試集。
3.超參數(shù)越少,或者超參數(shù)很容易調(diào)整,那么可以減少驗證集的比例,更多的分配給訓(xùn)練集。
總結(jié)
以上是生活随笔為你收集整理的机器学习笔记:训练集、验证集与测试集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssm基于android的个人健康打卡系
- 下一篇: MTK MT6763 FAQ资料集锦