簡體   English   中英

集成 10 倍模型

[英]Ensembling the 10-fold models

我可以將 10 倍的預測集合起來並計算最終准確度。

但是,當我按照以下代碼保存模型時,它只會保存 1 倍的模型。 有這樣的10個模型。

在機器學習的世界里,有沒有像 Ensembling/Combining/Aggregating 10-fold 模型這樣的東西?

我想從 10 個模型(從 10 倍中獲得)制作最終模型,以便用它來預測新數據。

是否可以?

ypred_all = np.ones((y.shape))
EnsembledModel = []
kfolds = KFold(n_splits=10) 
for train, test in kf.split(x):
   train_x = features[train]
   train_y = labels[train]
   test_x = features[test]
   test_y = labels[test]
   model = clf.fit(train_x, train_y)  

   dump(model, 'model.joblib') 

   EnsembledModel.append (model)  ##???

   ypred = model.predict(test_x)
   ypred_all[test] = ypred


final_accuracy =  accuracy_score(y, ypred_all)


final_model = ...EnsembledModel ##??

final_predict = final_model.predict(x_new)

常見的誤解:k-fold 只是驗證模型,而不是它的參數。

工作流程是:

  1. 數據集分為訓練和測試。
  2. 開發適用算法的特征和原因
  3. 對於有希望的特征集和算法(OLS、SVM、NN 等)組合,在訓練集的一個子集上進行訓練 - 這就是你使用 k 折疊的地方。 使用平均性能作為該模型的度量,即特征和算法的組合。 作為此步驟的結果,您選擇了最佳模型(但不是參數)。
  4. 在整個訓練集上訓練所選模型。 這將稍微改進模型,因為您有更多數據。 作為此步驟的結果,您將獲得模型參數。
  5. 評估測試集上的最終性能。

注意:術語不同。 有些人稱測試集為堅持,有些人對交叉驗證集使用相同的術語。 此外,對於一次性一次性模型,您可能需要完全跳過步驟 1 和 5。

您的問題的答案是第 4 步:一旦找到最佳模型,您就可以在整個訓練集上進行訓練。

UPD:在某些情況下,使用不同的模型可以更好地處理數據集的不同部分。 在某些情況下,您甚至可以在數據集的不同分區上使用相同的模型,例如用一組線性函數來逼近多項式。 多個模型的組合然后會給你一個合奏。 但是,如果折疊是隨機的,則沒有多大意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM