Ансамблирование моделей
Один из способов улучшить предсказания моделей машинного обучения — ансамблирование. Простейший подход — усреднить предсказания нескольких моделей. Более сложный вариант — передать предсказания одних моделей в другую модель, которая делает итоговые предсказания. Оба подхода, как правило, улучшают общую точность — при условии, что отдельные модели достаточно хороши. Напомним, что случайные леса тоже используют ансамблирование: они объединяют множество деревьев решений.
Чтобы объединить предсказания наших нейронных сетей, мы получим прогнозы с помощью трёх построенных моделей — базовой модели, модели с пользовательской функцией потерь и модели с исключением нейронов (dropout). Затем мы объединим предсказания с помощью функции .hstack() из numpy и усредним их по строкам с помощью np.mean(predictions, axis=1).
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
- Получите предсказания на
scaled_train_featuresиscaled_test_featuresдля трёх обученных моделей (model_1,model_2,model_3) с помощью метода.predict(). - Объедините предсказания по горизонтали с помощью
np.hstack(), чтобы сформировать матрицу, и вычислите среднее значение по строкам — это и будут усреднённые предсказания для обучающей и тестовой выборок.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Make predictions from the 3 neural net models
train_pred1 = model_1.predict(____)
test_pred1 = model_1.predict(____)
train_pred2 = ____
test_pred2 = ____
train_pred3 = model_3.predict(scaled_train_features)
test_pred3 = model_3.predict(scaled_test_features)
# Horizontally stack predictions and take the average across rows
train_preds = np.mean(np.hstack((train_pred1, train_pred2, train_pred3)), axis=1)
test_preds = np.mean(____, ____)
print(test_preds[-5:])