Overfitting dan ensembling

Machine Learning untuk Keuangan dengan Python

Nathan George

Data Science Professor

overfitting

Machine Learning untuk Keuangan dengan Python

Sederhanakan model Anda

limited net

Machine Learning untuk Keuangan dengan Python

Opsi jaringan saraf

Opsi untuk melawan overfitting:

  • Kurangi jumlah node
  • Gunakan regularisasi L1/L2
  • Dropout
  • Arsitektur autoencoder
  • Early stopping
  • Tambahkan noise pada data
  • Kendala max-norm
  • Ensembling
Machine Learning untuk Keuangan dengan Python

Dropout

dropout

Machine Learning untuk Keuangan dengan Python

Dropout di 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 untuk Keuangan dengan Python

Perbandingan set uji

Nilai R$^2$ pada AMD tanpa dropout:

  • train: 0,91
  • test: -0,72

Dengan dropout:

  • train: 0,46
  • test: -0,22
Machine Learning untuk Keuangan dengan Python

Ensembling

random forest

Machine Learning untuk Keuangan dengan Python

Menerapkan 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 untuk Keuangan dengan Python

Membandingkan ensemble

Skor R$^2$ Model 1 pada set uji:

  • -0,179

model 2:

  • -0,148

ensemble (prediksi dirata-rata):

  • -0,146
Machine Learning untuk Keuangan dengan Python

Dropout dan ensemble!

Machine Learning untuk Keuangan dengan Python

Preparing Video For Download...