1. 程式人生 > >【機器學習】k-fold cross validation(k-摺疊交叉驗證)

【機器學習】k-fold cross validation(k-摺疊交叉驗證)

交叉驗證的目的:在實際訓練中,模型通常對訓練資料好,但是對訓練資料之外的資料擬合程度差。用於評價模型的泛化能力,從而進行模型選擇

交叉驗證的基本思想:把在某種意義下將原始資料(dataset)進行分組,一部分做為訓練集(train set),另一部分做為驗證集(validation set or test set),首先用訓練集對模型進行訓練,再利用驗證集來測試模型的泛化誤差。另外,現實中資料總是有限的,為了對資料形成重用,從而提出k-摺疊交叉驗證。

對於個分類或迴歸問題,假設可選的模型為clip_image008k-摺疊交叉驗證就是將訓練集的1/k作為測試集,每個模型訓練k次,測試k次,錯誤率為k次的平均,最終選擇平均率最小的模型Mi。

1、 將全部訓練集S分成k個不相交的子集,假設S中的訓練樣例個數為m,那麼每一個子集有m/k個訓練樣例,相應的子集稱作{clip_image024}。

2、 每次從模型集合M中拿出來一個clip_image010[3],然後在訓練子集中選擇出k-1個

{clip_image026}(也就是每次只留下一個clip_image028),使用這k-1個子集訓練clip_image010[4]後,得到假設函式clip_image030。最後使用剩下的一份clip_image028[1]作測試,得到經驗錯誤clip_image032

3、 由於我們每次留下一個clip_image028[2](j從1到k),因此會得到k個經驗錯誤,那麼對於一個clip_image010[5],它的經驗錯誤是這k個經驗錯誤的平均。

4、 選出平均經驗錯誤率最小的clip_image010[6],然後使用全部的S再做一次訓練,得到最後的clip_image012[4]