Overfitting e ensembling

Machine Learning per la finanza in Python

Nathan George

Data Science Professor

overfitting

Machine Learning per la finanza in Python

Semplifica il modello

limited net

Machine Learning per la finanza in Python

Opzioni per reti neurali

Opzioni per contrastare l'overfitting:

  • Riduci il numero di nodi
  • Usa regularization L1/L2
  • Dropout
  • Architettura autoencoder
  • Early stopping
  • Aggiungi rumore ai dati
  • Vincoli max norm
  • Ensembling
Machine Learning per la finanza in Python

Dropout

dropout

Machine Learning per la finanza in Python

Dropout in 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 per la finanza in Python

Confronto sul test set

Valori R$^2$ su AMD senza dropout:

  • train: 0,91
  • test: -0,72

Con dropout:

  • train: 0,46
  • test: -0,22
Machine Learning per la finanza in Python

Ensembling

random forest

Machine Learning per la finanza in Python

Implementare l'ensembling

# make predictions from 2 neural net models
test_pred1 = model_1.predict(scaled_test_features)
test_pred2 = model_2.predict(scaled_test_features)

# horizontally stack predictions and take the average across rows test_preds = np.mean(np.hstack((test_pred1, test_pred2)), axis=1)
Machine Learning per la finanza in Python

Confronto dell'ensemble

Model 1 punteggio R$^2$ sul test set:

  • -0,179

model 2:

  • -0,148

ensemble (previsioni medie):

  • -0,146
Machine Learning per la finanza in Python

Dropout ed ensemble!

Machine Learning per la finanza in Python

Preparing Video For Download...