Overfitting e ensembling

Machine Learning para Finanças em Python

Nathan George

Data Science Professor

overfitting

Machine Learning para Finanças em Python

Simplifique seu modelo

limited net

Machine Learning para Finanças em Python

Opções em redes neurais

Opções para combater overfitting:

  • Diminuir o número de nós
  • Usar regularização L1/L2
  • Dropout
  • Arquitetura de autoencoder
  • Early stopping
  • Adicionar ruído aos dados
  • Restrições de norma máxima
  • Ensembling
Machine Learning para Finanças em Python

Dropout

dropout

Machine Learning para Finanças em Python

Dropout no 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 para Finanças em Python

Comparação no conjunto de teste

Valores de R$^2$ em AMD sem dropout:

  • treino: 0,91
  • teste: -0,72

Com dropout:

  • treino: 0,46
  • teste: -0,22
Machine Learning para Finanças em Python

Ensembling

random forest

Machine Learning para Finanças em Python

Implementando 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 para Finanças em Python

Comparando o ensemble

Pontuação R$^2$ do Modelo 1 no teste:

  • -0,179

modelo 2:

  • -0,148

ensemble (média das previsões):

  • -0,146
Machine Learning para Finanças em Python

Dropout e ensemble!

Machine Learning para Finanças em Python

Preparing Video For Download...