交叉驗證

針對經驗風險最小化算法的過擬合的問題,給出交叉驗證的方法,這個方法在作分類問題時很經常使用:算法

一:簡單的交叉驗證的步驟以下:函數

一、 從所有的訓練數據 S中隨機選擇 中隨機選擇 s的樣例做爲訓練集 train,剩餘的 做爲測試集 做爲測試集 test。測試

二、 經過對測試集訓練 ,獲得假設函數或者模型 。
三、 在測試集對每個樣本根據假設函數或者模型,獲得訓練集的類標,求出分類正確率。.net

4,選擇具備最大分類率的模型或者假設。get

這種方法稱爲 hold -out cross validation 或者稱爲簡單交叉驗證。因爲測試集和訓練集是分開的,就避免了過擬合的現象io

二:k折交叉驗證 k-fold cross validationast

一、 將所有訓練集 S分紅 k個不相交的子集,假設 S中的訓練樣例個數爲 m,那麼每個子 集有 m/k 個訓練樣例,,相應的子集稱做 {s1,s2,…,sk}。
二、每次從分好的子集中裏面,拿出一個做爲測試集,其它k-1個做爲訓練集test

三、根據訓練訓練出模型或者假設函數。
四、 把這個模型放到測試集上,獲得分類率。方法

五、計算k次求得的分類率的平均值,做爲該模型或者假設函數的真實分類率。經驗

這個方法充分利用了全部樣本。但計算比較繁瑣,須要訓練k次,測試k次。

 

三:留一法  leave-one-out cross validation

留一法就是每次只留下一個樣本作測試集,其它樣本作訓練集,若是有k個樣本,則須要訓練k次,測試k次。

留一發計算最繁瑣,但樣本利用率最高。適合於小樣本的狀況。

相關文章
相關標籤/搜索