Zacznij terazZacznij za darmo

Łą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

Zobacz kurs

Instrukcje do ćwiczenia

  • Wygeneruj prognozy na zbiorach scaled_train_features i scaled_test_features dla 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:])
Edytuj i uruchom kod