交叉驗證(Cross validation)總結

一個人的場域發表於2017-01-23

一  什麼是CV

       CV,通俗理解就是使用訓練資料和測試資料交叉的方式來驗證一個(或多個)模型的效能,以此判定演算法在資料上的大致效能。
       使用CV可以大致估算出模型的準確率;當模型中有超引數(hyperparameter)時,可以使用CV的方法選取這些超參

二 為什麼需要CV

       構建機器學習模型的一個重要環節是評價模型在新資料上的效能。模型過於簡單,容易出現欠擬合(high bias, underfitting);模型過於負責,
容易過擬合(high variance, overfitting). 為了達到一個合理的bias-variance平衡,需要對模型進行認真評估,如果達不到平衡,可能需要調參,
甚至更換模型。 CV可以增強模型的泛化能力(即在新資料上的表現)

三 兩種CV

     1. Hold-out validation

     使用 hold out (可以理解為保留,即保留部分資料做驗證)方法,我們將初始資料集(initial dataset)分為訓練集(training dataset)和測試集(test dataset)兩部分。訓練集用於模型的訓練,測試集進行效能的評價。然而,在實際機器學習的應用中,我們常常需要反覆除錯和比較不同的引數設定以提高模型在新資料集上的預測效能。這一調參優化的過程就被稱為模型的選擇(model selection):select the optimal values of tuning parameters (also called hyperparameters)。然而,如果我們重複使用測試集的話,測試集等於稱為訓練集的一部分,此時模型容易發生過擬合。

一個使用 holdout 方法進行模型選擇的較好的方式是將資料集做如下的劃分:

  • 訓練集(training set);

    The training set is used to fit the different models

  • 評價集(validation set);

    The performance on the validation set is then used for the model selection

    常用的做法是,超參選取多個value進行模型的訓練,分被使用validation set 進行評估,選取效果最佳的引數value。

  • 測試集(test set);

    The advantage of having a test set that the modelhasn’t seen before during the training and model selection steps is that we can obtain a less biased estimate of its ability to generalize to new data.  對模型測建立過程無影響,測試更準確

     下圖闡述了 holdout cross-validation 的工作流程,其中我們重複地使用 validation set 來評估引數調整時(已經歷訓練的過程)模型的效能。一旦我們對引數值滿意,我們就將在測試集(新的資料集)上評估模型的泛化誤差。


  • holdout 方法的弊端在於效能的評估對training set 和 validation set分割的比例較為敏感。在NG的課程所說, hold out cv直選擇了部分資料(常用70%)進行模型的訓練,對資料少、資料昂貴的情況並不合適,這是k-fold cv 可以提供更多的選擇


    2 k-fold validation

         按照NG在http://cs229.stanford.edu/notes/cs229-notes5.pdf 中的解釋。        

        在 k-fold cross_validation,將訓練集分為 k folds(k個部分),其中的 k-1 folds 用於模型的訓練,1 fold 用於測試。使用一個模型,將這一過程重複 k 次,我們便可獲得 這個模型的效能評價;針對不同的模型(例如LR、SVM、NN等),依次執行上述過程,計算得到對應的效能。  這樣就可以選擇最優的model。 每個model都訓練了k詞,計算量較大。

        k常選10.  如果資料較少,k應該選擇較大,以便使訓練資料更多。極限情況下,k = 樣本數,這樣validation subset只有一個,這種情況叫leave-one-out-cv。 下圖是流程圖

   




相關文章