機器學習中的交叉驗證(cross-validation)


  交叉驗證(Cross validation),交叉驗證用於防止模型過於復雜而引起的過擬合.有時亦稱循環估計, 是一種統計學上將數據樣本切割成較小子集的實用方法。於是可以先在一個子集上做分析, 而其它子集則用來做后續對此分析的確認及驗證。 一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集。交叉驗證是一種評估統計分析、機器學習算法對獨立於訓練數據的數據集的泛化能力(generalize)。

  交叉驗證一般要盡量滿足:

1)訓練集的比例要足夠多,一般大於一半
2)訓練集和測試集要均勻抽樣

交叉驗證主要分成以下幾類:
1)k-folder cross-validation:
k個子集,每個子集均做一次測試集,其余的作為訓練集。交叉驗證重復k次,每次選擇一個子集作為測試集,並將k次的平均交叉驗證識別正確率作為結果。
優點:所有的樣本都被作為了訓練集和測試集,每個樣本都被驗證一次。10-folder通常被使用。
2)K * 2 folder cross-validation
是k-folder cross-validation的一個變體,對每一個folder,都平均分成兩個集合s0,s1,我們先在集合s0訓練用s1測試,然后用s1訓練s0測試。
優點是:測試和訓練集都足夠大,每一個個樣本都被作為訓練集和測試集。一般使用k=10
3)least-one-out cross-validation(loocv)
假設dataset中有n個樣本,那LOOCV也就是n-CV,意思是每個樣本單獨作為一次測試集,剩余n-1個樣本則做為訓練集。
優點:
1)每一回合中幾乎所有的樣本皆用於訓練model,因此最接近母體樣本的分布,估測所得的generalization error比較可靠。
2)實驗過程中沒有隨機因素會影響實驗數據,確保實驗過程是可以被復制的。
但LOOCV的缺點則是計算成本高,為需要建立的models數量與總樣本數量相同,當總樣本數量相當多時,LOOCV在實作上便有困難,除非每次訓練model的速度很快,或是可以用平行化計算減少計算所需的時間。

——-十折交叉驗證:10-fold cross validation——-

英文名叫做10-fold cross-validation,用來測試算法准確性。是常用的測試方法。將數據集分成十分,輪流將其中9份作為訓練數據,1份作為測試數據,進行試驗。每次試驗都會得出相應的正確率(或差錯率)。10次的結果的正確率(或差錯率)的平均值作為對算法精度的估計,一般還需要進行多次10折交叉驗證(例如10次10折交叉驗證),再求其均值,作為對算法准確性的估計。

之所以選擇將數據集分為10份,是因為通過利用大量數據集、使用不同學習技術進行的大量試驗,表明10折是獲得最好誤差估計的恰當選擇,而且也有一些理論根據可以證明這一點。但這並非最終診斷,爭議仍然存在。而且似乎5折或者20折與10折所得出的結果也相差無幾。

舉例如下:

 

問題描述:
如何在一些模型中選擇一個最好的模型;避免數據浪費;
舉例說明
1 多項式回歸模型中  我們知道模型越復雜即m越高,擬合效果越好。但是未必是一個好的分類模型,因為模型過擬合了。那么如何確定m的值呢。
2 locally weighted regression中,τ值得確定。
3 SVM中參數C的確定。
交叉驗證就是很好的用於這些問題,這些模型中參數尋優的問題。

如何交叉驗證:
我這里主要介紹K交叉驗證
1 將數據集分成K份(網上有說是將數據集分成測試訓練兩部分,然后將訓練部分再分K份,我覺得這樣仍然有大部分數據沒用於模型訓練造成數據浪費。)
2 對於每一個模型(拿多項式回歸舉例, m=2為一個模型,m=3為一個模型。。。我們主要就是尋找最好的m)
  for j=1,2,...,k
      將除第j份的所有數據作為訓練集用於訓練,得到訓練參數。
      將訓練參數在第j份數據上進行測試,得到測試錯誤E(j);
3 經過第二步就得到了K個模型,和K個測試錯誤,將這K個錯誤求平均,就是該模型的estimated generalization error。
4 estimated generalization error最小的模型即為我們最優的模型,(例如發現m=3時平均錯誤最小)我們取這個模型再對所有數據進行訓練,得到一個模型參數即為所求。
這樣就避免了數據浪費,所有數據都有用於過訓練。
————————————————
版權聲明:本文為CSDN博主「會飛的小菜鳥」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lhx878619717/article/details/49079785


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM