Ensembling modelů
Jedním ze způsobů, jak zlepšit předpovědi modelů strojového učení, je ensembling. Základní přístup spočívá v průměrování předpovědí z více modelů. Složitější přístup předpovědi jednotlivých modelů předává dalšímu modelu, který vytvoří finální předpovědi. Oba přístupy obvykle celkový výkon zlepší (za předpokladu, že jednotlivé modely jsou dostatečně kvalitní). Jak si možná pamatuješ, i náhodné lesy využívají ensembling mnoha rozhodovacích stromů.
Pro ensembling předpovědí naší neuronové sítě vytvoříme předpovědi pomocí 3 modelů, které jsme právě natrénovali – základního modelu, modelu s vlastní ztrátovou funkcí a modelu s dropoutem. Předpovědi pak zkombinujeme pomocí funkce .hstack() z knihovny numpy a zprůměrujeme je přes řádky pomocí np.mean(predictions, axis=1).
Toto cvičení je součástí kurzu
Machine Learning for Finance in Python
Pokyny k cvičení
- Vytvoř předpovědi na
scaled_train_featuresascaled_test_featurespro všechny 3 natrénované modely (model_1,model_2,model_3) pomocí metody.predict(). - Horizontálně slož (
np.hstack()) předpovědi do matice a vypočítej průměry přes řádky, abys získal/a průměrné předpovědi pro trénovací a testovací sady.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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:])