交叉驗證 Cross validation

2022-02-12 18:53:44 字數 1525 閱讀 2582

**:坯子

交叉驗證(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折所得出的結果也相差無幾。

scikit learning 交叉驗證

import numpy as np from sklearn import datasets from sklearn.cross validation import train test split from sklearn.neighbors import kneighborsclassifi...

交叉驗證(cross validation)

交叉驗證是資料分析時模型選擇的方法之一,將資料集分為三份,分別為訓練集 training set 驗證集 valication set 和測試集 test set 分別功能為訓練模型,選擇模型和對學習方法的評估。其演算法的思想為重複的使用資料,使得模型的精度越來越高。交叉驗證的方法有以下三種 1.簡...

交叉驗證(Cross validation

交叉驗證 cross validation 交叉驗證用於防止模型過於複雜而引起的過擬合 作用 如何交叉驗證 我這裡主要介紹k交叉驗證 1 將資料集分成k份 2 對於每乙個模型 拿多項式回歸舉例,m 2為乙個模型,m 3為乙個模型。我們主要就是尋找最好的m for j 1,2,k 將除第j份的所有資料...