模型集成
改進機器學習模型預測的一種方法是集成(ensembling)。最基本的作法是對多個模型的預測取平均。更進一步,可以把各模型的預測再餵給「另一個」模型,讓它產生最終預測。兩種方法通常都能提升整體效能(前提是單一模型本身要夠好)。如果你還記得,隨機森林其實也是把很多決策樹做集成。
要集成我們的神經網路預測,我們會用剛建立的 3 個模型來做預測——基本模型、自訂損失函式的模型,以及包含 dropout 的模型。然後用 numpy 的 .hstack() 函式把這些預測水平堆疊起來,並用 np.mean(predictions, axis=1) 沿著列取平均,得到最終的平均預測。
本練習屬於課程
Python 金融 Machine Learning
練習說明
- 使用
.predict()方法,針對我們訓練好的 3 個模型(model_1、model_2、model_3),分別在scaled_train_features與scaled_test_features上產生預測。 - 將這些預測用
np.hstack()水平堆疊成一個矩陣,並沿列取平均,得到訓練集與測試集的平均預測。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Make predictions from the 3 neural net models
train_pred1 = model_1.predict(____)
test_pred1 = model_1.predict(____)
train_pred2 = ____
test_pred2 = ____
train_pred3 = model_3.predict(scaled_train_features)
test_pred3 = model_3.predict(scaled_test_features)
# Horizontally stack predictions and take the average across rows
train_preds = np.mean(np.hstack((train_pred1, train_pred2, train_pred3)), axis=1)
test_preds = np.mean(____, ____)
print(test_preds[-5:])