機器學習 驗證資料集與交叉驗證

2022-03-22 01:17:07 字數 1730 閱讀 8171

1)方案(一):將所有資料集都作為訓練資料集

2)方案(二):將資料集分割為訓練資料集和測試資料集

此方案得到的最佳模型,有可能會過擬合了測試資料集(模型過擬合測試資料集後,在測試資料集上表現的準確率會公升高),得到的模型的準確率不能反應模型真正的效能;

如果最佳模型過擬合了測試資料集,並且測試資料集上存在極端資料,該模型可能會因為擬合了某些極端資料而不準確。

3)方案(三):將資料集分割為 3 部分——訓練資料集、驗證資料集、測試資料集

訓練資料集:訓練模型;

驗證資料集:驗證模型的效果;如果模型的效果不好,則重新調整引數再次訓練新的模型,直到找到了一組引數,使得模型針對驗證資料集來說已經達到最優了;(調整超引數使用的資料集)

測試資料集:將此資料集傳入由驗證資料集得到的最佳模型,得到模型最終的效能;(作為衡量最終模型效能的資料集)

:分割方式是隨機的,模型有可能過擬合驗證資料集,導致所得的模型的效能指標不能反應模型真正的泛化能力;

隨機分割資料集帶來的問題:只有乙份驗證資料集,一旦驗證資料集中有極端的資料就可能導致模型相應的不準確,則該模型在測試資料集上體現的泛化能力不能滿足實際要求,因此該演算法會被認為不適合解決此問題。

4)方案(四):交叉驗證(cross validation)

5)在極端情況下,k-folds 交叉驗證可以變為「留一法」( loo-cv)的交叉驗證方式1)使用手寫識別資料集

2)使用 train_test_split 並調參

3)使用交叉驗證調參

cross_val_score(演算法的例項物件, x_train, y_train, cv=k):交叉驗證方法的使用格式;

4)分析

擬合方式:cross_val_score(knn_clf, x_train, y_train),預設將 x_train 分割成 3 份,並得到 3 個模型的準確率;如果想將 x_train 分割成 k 份cross_val_score(knn_clf, x_train, y_train, cv=k);

判定條件:score = np.mean(scores),交叉驗證中取 3 個模型的準確率的平均值最高時對應的一組引數作為最終的最優超引數;

原因:在交叉驗證中,通常不會過擬合某一組的測試資料,所以平均來講所得準確率稍微低一些;

5)其它

賦值給演算法的私有變數的好處,擬合後的例項模型物件不會隨 x_train、和y_train 資料集的改變而改變

1)knn 演算法的網格搜尋過程

「3 folds」:就是指網格搜尋使用交叉驗證的方式,預設將 x_train 分割成 3 份;如果將 x_train 分割成 k 份:grid_search = gridsearchcv(knn_clf, param_grid, verbose=1, cv=k);

「45 candidates」:k 從 [2, 11) 有 9 個值,p 從 [1, 6) 有 5 個值,一共要對 45 組引數進行搜尋;

「135 fits」:一共要對 45 組引數進行搜尋,每次搜尋要訓練出 3 個模型,一共要進行 135 此擬合訓練;

機器學習 交叉驗證 python資料集劃分

模型選擇的兩種方法 正則化 典型方法 交叉驗證。這裡介紹交叉驗證及其python 實現。交叉驗證 如果給定樣本資料充足,進行模型選擇的一種簡單方法是隨機地將資料集切分為3部分,分為訓練集 驗證集和測試集。訓練集 訓練模型 驗證集 模型的選擇 測試集 最終對模型的評估 在學習到不同複雜度的模型中,選擇...

機器學習 交叉驗證

假設我們需要從某些候選模型中選擇最適合某個學習問題的模型,我們該如何選擇?以多元回歸模型為例 我們假設模型集合為有限集 假設樣本集為s,根據經驗風險最小化原則 erm 可能會使用這樣的演算法 1.在s上訓練每個模型 2.選擇訓練誤差最小的假設函式,即為我們需要的函式。然而,這樣的演算法實際上並不有效...

機器學習 交叉驗證

交叉驗證是最好的測試方法 乙個問題叫做交叉驗證,是指假設要將乙份資料拆分成訓練集和測試集,這個時候怎麼評估出它的誤差?交叉驗證是把集合拆成五份,取四份做訓練集 乙份做測試集,並且每次選擇不同的那乙份做測試級,最後測出五個結果再做平均,這被認為是最好的測試方法。交叉驗證確實是乙個還不錯的驗證的方法,但...