Переобучення та ансамблювання

Machine Learning для фінансів у Python

Nathan George

Data Science Professor

переобучення

Machine Learning для фінансів у Python

Спрощуйте модель

обмежена мережа

Machine Learning для фінансів у Python

Опції для нейромереж

Способи боротися з переобученням:

  • Зменшити кількість вузлів
  • L1/L2 регуляризація
  • Dropout
  • Архітектура автоенкодера
  • Раннє зупинення
  • Додавання шуму до даних
  • Обмеження макс. норми
  • Ансамблювання
Machine Learning для фінансів у Python

Dropout

dropout

Machine Learning для фінансів у Python

Dropout у 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 для фінансів у Python

Порівняння на тесті

Значення R$^2$ на AMD без dropout:

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

З dropout:

  • train: 0,46
  • test: -0,22
Machine Learning для фінансів у Python

Ансамблювання

random forest

Machine Learning для фінансів у Python

Реалізація ансамблювання

# 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 для фінансів у Python

Порівняння ансамблю

Оцінка R$^2$ моделі 1 на тесті:

  • -0,179

модель 2:

  • -0,148

ансамбль (усереднені передбачення):

  • -0,146
Machine Learning для фінансів у Python

Dropout і ансамбль!

Machine Learning для фінансів у Python

Preparing Video For Download...