天天看點

交叉驗證(Cross validation)總結

一  什麼是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 來評估參數調整時(已經曆訓練的過程)模型的性能。一旦我們對參數值滿意,我們就将在測試集(新的資料集)上評估模型的泛化誤差。

  • 交叉驗證(Cross validation)總結
    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。 下圖是流程圖

交叉驗證(Cross validation)總結

繼續閱讀