機器學習 訓練集 驗證集 測試集

2021-08-22 13:45:02 字數 937 閱讀 8806

為什麼要將資料集分為訓練集、驗證集、測試集三部分?

對於很多機器學習的初學者來說,這個問題常常令人很迷惑,特別是對於驗證集和測試集的區別更讓人摸不到頭腦。

下面,我談一下這三個資料集的作用,及必要性:

訓練集:顯然,每個模型都需要訓練集,訓練集的作用很明顯,就是直接參與模型的訓練過程。

測試集:測試集完全不參與訓練,就是說模型的產生過程和測試集是完全沒有關係的。之所以要求測試集和模型的產生過程完全沒有關係,是因為測試集的作用就是驗證模型的泛化能力,只有測試集完全不參與模型的產生過程,測試集才能夠有效的衡量模型的泛化能力。

驗證集:為什麼需要驗證集呢?很多時候我們通過訓練集訓練出乙個模型,我們想知道該模型的泛化能力怎麼樣呢?同時我們想根據該模型的泛化能力再反過來調節模型的引數(例如:調節超引數,或者重新訓練模型等)。因此,我們需要乙個沒有直接參與模型訓練過程的資料集來評估模型的泛化能力,但是顯然該資料集不能是測試集,因為測試集要求完全不參與模型的產生過程,但是我們需要的這個資料集顯然參與了模型的產生過程(根據模型在該資料集上的效能表現反過去調整模型的相應引數)。所以驗證集就應運而生。

我們常最迷惑的地方就是驗證集的作用,總結來說,驗證集不直接參與訓練過程,但是其參與了模型的產生過程。它是模型調優過程中的關鍵資料集。

在我看來,任何乙個規範的模型訓練過程,都需要這三個資料集,因為任何模型都需要訓練集;訓練出來的模型都需要乙個調優的過程(通常不可能你一次訓練出的模型就一定有很好的效能表現),因此都需要驗證集;在驗證集上模型調優結束之後,都需要乙個測試集來最終檢驗模型的效能。(記住,測試集不用於模型的調優,它僅僅是測試最終模型的效能而已,即不能根據測試集的表現再返回去修改模型引數,因為一旦你這麼做了就很可能會過擬合測試集,那麼測試集也就失去了它存在的意義了)。

在學習過程中參考了一篇**:該**對於測試集的作用有著深刻的見解。

如上是我個人在學習過程中的認識和總結,我認為肯定是有不妥和偏差之處,希望多多批評指教!

機器學習的訓練集 驗證集和測試集

在機器學習中,最佳的資料分類情況是把資料集分為三部分,分別為 訓練集 train set 驗證集 validation set 和測試集 test set 訓練集很好理解就是訓練我們的模型。那麼驗證集和測試集有什麼作用?首先需要了解的是在乙個機器學習模型中,模型的引數分為普通引數和超引數,普通引數比...

機器學習中的訓練集 驗證集 測試集

訓練集用來訓練模型,即確定模型的權重和偏置這些引數,通常我們稱這些引數為學習引數。而驗證集用於模型的選擇,更具體地來說,驗證集並不參與學習引數的確定,也就是驗證集並沒有參與梯度下降的過程。驗證集只是為了選擇超引數,比如網路層數 網路節點數 迭代次數 學習率這些都叫超引數。比如在k nn演算法中,k值...

機器學習中的訓練集 驗證集 測試集

用來訓練分類器中的引數,擬合模型。會使用超引數的不同取值,擬合出多個分類器,後續再結合驗證集調整模型的超引數。當通過訓練集訓練出多個模型後,為了能找出效果最佳的模型,使用各個模型對驗證集資料進行 並記錄模型準確率。選出效果最佳的模型所對應的超引數,即用來調整模型超參。通過訓練集和驗證集得出最優模型後...