交叉驗證的作用

2021-09-25 08:37:34 字數 849 閱讀 1585

1. 可以使用所有的資料

一般模型訓練都要把資料分成訓練集和驗證集合,這就導致訓練資料比原始的資料要少,並且驗證集也無法是所有的原始資料。

如果使用交叉驗證,所有資料都可以用作訓練(但不是同乙個模型),所有資料也都可以用作驗證集。

2. 評估模型的穩定性及調參

比如5折交叉驗證,在引數確定了的情況下,我們可以將資料弄成五份,每乙份中80%訓練,20%作為測試集,這樣可以訓練五個模型,這五個模型除了訓練集測試集不同外,其他的都相同,這樣我們可以得到五個模型的評估指標比如auc,計算五個模型得到的auc的方差,如果方差**明模型的泛化性比較好,模型比較穩定是個好模型,否則說明模型泛化性不好。

xgboost中cv函式返回的值包括兩個,乙個是單模型的評價指標(比如auc),另外乙個是模型的方差。

引數不確定的情況下,我們通過模型的準確性和穩定性來選擇最合適的引數。

3. stacking的模型融合方法

stacking模型融合方法中,第二個模型中的特徵一般來自第乙個模型中對資料的**,我們不能用自己的訓練然後**自己,這時就要用stacking的方法來分塊生成,每次80%的資料訓練,用得到的模型**剩下的20%和test data,重複五次就能得到所有訓練集的所有**結果,從而作為第二個模型的輸入。下圖比較容易表達這一過程

4. 處理分組的資料

舉個例子,比如語音識別程式,訓練集為三個不同的人說的話,如果我們將這三個人說的話融合到一起然後隨機取樣進行訓練和測試,那麼結果應該是偏好的。

如果我們用其中兩個人聲音進行訓練第三個人的聲音進行測試,那麼就能很好的評估模型的泛化性

交叉驗證的作用

1.可以使用所有的資料 一般模型訓練都要把資料分成訓練集和驗證集合,這就導致訓練資料比原始的資料要少,並且驗證集也無法是所有的原始資料。如果使用交叉驗證,所有資料都可以用作訓練 但不是同乙個模型 所有資料也都可以用作驗證集。2.評估模型的穩定性及調參 比如5折交叉驗證,在引數確定了的情況下,我們可以...

spark PIPELINE 的交叉驗證

1.建立crossvalidator val crossval new crossvalidator setestimator pipeline setevaluator new binaryclassificationevaluator 第乙個是pipeline程式 第二個是模型的求值函式 2.p...

scikit learning 交叉驗證

import numpy as np from sklearn import datasets from sklearn.cross validation import train test split from sklearn.neighbors import kneighborsclassifi...