1. 程式人生 > >機器學習 交叉驗證

機器學習 交叉驗證

首先,要明確交叉驗證是什麼?有一點很明確,交叉驗證需要將資料集分為訓練集和驗證集(或者稱測試集),在訓練集上對模型訓練引數,在驗證集上看訓練出的模型的好壞。當資料比較少的時候,驗證集上的泛化誤差並不可靠,所以不能表明一個模型比另一個模型要好。交叉驗證通過劃分資料,確保效能指標是所有資料給出的。 
交叉驗證分為三種: 
- held-out: 
最簡單,將資料集分成兩部分,一部分作為訓練集,一部分作為驗證集,由於分法不同,驗證集上的結果也會有差異。本質上不能稱為交叉驗證,因為沒有涉及資料的交叉使用,只劃分了一次。 
- k-fold cross validation 
將資料集分為k份,總共訓練k次,每次以k-1份作為訓練集,1份作為驗證集,得到驗證集上的效能,將k次結果平均,作為模型的效能指標。 
- leave-one-out cross validation 
每次留一個樣本作為驗證集,剩下的作為訓練集,這樣需要訓練N(樣本數)次,將驗證集上的所有效能做個平均作為模型的評價指標。

交叉驗證可以用來選擇超參。對一個超參確定不同的取值,對每種取值進行交叉驗證,即在進行k次訓練和測試,得到k個性能指標,可以求出這k個性能指標的均值和方差作為此超參值的效能。