Переобучение и ансамблирование

Машинное обучение для финансов на Python

Nathan George

Data Science Professor

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

Машинное обучение для финансов на Python

Упростите модель

упрощённая сеть

Машинное обучение для финансов на Python

Методы нейронных сетей

Методы борьбы с переобучением:

  • Уменьшение числа нейронов
  • Регуляризация L1/L2
  • Dropout
  • Архитектура автоэнкодера
  • Ранняя остановка
  • Добавление шума в данные
  • Ограничение максимальной нормы
  • Ансамблирование
Машинное обучение для финансов на Python

Dropout

dropout

Машинное обучение для финансов на 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'))
Машинное обучение для финансов на Python

Сравнение на тестовой выборке

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

  • обучение: 0.91
  • тест: -0.72

С dropout:

  • обучение: 0.46
  • тест: -0.22
Машинное обучение для финансов на Python

Ансамблирование

случайный лес

Машинное обучение для финансов на 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)
Машинное обучение для финансов на Python

Сравнение ансамбля

Значение R$^2$ модели 1 на тестовой выборке:

  • -0.179

Модель 2:

  • -0.148

Ансамбль (усреднённые предсказания):

  • -0.146
Машинное обучение для финансов на Python

Dropout и ансамбль!

Машинное обучение для финансов на Python

Preparing Video For Download...