在構建模型前,需要將樣本集划分為訓練集、驗證集、測試集,按什么比例划分比較合適呢?
在機器學習發展的小數據量時代,常見做法是將所有數據三七分,就是人們常說的70%驗證集,30%測試集,如果沒有明確設置驗證集,也可以按照60%訓練,20%驗證和20%測試集來划分。這是前幾年機器學習領域普遍認可的最好的實踐方法。如果只有100條,1000條或者1萬條數據,那么上述比例划分是非常合理的。
但是在大數據時代,我們現在的數據量可能是百萬級別,那么驗證集和測試集占數據總量的比例會趨向於變得更小。因為驗證集的目的就是驗證不同的算法,檢驗哪種算法更有效。因此,驗證集要足夠大才能評估,比如2個甚至10個不同算法,並迅速判斷出哪種算法更有效。我們可能不需要拿出20%的數據作為驗證集。比如我們有100萬條數據,那么取1萬條數據便足以進行評估,找出其中表現最好的1-2種算法。
同樣地,根據最終選擇的分類器,測試集的主要目的是正確評估分類器的性能,所以,如果擁有百萬數據,我們只需要1000條數據,便足以評估單個分類器,並且准確評估該分類器的性能。假設我們有100萬條數據,其中1萬條作為驗證集,1萬條作為測試集,100萬里取1萬,比例是1%,即:訓練集占98%,驗證集和測試集各占1%。對於數據量過百萬的應用,訓練集可以占到99.5%,驗證和測試集各占0.25%,或者驗證集占0.4%,測試集占0.1%。
總結一下,在機器學習中,我們通常將樣本分成訓練集,驗證集和測試集三部分,數據集規模相對較小,適用傳統的划分比例,數據集規模較大的,驗證集和測試集要小於數據總量的20%或10%。
