交叉驗證來評價模型的效能
構建學習模型之後,我們需要對模型的效能進行評估。如果一個模型過於簡單,就會導致欠擬合(高偏差)問題,如果模型過於複雜,就會導致過擬合(高方差)問題。下面介紹holdout交叉驗證和k折交叉驗證
一、holdout交叉驗證
holdout交叉驗證(holdout cross-validation)是評估機器學習模型泛化能力一種常用的方法。holdout方法是將資料集劃分為訓練集和測試集,訓練集用於訓練模型,測試集用於評估模型的效能。
但是,如果我們在模型選中過程中不斷的重複使用相同的測試資料,容易導致模型的過擬合。
使用holdout交叉驗證時,為了避免過擬合,資料集可分為三部分:訓練集、測試集和驗證集。訓練集用於不同模型的擬合,驗證集作為模型效能的評估和選擇標準,測試集是當模型的引數優化完成之後,再用來評估模型的泛化誤差。
holdout方法的缺點:模型效能的評估對於訓練集和驗證集的劃分是敏感的,評價的結果會隨著樣本的不同而發生變化
二、k折交叉驗證
k折交叉驗證(k-fold cross-validation),不重複的將訓練集劃分為k個,其中k-1個用於模型的訓練,剩下的一個用於測試。重複k次,可以得到k個模型及對應模型的效能評價。
通過這些獨立且不同的資料子集來獲取評價結果,最後取這些結果的平均效能,與holdout方法相比,這樣的結果對於資料集的劃分敏感度相對較低。
通過k折交叉驗證來驗證模型引數的調優,從而找到模型泛化效能最優的引數,找到滿意的引數之後,就使用整個訓練集作為訓練資料來訓練模型,然後通過測試集來評價模型的效能。
在k折交叉驗證中,每一個樣本都會被劃分為訓練集或者測試集(驗證集)的機會,與holdout方法相比,這樣模型可以獲得一個較小的方差。
在k則交叉驗證中,常用的k值是10,即訓練資料被劃分為10塊,其中9塊用於訓練,1塊用於測試評價模型的效能,每一次評價都能獲得一個評價指標Ei(分類的準確率或者誤差),最後我們選取模型平均指標的平均值。
當訓練資料相對較少的時候,我們可以增加k的大小,使得每次迭代中將會有更多的資料可以用於訓練,這樣可以獲得較小的偏差。
在增加k值的同時,也會導致交叉驗證的演算法執行時間較長,而且由於訓練塊之間高度相似,從而導致評價結果的方差較高。
如果訓練資料較大的時候,我們可以減少k值,這樣不僅能夠較少交叉驗證需要消耗的時間還可以降低模型在不同資料上的重複擬合,從而獲得一個較準確的模型評估結果。