交叉驗證

交叉驗證

交叉驗證(Cross-validation)主要用於建模套用中,例如PCR 、PLS 回歸建模中。在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,並求這小部分樣本的預報誤差,記錄它們的平方加和。

基本介紹

  • 中文名:交叉驗證
  • 外文名:Cross validation
  • 實質:建模套用中
  • 特點:PCR 、PLS 回歸建模中
思想介紹,定義,基本思想,目的,常見形式,

思想介紹

在使用訓練集對參數進行訓練的時候,經常會發現人們通常會將一整個訓練集分為三個部分(比如mnist手寫訓練集)。一般分為:訓練集(train_set),評估集(valid_set),測試集(test_set)這三個部分。這其實是為了保證訓練效果而特意設定的。其中測試集很好理解,其實就是完全不參與訓練的數據,僅僅用來觀測測試效果的數據。而訓練集和評估集則牽涉到下面的知識了。
因為在實際的訓練中,訓練的結果對於訓練集的擬合程度通常還是挺好的(初始條件敏感),但是對於訓練集之外的數據的擬合程度通常就不那么令人滿意了。因此我們通常並不會把所有的數據集都拿來訓練,而是分出一部分來(這一部分不參加訓練)對訓練集生成的參數進行測試,相對客觀的判斷這些參數對訓練集之外的數據的符合程度。這種思想就稱為交叉驗證(Cross Validation)。

定義

交叉驗證(Cross Validation),有的時候也稱作循環估計(Rotation Estimation),是一種統計學上將數據樣本切割成較小子集的實用方法,該理論是由Seymour Geisser提出的。
在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,並求這小部分樣本的預報誤差,記錄它們的平方加和。這個過程一直進行,直到所有的樣本都被預報了一次而且僅被預報一次。把每個樣本的預報誤差平方加和,稱為PRESS(predicted Error Sum of Squares)。

基本思想

交叉驗證的基本思想是把在某種意義下將原始數據(dataset)進行分組,一部分做為訓練集(train set),另一部分做為驗證集(validation set or test set),首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來做為評價分類器的性能指標。

目的

用交叉驗證的目的是為了得到可靠穩定的模型。在建立PCR 或PLS 模型時,一個很重要的因素是取多少個主成分的問題。用cross validation 校驗每個主成分下的PRESS值,選擇PRESS值小的主成分數。或PRESS值不再變小時的主成分數。
常用的精度測試方法主要是交叉驗證,例如10折交叉驗證(10-fold cross validation),將數據集分成十份,輪流將其中9份做訓練1份做驗證,10次的結果的均值作為對算法精度的估計,一般還需要進行多次10折交叉驗證求均值,例如:10次10折交叉驗證,以求更精確一點。
交叉驗證有時也稱為交叉比對,如:10折交叉比對。

常見形式

Holdout 驗證
常識來說,Holdout 驗證並非一種交叉驗證,因為數據並沒有交叉使用。 隨機從最初的樣本中選出部分,形成交叉驗證數據,而剩餘的就當做訓練數據。 一般來說,少於原本樣本三分之一的數據被選做驗證數據。
K-fold cross-validation
K折交叉驗證,初始採樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的數據,其他K-1個樣本用來訓練。交叉驗證重複K次,每個子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。這個方法的優勢在於,同時重複運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次,10折交叉驗證是最常用的。
留一驗證
正如名稱所建議, 留一驗證(LOOCV)意指只使用原本樣本中的一項來當做驗證資料, 而剩餘的則留下來當做訓練資料。 這個步驟一直持續到每個樣本都被當做一次驗證資料。 事實上,這等同於和K-fold 交叉驗證是一樣的,其中K為原本樣本個數。 在某些情況下是存在有效率的演算法,如使用kernel regression 和Tikhonov regularization。

相關詞條

熱門詞條

聯絡我們