Surapprentissage et ensemblage

Machine Learning pour la finance en Python

Nathan George

Data Science Professor

surapprentissage

Machine Learning pour la finance en Python

Simplifier votre modèle

réseau limité

Machine Learning pour la finance en Python

Options pour réseaux de neurones

Options contre le surapprentissage :

  • Réduire le nombre de nœuds
  • Utiliser une régularisation L1/L2
  • Dropout
  • Architecture autoencodeur
  • Arrêt anticipé
  • Ajouter du bruit aux données
  • Contraintes de norme max
  • Ensemblage
Machine Learning pour la finance en Python

Dropout

dropout

Machine Learning pour la finance en Python

Dropout dans Keras

from keras.layers import Dense, Dropout

model = Sequential() model.add(Dense(500, input_dim=scaled_train_features.shape[1], activation='relu')) model.add(Dropout(0.5)) model.add(Dense(100, activation='relu')) model.add(Dense(1, activation='linear'))
Machine Learning pour la finance en Python

Comparaison sur l'ensemble de test

Valeurs R$^2$ sur AMD sans dropout :

  • entraînement : 0,91
  • test : -0,72

Avec dropout :

  • entraînement : 0,46
  • test : -0,22
Machine Learning pour la finance en Python

Ensemblage

forêt aléatoire

Machine Learning pour la finance en Python

Mettre en œuvre l'ensemblage

# générer des prédictions à partir de 2 modèles de réseau de neurones
test_pred1 = model_1.predict(scaled_test_features)
test_pred2 = model_2.predict(scaled_test_features)

# empiler horizontalement les prédictions et prendre la moyenne par ligne test_preds = np.mean(np.hstack((test_pred1, test_pred2)), axis=1)
Machine Learning pour la finance en Python

Comparer l'ensemble

Score R$^2$ du modèle 1 sur l'ensemble de test :

  • -0,179

modèle 2 :

  • -0,148

ensemble (moyenne des prédictions) :

  • -0,146
Machine Learning pour la finance en Python

Dropout et ensemblage !

Machine Learning pour la finance en Python

Preparing Video For Download...