1. 程式人生 > >【機器學習】交叉驗證,K折交叉驗證的偏差和方差分析

【機器學習】交叉驗證,K折交叉驗證的偏差和方差分析

交叉驗證

部分參考:模型選擇中的交叉驗證方法綜述,山西大學,範永東(這是一篇碩士論文,原文內容有點囉嗦,存在一些錯誤。本文對其交叉驗證部分校對整理)

交叉驗證是一種通過估計模型的泛化誤差,從而進行模型選擇的方法。沒有任何假定前提,具有應用的普遍性,操作簡便, 是一種行之有效的模型選擇方法。

1. 交叉驗證的產生

人們發現用同一資料集,既進行訓練,又進行模型誤差估計,對誤差估計的很不準確,這就是所說的模型誤差估計的樂觀性。為了克服這個問題,提出了交叉驗證。基本思想是將資料分為兩部分,一部分資料用來模型的訓練,稱為訓練集;另外一部分用於測試模型的誤差,稱為驗證集。由於兩部分資料不同,估計得到的泛化誤差更接近真實的模型表現。資料量足夠的情況下,可以很好的估計真實的泛化誤差。但是實際中,往往只有有限的資料可用,需要對資料進行重用,從而對資料進行多次切分,得到好的估計。

2. 交叉驗證方法

  • 留一交叉驗證(leave-one-out):每次從個數為N的樣本集中,取出一個樣本作為驗證集,剩下的N-1個作為訓練集,重複進行N次。最後平均N個結果作為泛化誤差估計。
  • 留P交叉驗證(leave-P-out):與留一類似,但是每次留P個樣本。每次從個數為N的樣本集中,取出P個樣本作為驗證集,剩下的N-P個作為訓練集,重複進行CPN次。最後平均N個結果作為泛化誤差估計。

以上兩種方法基於資料完全切分,重複次數多,計算量大。因此提出幾種基於資料部分切分的方法減輕計算負擔。
- K折交叉驗證:把資料分成K份,每次拿出一份作為驗證集,剩下k-1份作為訓練集,重複K次。最後平均K次的結果,作為誤差評估的結果。與前兩種方法對比,只需要計算k次,大大減小演算法複雜度,被廣泛應用。

3.模型選擇方法的評價

衡量一個模型評估方法的好壞,往往從偏差和方差兩方面進行。

3.1偏差

交叉驗證只用了一部分資料用於模型訓練,相對於足夠多的資料進行訓練的方法來說,模型訓練的不充分,導致誤差估計產生偏差。

相對來說,留一交叉驗證,每次只留下一個作為驗證集,其餘資料進行訓練,產生泛化誤差估計結果相對 真值偏差較小。很多文獻表明留一交叉驗證在迴歸下的泛化誤差估計是漸進無偏的。

留P交叉驗證,取決於P的大小,P較小時,等同於留一交叉驗證的情況。P較大,會產生較大的偏差,不可忽略。

K折交叉驗證,同樣取決於K的大小。K較大時,類似留一交叉驗證;K較小時,會產生不可忽略的偏差。

訓練資料越小,偏差越大。當偏差無法忽略時,需要對偏差進行糾正。

3.2方差

對於一個模型,訓練資料固定後,不同的驗證集得到的泛化誤差評估結果的波動,稱之為誤差評估的方差。

影響方差變化的因素,主要有資料的切分方法,模型的穩定性等。

訓練資料固定的情況下,驗證集中樣本數量越多,方差越小
模型的穩定性是指模型對於資料微小變化的敏感程度。

4.針對K折交叉驗證的k的選擇,及偏差和方差分析

對於k的選擇,實踐中一般取k =10。這裡有一種情況,k = N,(N為訓練樣本數量)。在這種情況下,k折交叉驗證也稱為留一交叉驗證(leave-one-out cross validation)。由於在留一交叉驗證中,每一次訓練模型的樣本幾乎是一樣的,這樣就會造成估計的偏差很小但方差很大的情況出現,另外,需要呼叫N次學習演算法,這在N很大的時候,對於計算量也是不小的開銷。

另一方面,如果取k = 10,那麼交叉驗證的方差會降低,但是偏差又會成為問題,這取決於訓練樣本的數量。當訓練樣本較小時,交叉驗證很容易有較高的偏差,但是隨著訓練樣本的增加,這種情況會得到改善。