[深度概念]·K-Fold 交叉驗證 (Cross-Validation)的理解與應用 規則化和模型選擇(Regularization and model selection)

K-Fold 交叉驗證 (Cross-Validation)的理解與應用

個人網站html

1.K-Fold 交叉驗證概念

在機器學習建模過程當中,通行的作法一般是將數據分爲訓練集和測試集。測試集是與訓練獨立的數據,徹底不參與訓練,用於最終模型的評估。在訓練過程當中,常常會出現過擬合的問題,就是模型能夠很好的匹配訓練數據,卻不能很好在預測訓練集外的數據。若是此時就使用測試數據來調整模型參數,就至關於在訓練時已知部分測試數據的信息,會影響最終評估結果的準確性。一般的作法是在訓練數據再中分出一部分作爲驗證(Validation)數據,用來評估模型的訓練效果。算法

驗證數據取自訓練數據,但不參與訓練,這樣能夠相對客觀的評估模型對於訓練集以外數據的匹配程度。模型在驗證數據中的評估經常使用的是交叉驗證,又稱循環驗證。它將原始數據分紅K組(K-Fold),將每一個子集數據分別作一次驗證集,其他的K-1組子集數據做爲訓練集,這樣會獲得K個模型。這K個模型分別在驗證集中評估結果,最後的偏差MSE(Mean Squared Error)加和平均就獲得交叉驗證偏差。交叉驗證有效利用了有限的數據,而且評估結果可以儘量接近模型在測試集上的表現,能夠作爲模型優化的指標使用。網絡

2.舉例說明

下面舉一個具體的例子來講明K-Fold的過程,好比以下的數據app

[0.1, 0.2, 0.3, 0.4, 0.5, 0.6]

 

分爲K=3組後機器學習

Fold1: [0.5, 0.2]
Fold2: [0.1, 0.3]
Fold3: [0.4, 0.6]

 

交叉驗證的時會使用以下三個模型,分別進行訓練和測試,每一個測試集偏差MSE加和平均就獲得了交叉驗證的總評分函數

Model1: Trained on Fold1 + Fold2, Tested on Fold3
Model2: Trained on Fold2 + Fold3, Tested on Fold1
Model3: Trained on Fold1 + Fold3, Tested on Fold2

 

3.應用講解

 

一、 將所有訓練集S分紅k個不相交的子集,假設S中的訓練樣例個數爲m,那麼每個子集有m/k個訓練樣例,相應的子集稱做{clip_image024}。post

二、 每次從模型集合M中拿出來一個clip_image010[3],而後在訓練子集中選擇出k-1個性能

{clip_image026}(也就是每次只留下一個clip_image028),使用這k-1個子集訓練clip_image010[4]後,獲得假設函數clip_image030。最後使用剩下的一份clip_image028[1]做測試,獲得經驗錯誤clip_image032學習

三、 因爲咱們每次留下一個clip_image028[2](j從1到k),所以會獲得k個經驗錯誤,那麼對於一個clip_image010[5],它的經驗錯誤是這k個經驗錯誤的平均。測試

四、 選出平均經驗錯誤率最小的clip_image010[6],而後使用所有的S再作一次訓練,獲得最後的clip_image012[4]

 

核心內容:

經過上述1,2,3步進行模型性能的測試,取平均值做爲某個模型的性能指標

根據性能指標來挑選出最優模型,再進行上述第4步從新進行訓練,得到最終模型

疑問解答:

1.爲何不直接拆分訓練集與數據集,來驗證模型性能,反而採用屢次劃分的形式,豈不是太麻煩了?

咱們爲了防止在訓練過程當中,出現過擬合的問題,通行的作法一般是將數據分爲訓練集和測試集。測試集是與訓練獨立的數據,徹底不參與訓練,用於最終模型的評估。這樣的直接劃分會致使一個問題就是測試集不會參與訓練,這樣在小的數據集上會浪費掉這部分數據,沒法使模型達到最優(數據決定了程性能上限,模型與算法會逼近這個上限)。可是咱們又不能劃分測試集,由於須要驗證網絡泛化性能。採用K-Fold 屢次劃分的形式就能夠利用所有數據集。最後採用平均的方法合理表示模型性能。

2.爲何還要進行全部數據集從新訓練,是否太浪費時間?

咱們經過K-Fold 屢次劃分的形式進行訓練是爲了獲取某個模型的性能指標,單一K-Fold訓練的模型沒法表示整體性能,可是咱們能夠經過K-Fold訓練的訓練記錄下來較爲優異的超參數,而後再以最優模型最優參數進行從新訓練,將會取得更優結果。

3.什麼時候使用K-Fold

個人見解,數據總量較小時,其餘方法沒法繼續提高性能,能夠嘗試K-Fold。其餘狀況就不太建議了,例如數據量很大,就不必更多訓練數據,同時訓練成本也要擴大K倍(主要指的訓練時間)。

4.參考

1.K-Fold 交叉驗證 (Cross-Validation)

2.規則化和模型選擇(Regularization and model selection)

相關文章
相關標籤/搜索