Overfitting und Ensembling

Maschinelles Lernen für Finanzen in Python

Nathan George

Data Science Professor

overfitting

Maschinelles Lernen für Finanzen in Python

Vereinfache dein Modell

limited net

Maschinelles Lernen für Finanzen in Python

Optionen für neuronale Netze

Optionen gegen Overfitting:

  • Anzahl der Knoten verringern
  • L1/L2-Regularisierung nutzen
  • Dropout
  • Autoencoder-Architektur
  • Early Stopping
  • Rauschen zu Daten hinzufügen
  • Max-Norm-Beschränkungen
  • Ensembling
Maschinelles Lernen für Finanzen in Python

Dropout

dropout

Maschinelles Lernen für Finanzen 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'))
Maschinelles Lernen für Finanzen in Python

Vergleich des Testsets

R$^2$-Werte auf AMD ohne Dropout:

  • Train: 0.91
  • Test: -0.72

Mit Dropout:

  • Train: 0.46
  • Test: -0.22
Maschinelles Lernen für Finanzen in Python

Ensembling

random forest

Maschinelles Lernen für Finanzen in Python

Ensembling implementieren

# Vorhersagen aus 2 neuronalen Netzen erstellen
test_pred1 = model_1.predict(scaled_test_features)
test_pred2 = model_2.predict(scaled_test_features)

# Vorhersagen horizontal stapeln und Zeilenmittel bilden test_preds = np.mean(np.hstack((test_pred1, test_pred2)), axis=1)
Maschinelles Lernen für Finanzen in Python

Vergleich des Ensembles

Modell 1 R$^2$-Score auf dem Testset:

  • -0.179

Modell 2:

  • -0.148

Ensemble (gemittelte Vorhersagen):

  • -0.146
Maschinelles Lernen für Finanzen in Python

Dropout und Ensemble!

Maschinelles Lernen für Finanzen in Python

Preparing Video For Download...