一. 模型選擇
通常我們在機器學習的過程中希望能夠通過實驗測試來對學習器的泛化誤差進行評估,就需要測試集來作為學習結果的依據。那麼給了一個資料集D,如何劃分訓練集和測試集呢?
1. 留出法(hold-out)
直接将資料集D劃分為兩個互斥集合S和T,即
, 然後在S上訓練網模型後,用T 來做測試。
2. 交叉驗證法(cross validation)
現将資料集D劃分為k個大小相似的互斥子集,即
.每個子集
盡可能保持資料分布的一緻性,即從D中通過分層采樣得到。然後每次利用k-1個資料集做訓練,餘下的子集做測試。這樣就可以獲得k組訓練集和測試集,進而得到k次測試結果,最後傳回k次測試的均值。k最常用的取值為10.
如果資料集D中包含m個樣本,若令
, 則交叉驗證變為留一法(leave-one-out)
留一法優點:1.不受随機樣本劃分的影響。
2.由于訓練集S和資料集D隻差了一個集合,是以訓練模型與原始模型很相似
缺陷: 對于大資料集的情形,訓練m個模型的訓練開銷很難忍受的,而且這裡還未考慮算法調參的問題。
3. 自助法
以自助采樣法為基礎,給定包含m個樣本的資料集
,采樣的資料集
, 每次随機從D中挑選一個樣本送入
,然後再把這個樣本複制到原始資料D中,確定這個樣本在下次采樣中仍可以采集到。這樣重複m次,得到了包含m個樣本的資料集
。這樣可能會使得D中的一部分樣本會在
中重複出現,另一部分不出現。做一個估計
也就是說通過自助采樣,原始資料集D越有36.8%的樣本未出現在
中。我們用
做訓練集,用
作為測試集。這樣的測試稱為“包外估計”(out-of-bag estimate)
自助法對于資料集較小、難以劃分訓練/測試集的樣本有效。由于會産生多種不同的訓練集,是以也對內建學習等方法有很大的好處。但是由于改變了原始資料集的分布,會帶來估計偏差。
是以無論選用哪種模型選擇的方法,最終還是需要一些參數設定,牽扯到調參的問題,隻有參數調整準确,才能得到最終的模型。這時候需要對訓練資料做一個劃分,一部分資料作為訓練資料,一部分資料作為驗證集,基于驗證集上的性能來進行調參和确定模型。