針對經驗風險最小化算法的過擬合的問題,給出交叉驗證的方法,這個方法在做分類問題時很常用:
一:簡單的交叉驗證的步驟如下:
1、 從全部的訓練數據 S中隨機選擇 中隨機選擇 s的樣例作為訓練集 train,剩余的 作為測試集 作為測試集 test。
2、 通過對測試集訓練 ,得到假設函數或者模型 。3、 在測試集對每一個樣本根據假設函數或者模型,得到訓練集的類標,求出分類正確率。
4,選擇具有最大分類率的模型或者假設。
這種方法稱為 hold -out cross validation 或者稱為簡單交叉驗證。由於測試集和訓練集是分開的,就避免了過擬合的現象
二:k折交叉驗證 k-fold cross validation
1、 將全部訓練集 S分成 k個不相交的子集,假設 S中的訓練樣例個數為 m,那么每一個子 集有 m/k 個訓練樣例,,相應的子集稱作 {s1,s2,…,sk}。
2、每次從分好的子集中里面,拿出一個作為測試集,其它k-1個作為訓練集
3、根據訓練訓練出模型或者假設函數。
4、 把這個模型放到測試集上,得到分類率。
5、計算k次求得的分類率的平均值,作為該模型或者假設函數的真實分類率。
這個方法充分利用了所有樣本。但計算比較繁瑣,需要訓練k次,測試k次。
三:留一法 leave-one-out cross validation
留一法就是每次只留下一個樣本做測試集,其它樣本做訓練集,如果有k個樣本,則需要訓練k次,測試k次。
留一發計算最繁瑣,但樣本利用率最高。適合於小樣本的情況。