1. 程式人生 > >幾種交叉驗證方法介紹及對比

幾種交叉驗證方法介紹及對比

交叉驗證

交叉驗證是一種用來評價一個訓練出的模型是否可以推廣到另一個數據結構相同的資料集上的方法。主要用於PCR 、PLS 迴歸建模等建模應用中。

交叉驗證有時也稱為交叉比對,如:10折交叉比對。主要用於估計一個預測模型在實際資料應用中的準確度。它是一種統計學上將資料樣本切割成較小子集的實用方法。首先在一個子集上做訓練, 而其它子集則用來做後續對此分析的確認及驗證。

一個交叉驗證將樣本資料集分成兩個互補的子集,一個子集用於訓練分類器或模型,被稱為訓練集(training set);另一個子集用於驗證訓練出的分類器或模型是否有效,被稱為測試集(testing set)。測試結果作為分類器或模型的效能指標。而我們的目的是得到高度預測精確度和低的預測誤差。為了保證交叉驗證結果的穩定性,對一個樣本資料集需要多次不同的劃分,得到不同的互補子集,進行多次交叉驗證。取多次驗證的平均值作為驗證結果。

幾種交叉驗證方法

1、隨機子抽樣驗證(Hold-Out Method)
介紹:常識來說,Hold-Out 驗證並非一種交叉驗證,因為資料並沒有交叉使用。該方法將原始資料隨機分為兩組,一組做為訓練集,一組做為驗證集,利用訓練集訓練分類器,然後利用驗證集驗證模型,記錄最後的分類準確率為分類器的效能指標。相對K-CV又被稱為2-CV。

優點:處理簡單,只需隨機把原始資料分為兩組即可。

缺點:有些樣本可能從未做過訓練或測試資料,而有些樣本不止一次選為訓練或測試資料。另外訓練集樣本數太少,通常不足以代表母體樣本的分佈,導致 test 階段辨識率容易出現明顯落差。

2、K折交叉驗證(K-fold Cross Validation)


介紹:作為2-CV的演進,將原始資料分成K組(一般是均分),將每個子集資料分別做一次驗證集,其餘的K-1組子集資料作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數作為此K-CV下分類器的效能指標。K一般大於等於2,實際操作時一般從3開始取,只有在原始資料集合資料量小的時候才會嘗試取2。而K-CV 的實驗共需要建立 k 個models,並計算 k 次 test sets 的平均辨識率。在實作上,k 要夠大才能使各回合中的訓練樣本數夠多,一般而言 k=10 (作為一個經驗引數)算是相當足夠了。

優點: K-CV使得每一個樣本資料都既被用作訓練資料,也被用作測試資料,可以有效的避免過學習以及欠學習狀態的發生,最後得到的結果也比較具有說服性。

缺點: K值的選擇

3、留一法交叉驗證(Leave-One-Out Cross Validation)
介紹:如果設原始資料有N個樣本,那麼每個樣本單獨作為驗證集,其餘的N-1個樣本作為訓練集,所以LOO-CV會得到N個模型,用這N個模型最終的驗證集的分類準確率的平均數作為此下LOO-CV分類器的效能指標。

優點:
a.每一回閤中幾乎所有的樣本皆用於訓練模型,因此最接近原始樣本的分佈,這樣評估所得的結果比較可靠;
b. 實驗沒有隨機因素,整個過程是可重複的。

缺點: 計算成本高,當N非常大時,計算耗時。除非每次訓練分類器得到模型的速度很快,或是可以用並行化計算減少計算所需的時間。

在模式識別與機器學習的相關研究中,經常會將資料集分為訓練集與測試集這兩個子集,前者用以建立模式,後者則用來評估該模式對未知樣本進行預測時的精確度,即泛化能力(generalization ability)。

交叉驗證核心原則

Cross-validation 是為了有效的估測 generalization error 所設計的實驗方法,只有訓練集才可以用在模式的訓練過程中,測試集則必須在模式完成之後才被用來評估模式優劣的依據。

資料集分割原則

原始資料集分割為訓練集與測試集,必須遵守兩個要點:
1、訓練集中樣本數量必須夠多,一般至少大於總樣本數的 50%;
2、兩組子集必須從完整集合中均勻取樣。均勻取樣的目的是希望儘量減少訓練集/測試集與完整集合之間的偏差。一般的作法是隨機取樣,當樣本數量足夠時,便可達到均勻取樣的效果。