訓練集,測試集,檢驗集的區別與作用

2021-08-21 17:57:21 字數 1431 閱讀 6198

通常,在訓練有監督的機器學習模型的時候,會將資料劃分為訓練集、驗證集合測試集,劃分比例一般為0.6:0.2:0.2。對原始資料進行三個集合的劃分,是為了能夠選出效果(可以理解為準確率)最好的、泛化能力最佳的模型。這三個集合的區分可能會讓人糊塗,特別是,有些讀者搞不清楚驗證集和測試集有什麼區別。

如果是做比賽,官方只提供了乙個標註的資料集(作為訓練集)以及乙個沒有標註的測試集,那麼我們做模型的時候,通常會人工從訓練集中劃分乙個驗證集出來。這時候我們通常不再劃分乙個測試集,可能的原因有兩個:1、比賽方基本都很摳,訓練集的樣本本來就少;2、我們也沒法保證要提交的測試集是否跟訓練集完全同分布,因此再劃分乙個跟訓練集同分布的測試集就沒多大意義了。

訓練集(training set)

作用是用來擬合模型,通過設定分類器的引數,訓練分類模型。後續結合驗證集作用時,會選出同一引數的不同取值,擬合出多個分類器。

驗證集(cross validation set)

作用是當通過訓練集訓練出多個模型後,為了能找出效果最佳的模型,使用各個模型對驗證集資料進行**,並記錄模型準確率。選出效果最佳的模型所對應的引數,即用來調整模型引數。如svm中的引數c和核函式等。

有了模型後,訓練集就是用來訓練引數的,說準確點,一般是用來梯度下降的。而驗證集基本是在每個epoch完成後,用來測試一下當前模型的準確率。因為驗證集跟訓練集沒有交集,因此這個準確率是可靠的。那麼為啥還需要乙個測試集呢?

這就需要區分一下模型的各種引數了。事實上,對於乙個模型來說,其引數可以分為普通引數超引數。在不引入強化學習的前提下,那麼普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。另外,還有超引數的概念,比如網路層數、網路節點數、迭代次數、學習率等等,這些引數不在梯度下降的更新範圍內。儘管現在已經有一些演算法可以用來搜尋模型的超引數,但多數情況下我們還是自己人工根據驗證集來調。

那也就是說,從狹義來講,驗證集沒有參與梯度下降的過程,也就是說是沒有經過訓練的;但從廣義上來看,驗證集卻參與了乙個「人工調參」的過程,我們根據驗證集的結果調節了迭代數、調節了學習率等等,使得結果在驗證集上最優。因此,我們也可以認為,驗證集也參與了訓練。

測試集(test set)

通過訓練集和驗證集得出最優模型後,使用測試集進行模型**。用來衡量該最優模型的效能和分類能力。即可以把測試集當做從來不存在的資料集,當已經確定模型引數後,使用測試集進行模型效能評價。

那麼就很明顯了,我們還需要乙個完全沒有經過訓練的集合,那就是測試集,我們既不用測試集梯度下降,也不用它來控制超引數,只是在模型最終訓練完成後,用來測試一下最後準確率。

聰明的讀者就會模擬到,其實這是乙個無休止的過程。如果測試集準確率很差,那麼我們還是會去調整模型的各種引數,這時候又可以認為測試集也參與訓練了。好吧,我們可能還需要乙個「測試測試集」,也許還需要「測試測試測試集」...

訓練集 驗證集 測試集的作用和區別

簡單說,訓練集就是用來訓練模型用的,驗證集為了驗證模型的效果,測試集用來最終評測。所以基於這個,那訓練資料的時候,就不要使用驗證集和測試集的相關資訊,包括統計均值方差特徵等,但是驗證集可以在模型訓練過程中進行模型調參,就是手動調一些外部引數,像是epoch learning rate dropout...

訓練集 驗證集 測試集的作用

在機器學習或者深度學習中,我們需要了解我們的模型包括什麼 1 模型設計 模型架構 包括模型有多少層,每層有多少個神經元 可訓練權重引數 模型內建引數 2 模型訓練的引數 模型外接引數,如學習率 優化策略等等 訓練集 train set 用於模型擬合的資料樣本。在訓練過程中對訓練誤差進行梯度下降,進行...

訓練集 驗證集 測試集的關係與作用

通常,在訓練有監督的機器學習模型的時候,會將資料劃分為訓練集 驗證集合測試集,劃分比例一般為0.6 0.2 0.2。對原始資料進行三個集合的劃分,是為了能夠選出效果 可以理解為準確率 最好的 泛化能力最佳的模型。訓練集 training set 作用是用來擬合模型,通過設定分類器的引數,訓練分類模型...