Modellen ensemblen
Een manier om voorspellingen van Machine Learning-modellen te verbeteren is ensembling. Een eenvoudige aanpak is om de voorspellingen van meerdere modellen te middelen. Een meer geavanceerde aanpak is om de voorspellingen van modellen door te voeren naar een ander model, dat de uiteindelijke voorspellingen maakt. Beide aanpakken verbeteren meestal de algehele performance (zolang de individuele modellen goed zijn). Als je het je herinnert: random forests gebruiken ook ensembling van veel beslissingsbomen.
Om onze neural-net-voorspellingen te ensemblen, maken we voorspellingen met de 3 modellen die we zojuist hebben gemaakt: het basismodel, het model met de custom loss-functie en het model met dropout. Daarna combineren we de voorspellingen met de .hstack()-functie van numpy, en middelen we ze per rij met np.mean(predictions, axis=1).
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Maak voorspellingen op de
scaled_train_featuresenscaled_test_featuresvoor de 3 getrainde modellen (model_1,model_2,model_3) met de methode.predict(). - Stapel de voorspellingen horizontaal (
np.hstack()) tot één matrix en neem het rijgemiddelde om gemiddelde voorspellingen voor de train- en testsets te krijgen.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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:])