Łączenie modeli w zespoły
Jedną z metod poprawy prognoz w uczeniu maszynowym jest łączenie modeli w zespoły (ang. ensembling). Najprostsze podejście polega na uśrednieniu prognoz z kilku modeli. Bardziej zaawansowane podejście to przekazanie prognoz jednych modeli do kolejnego modelu, który wydaje ostateczne predykcje. Oba podejścia zazwyczaj poprawiają ogólną jakość wyników – o ile poszczególne modele są odpowiednio dobre. Warto przypomnieć, że lasy losowe również korzystają z łączenia wielu drzew decyzyjnych w zespół.
Aby połączyć prognozy naszych sieci neuronowych, wygenerujemy predykcje za pomocą 3 wcześniej zbudowanych modeli: modelu podstawowego, modelu z własną funkcją straty oraz modelu z dropoutem. Następnie połączymy prognozy funkcją .hstack() z biblioteki numpy i obliczymy ich średnie wierszowe za pomocą np.mean(predictions, axis=1).
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Wygeneruj prognozy na zbiorach
scaled_train_featuresiscaled_test_featuresdla 3 wytrenowanych modeli (model_1,model_2,model_3), używając metody.predict(). - Połącz prognozy poziomo za pomocą
np.hstack()w macierz, a następnie oblicz średnie wierszowe, aby uzyskać uśrednione prognozy dla zbiorów treningowego i testowego.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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:])