交叉驗證(Cross-validation)主要用于建模應用中,例如PCR、PLS回歸建模中。在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,并求這小部分樣本的預報誤差,記錄它們的平方加和。這個過程一直進行,直到所有的樣本都被預報了一次而且僅被預報一次。把每個樣本的預報誤差平方加和,稱為PRESS(predictedErrorSumofSquares)。
基本思想
交叉驗證的基本思想是把在某種意義下將原始數據(dataset)進行分組,一部分做為訓練集(trainset),另一部分做為驗證集(validationsetortestset),首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來做為評價分類器的性能指標。
目的
用交叉驗證的目的是為了得到可靠穩定的模型。在建立PCR或PLS模型時,一個很重要的因素是取多少個主成分的問題。用crossvalidation校驗每個主成分下的PRESS值,選擇PRESS值小的主成分數?;騊RESS值不再變小時的主成分數。
常用的精度測試方法主要是交叉驗證,例如10折交叉驗證(10-foldcrossvalidation),將數據集分成十份,輪流將其中9份做訓練1份做驗證,10次的結果的均值作為對算法精度的估計,一般還需要進行多次10折交叉驗證求均值,例如:10次10折交叉驗證,以求更精確一點。
交叉驗證有時也稱為交叉比對,如:10折交叉比對。
常見的交叉驗證形式
簡單交叉驗證(Hold-OutCross-Validation)
常識來說,Holdout驗證并非一種交叉驗證,因為數據并沒有交叉使用。隨機從最初的樣本中選出部分,形成交叉驗證數據,而剩余的就當做訓練數據。一般來說,少于原本樣本三分之一的數據被選做驗證數據。
K-折交叉驗證(K-FoldCross-Validation)
K折交叉驗證,初始采樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的數據,其他K-1個樣本用來訓練。交叉驗證重復K次,每個子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。這個方法的優勢在于,同時重復運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次,10折交叉驗證是最常用的。
留一交叉驗證(Leave-One-OutCross-Validation,LOOCV)
正如名稱所建議,留一驗證(LOOCV)意指只使用原本樣本中的一項來當做驗證資料,而剩余的則留下來當做訓練資料。這個步驟一直持續到每個樣本都被當做一次驗證資料。事實上,這等同于K-fold交叉驗證是一樣的,其中K為原本樣本個數。在某些情況下是存在有效率的演算法,如使用kernelregression和Tikhonovregularization。
交叉驗證在建模應用中的重要性
模型選擇
在面對多種模型(如不同的機器學習算法或不同的參數設置)時,交叉驗證可以幫助我們選擇性能最好的模型。例如,在比較決策樹模型和支持向量機模型在一個分類任務中的表現時,通過交叉驗證可以公平地評估它們在未見過的數據上的準確率,從而確定更適合該任務的模型。
防止過擬合
通過在多個不同的訓練-驗證集劃分上評估模型,交叉驗證可以檢測模型是否過擬合。如果一個模型在訓練集上的性能不斷提高,但交叉驗證性能(在驗證集上的性能)沒有明顯提高甚至下降,那么很可能這個模型出現了過擬合。這樣就可以及時調整模型的復雜度(如減少決策樹的深度、增加正則化參數等),以提高模型的泛化能力。
評估模型穩定性
好的模型應該在不同的數據子集上都能有相對穩定的性能。交叉驗證可以幫助我們評估模型在不同數據劃分下的性能波動情況。例如,一個模型在不同輪次的交叉驗證中,準確率都在80%左右波動,而另一個模型的準確率在60%-90%之間大幅波動,那么第一個模型相對更穩定,更值得信賴。
參考資料 >
交叉驗證(Cross-validation)概述及常見交叉驗證方法.PLOB.2024-12-16
極限學習機的快速留一交叉驗證算法.中國知網.2024-12-16
交叉驗證(Cross-validation)概述及常見交叉驗證方法.愛科學.2024-12-16
深度盤點:詳細介紹機器學習中的7種交叉驗證方法.今日頭條.2024-12-16