Överanpassning och ensembling

Maskininlärning för finans i Python

Nathan George

Data Science Professor

överanpassning

Maskininlärning för finans i Python

Förenkla din modell

begränsat nätverk

Maskininlärning för finans i Python

Alternativ för neurala nätverk

Metoder för att motverka överanpassning:

  • Minska antalet noder
  • Använd L1/L2-regularisering
  • Dropout
  • Autoenkoderarkitektur
  • Early stopping
  • Lägg till brus i data
  • Max norm-begränsningar
  • Ensembling
Maskininlärning för finans i Python

Dropout

dropout

Maskininlärning för finans i Python

Dropout i 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'))
Maskininlärning för finans i Python

Jämförelse på testmängd

R$^2$-värden för AMD utan dropout:

  • träning: 0,91
  • test: -0,72

Med dropout:

  • träning: 0,46
  • test: -0,22
Maskininlärning för finans i Python

Ensembling

random forest

Maskininlärning för finans i Python

Implementera 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)
Maskininlärning för finans i Python

Jämföra ensemblen

Modell 1 R$^2$-poäng på testmängd:

  • -0,179

Modell 2:

  • -0,148

Ensemble (genomsnittliga prediktioner):

  • -0,146
Maskininlärning för finans i Python

Nu kör vi en övning!

Maskininlärning för finans i Python

Preparing Video For Download...