在處理機器學習任務時,我們都需要使用數據,當然,有時候數據集可以很大,有時候數據集數量不是很理想,那么如何針對這些數據得出更加有效的模型呢?
大型數據集

Idea #1: 當我們拿到數據集后,如果將所有數據進行訓練的話
這樣會導致模型見過所有的數據,如果再用這些數據進行測試的話,效果會非常好,但我們知道,這其實是一種過擬合現象,我們的模型在當前數據集中,永遠表現很好。
Idea #2: 當我們拿到數據集后,將數據集划分成訓練集(train set)和測試集(test set)的話
這樣我們使用訓練集訓練模型,使用測試集來找到最佳超參數時,其實,這個test不能代表在全新的未見過的數據上的表現,這樣會導致,我們選擇的超參數,可能只是在這個測試集上表現良好。
(最佳方案!!)Idea #3: 當我們拿到數據集后,將數據集划分成訓練集(train set)、驗證集(validation set)和測試集(test set)的話
我們可以使用訓練集來訓練模型,並使用驗證集來選擇合適的超參數,最后使用全新的測試集來衡量模型的泛化能力。
數據集不是很充分
當我們沒有大量數據時,沒辦法做上面那種任性的操作,我們可以嘗試一種新的辦法。

交叉驗證,這個時候就登場了,它其實和上面的思想差不多,就是我們單獨把測試集先抽出來,然后把剩余的部分切分,循環當訓練集和驗證集,上圖中黃色的就是驗證集,綠色的是訓練集。
