本小節,細說 評估指標的交叉驗證。
?
三. 評估指標
3. 交叉驗證(cross validation)
? ? ?(1). 概念
? ? ? ?交叉驗證(cross validation, cv) 主要用于模型訓練或建模應用中,如分類預測、PCR、PLS 回歸建模等。在給定的樣本空間中,拿出大部分樣本的模型進行預測,并求這小部分樣本的預測誤差或預測精度,同時記錄它們的加和平均值。這個過程迭代 k
�
?次,即 k
�
?折交叉。其中,把每個樣本的預測誤差平凡加和,稱為 PRESS(Predicted Error Sum Of Squares)。
? ? ?(2). 目的
? ? ? ?①. 用交叉驗證的母的是為了得到可靠穩定的模型。在分類,建立 PC 或 PLS 模型時,一個很重要的因素是取多少個主成分的問題。用 cv 校驗每個主成分下的 PRESS 值,選擇 PRESS 值小的主成分數。或 PRESS 值不再變小時的主要分數。
? ? ? ?②. 常用的精度測試方法主要是交叉驗證,例如 10 折交叉驗證(10-fold cross validation, 10-cv),將數據分成 10 份,輪流將其中 9 份做訓練,1 份做驗證,10 次的結果的均值作為對算法精度的估計,一般還需要進行多次 10-cv 求均值,例如:10 次 10-cv,以求更精確一點。
? ? ? ?③. 交叉驗證有時也稱為交叉比對,如:10 折交叉比對。
? ? ?(3). 常見的交叉驗證方式
? ? ? ?①. Holdout 驗證(留出法驗證)
? ? ? ? a. 方法:
? ? ? ? ? ?將原始數據隨機分為兩組,一組作為訓練集,一組作為驗證集(比如:80% 為訓練集,20% 為驗證集)。利用訓練集訓練分類器,然后利用驗證集驗證模型,記錄最后的分類準確率為此 Holdout Method 下分類器的性能指標。
? ? ? ? ? ?一般來說,Holdout 驗證并非一種交叉驗證,因為數據并沒有交叉使用。隨機從最初的樣本中選出部分,形成交叉驗證數據,而剩余的就當做訓練數據。一般來說,少于原來樣本 13
1
3
?的數據被選做驗證數據(如:20% 為驗證數據)
? ? ? ? b. 優點:
? ? ? ? ? ?處理簡單,只需要隨機把原數據分為兩組即可。
? ? ? ? c. 缺點:
? ? ? ? ? ?嚴格意義來說 Holdout Method 并不算是 cv,因為這種方法沒有達到交叉的思想,由于是隨機的將原始數據分組,所以最后驗證集分類準確率的高低與原始數據的分組有很大關系,所以這種方法得到的結果其實并不具有說服性(主要原因是,訓練集樣本數太少,通常不足以代表母體樣本的分布,導致 val 階段辨識容易出現明顯落差)。
? ? ? ?②. k 折交叉驗證 (k-fold cross validation, k-cv)
? ? ? ? a. 方法
? ? ? ? ? ?k 折交叉驗證(k-cv),初始采樣分割成 k 個子樣本,一個單獨的子樣本被保留作為驗證模型數據,其 k - 1 個樣本用來訓練。交叉驗證重復 k 次,每個子樣本驗證一次,平均 k 次的結果或者使用其他結合方式,最終得到一個單一估測。這個方法的優勢在于,同時重復運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次,10 折交叉驗證(10-cv)是最常用的。特殊的,當 k = 2 時,為 2-cv。
? ? ? ? b. 優點
? ? ? ? ? ?k-cv 可以有效地避免過擬合以及以及欠擬合狀態的發生,最后得到的結果也比較具有說服性。
? ? ? ? c. 缺點
? ? ? ? ? ?k 值選取上。
? ? ? ?③. 留一驗證(Leave One Out Validation, LOO-CV)
? ? ? ? a. 方法
? ? ? ? ? ?留一驗證(LOO-CV),意指只使用原樣本中的一項來做驗證資料,而剩余的則留下來當做訓練資料。這個步驟一直持續到每個樣本都被當做一次驗證資料。事實上,這等同于 k-cv 是一樣的,其中 k 為原樣本個數。在某些情況下是存在有效率的演算法。如使用 Kernel Regression 和 Tikhonov Regularization。
? ? ? ? b. 優點
? ? ? ? ?(a). 每一回合中幾乎所有的樣本皆用于訓練模型,因此最接近原始樣本的分布,這樣評估所得的結果比較可靠。
? ? ? ? ?(b). 實驗過程中沒有隨機因素會影響實驗數據,確保實驗過程是可以被復制的。
? ? ? ? c. 缺點
? ? ? ? ? ?計算成本高,因為需要建立的模型數量與原始數據樣本數量相同,當原始數據樣本數相當多時,LOO-CV 在實際操作上便有困難,幾乎就是實現不了,除非每次訓練分類器得到模型的速度很快,或是可以用并行化計算減少計算所需要的時間。
? ? ?(4). 深入
? ? ? ?①. 使用交叉驗證方法的目的主要有 3 個:
? ? ? ? a. 從有限的學習數據中獲取盡可能多的有效信息
? ? ? ? b. 交叉驗證從多個方向開始學習樣本,可有效的避免陷入局部最小值
? ? ? ? c. 可以在一定程度上避免過擬合問題
? ? ? ?②. 采用交叉驗證方法時需要將學習數據樣本劃分為兩部分:訓練數據樣本 和 驗證數據樣本。并且為了得到更好的學習效果,無論訓練樣本還是驗證樣本,都要盡可能參與學習。一般選取 10 折交叉驗證即可達到較好的學習效果。
?