Как вы уже знаете, способ получить наилучшие результаты с помощью машинного обучения - это использовать несколько моделей и комбинировать их для создания более совершенных моделей, чем каждая по отдельности.

В основном существует три способа их комбинирования, но да… названия просто ужасны и всегда приводят к путанице… Что за слово упаковка означает? и да! Конечно, я хочу улучшить свою модель, но как ?!

Упаковка и штабелирование - это те вещи, которые легко понять, пойдем!

Упаковка

Это так же просто, как получить несколько похожих моделей, то есть обычно одни и те же модели с немного разными гиперпараметрами или использовать разные части данных (самонастройка) и усреднить их в конце.

Обоснование состоит в том, что, поскольку вы усредняете разные модели, вам не просто повезло найти случайное начальное число, которое дает действительно хорошую оценку при валидации, но и оценка валидации обобщается для всех моделей.

Кроме того, поскольку вы уменьшаете вероятность переобучения, вы можете использовать более сложные модели и не переобучать слишком сильно.

Штабелирование

Стекинг - это просто создание нового набора данных со значениями ваших прогнозов различных моделей. А затем используйте окончательную модель, которая получает этот набор данных прогнозов и создает окончательную модель.

Идея состоит в том, что если у вас есть разнообразие в отдельных моделях, поскольку каждая из них захватывает разные шаблоны, мы можем использовать окончательную модель, которая объединяет все и знает, что, когда KNN и NN предсказывают одно и то же, вероятно, правильно, но также и тогда, когда они расходятся, может быть, стоит поискать третий индикатор прогноза.

Обычно модель, объединяющая набор данных с накоплением, представляет собой линейную модель, поскольку шаблоны уже должны быть отражены в отдельных моделях.

Повышение

Усиление техники было труднее понять… идея состоит в том, что вы создаете разные модели в зависимости от того, насколько хорошо работает предыдущая модель.

Например, представьте, что у вас есть набор данных и вы создаете модель, которая прогнозирует целевую переменную ... это нормально, пока у вас есть model_1 ... затем вы клонируете набор данных, но меняете целевой столбец с ошибкой прогноза модели model_1. Таким образом, в основном модель_2 должна предсказать, сколько ошибок совершила первая модель.

В некотором смысле, если мы можем предсказать, сколько ошибок сделала предыдущая модель, мы можем исправить предыдущие значения и создать более точный прогноз.

По сути, окончательный прогноз выглядит примерно так:

pred = model1_pred * 0,7 + model2_pred * 0. 25 + model3_pred * 0,05

Заключение

Ансамблирование - это мощный инструмент, который может повысить производительность вашей модели в зависимости от проблем в модели.

Ваша текущая модель действительно хороша, но подходит → попробуйте использовать мешки

Ни одна из ваших моделей не отражает различные закономерности в данных → используйте наложение

Вы хотите иметь еще более мощные модели, способные улавливать скрытые закономерности → выберите повышение.

И не позволяйте ужасному именованию остановить использование этих методов, большинство из которых уже реализовано в sklearn.