訓練集
這個是最好理解的,用來訓練模型內參數的數據集,Classfier直接根據訓練集來調整自身獲得更好的分類效果
驗證集
用于在訓練過程中檢驗模型的狀態,收斂情況。驗證集通常用于調整超參數,根據幾組模型驗證集上的表現決定哪組超參數擁有最好的性能。
同時驗證集在訓練過程中還可以用來監控模型是否發生過擬合,一般來說驗證集表現穩定后,若繼續訓練,訓練集表現還會繼續上升,但是驗證集會出現不升反降的情況,這樣一般就發生了過擬合。所以驗證集也用來判斷何時停止訓練
測試集
測試集用來評價模型泛化能力,即之前模型使用驗證集確定了超參數,使用訓練集調整了參數,最后使用一個從沒有見過的數據集來判斷這個模型是否Work。
三者區別
形象上來說訓練集就像是學生的課本,學生根據課本里的內容來掌握知識,驗證集就像是作業,通過作業可以知道不同學生學習情況、進步的速度快慢,而最終的測試集就像是考試,考的題是平常都沒有見過,考察學生舉一反三的能力。
為什么要測試集
訓練集直接參與了模型調慘的過程,顯然不能用來反映模型真實的能力,這樣一些對課本死記硬背的學生(過擬合)將會擁有最好的成績,顯然不對。同理,由于驗證集參與了人工調參(超參數)的過程,也不能用來最終評判一個模型,就像刷題庫的學生也不能算是學習好的學生是吧。所以要通過最終的考試(測試集)來考察一個學(模)生(型)真正的能力。