Przetrenowanie i ensembling

Uczenie maszynowe w finansach z Pythonem

Nathan George

Data Science Professor

przetrenowanie

Uczenie maszynowe w finansach z Pythonem

Upraszczanie modelu

uproszczona sieć

Uczenie maszynowe w finansach z Pythonem

Opcje sieci neuronowych

Metody zwalczania przetrenowania:

  • Zmniejszenie liczby węzłów
  • Regularyzacja L1/L2
  • Dropout
  • Architektura autoenkodera
  • Wczesne zatrzymanie
  • Dodawanie szumu do danych
  • Ograniczenia normy maksymalnej
  • Ensembling
Uczenie maszynowe w finansach z Pythonem

Dropout

dropout

Uczenie maszynowe w finansach z Pythonem

Dropout w 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'))
Uczenie maszynowe w finansach z Pythonem

Porównanie na zbiorze testowym

Wartości R$^2$ dla AMD bez dropoutu:

  • trening: 0.91
  • test: -0.72

Z dropoutem:

  • trening: 0.46
  • test: -0.22
Uczenie maszynowe w finansach z Pythonem

Ensembling

las losowy

Uczenie maszynowe w finansach z Pythonem

Implementacja ensemblingu

# 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)
Uczenie maszynowe w finansach z Pythonem

Porównanie ensemblu

Wynik R$^2$ modelu 1 na zbiorze testowym:

  • -0.179

Model 2:

  • -0.148

Ensemble (uśrednione predykcje):

  • -0.146
Uczenie maszynowe w finansach z Pythonem

Dropout i ensemble!

Uczenie maszynowe w finansach z Pythonem

Preparing Video For Download...