Supraajustare și ansamblu

Machine Learning pentru finanțe în Python

Nathan George

Data Science Professor

supraajustare

Machine Learning pentru finanțe în Python

Simplificați modelul

rețea simplificată

Machine Learning pentru finanțe în Python

Opțiuni pentru rețele neuronale

Opțiuni pentru combaterea supraajustării:

  • Reducerea numărului de noduri
  • Regularizare L1/L2
  • Dropout
  • Arhitectură autoencoder
  • Oprire timpurie
  • Adăugare de zgomot în date
  • Constrângeri max norm
  • Ansamblu
Machine Learning pentru finanțe în Python

Dropout

dropout

Machine Learning pentru finanțe în Python

Dropout în 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 pentru finanțe în Python

Comparație pe setul de testare

Valori R$^2$ pe AMD fără dropout:

  • antrenare: 0.91
  • testare: -0.72

Cu dropout:

  • antrenare: 0.46
  • testare: -0.22
Machine Learning pentru finanțe în Python

Ansamblu

pădure aleatoare

Machine Learning pentru finanțe în Python

Implementarea ansamblului

# 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 pentru finanțe în Python

Compararea ansamblului

Scorul R$^2$ al modelului 1 pe setul de testare:

  • -0.179

Modelul 2:

  • -0.148

Ansamblu (predicții mediate):

  • -0.146
Machine Learning pentru finanțe în Python

Dropout și ansamblu!

Machine Learning pentru finanțe în Python

Preparing Video For Download...