Одна модель хорошо, а n лучше! Сегодня будем разбираться с ансамблированием моделей.
Ансамблирование это метод машинного обучения при котором решать задачу обучаются несколько моделей, а потом их предсказания агрегируются(например, усредняются). Ансамблирование хороший способ повысить точность модели, его часто используют на соревнованиях.
Важно заметить, что если модели будут одинаковые, то смысла в этом не будет, модели должны отличаться, например:
-тренироваться на разных частях датасета
-использовать разные веса для инициализации
-иметь разную архитектуру
Итак, каким же бывает ансамблирование?
1. Бэггинг. При бэггинге мы выбираем из исходного датасета поднаборы с возвращением. То есть при размере датасета N на каждом шаге выбора элемента для поднабора мы всегда выбираем из N элементов. . Суть метода очень проста - во время тренировки - учимся на разных поднаборах, во время предсказания - усредняем ответы всех моделей.
Если базовая модель имела высокую дисперсию, бэггинг позволяет свести ошибки классификации к минимуму.
2.Бустинг. При бустинге мы тренируем модели из ансамбля последовательно и у каждой следующей модели корректируем веса с учетом ошибки предыдущей. Вы наверняка знакомы с градиентным бустингом, когда мы изменяем веса в сторону антиградиента. Существует например AdaBoost где мы фокусируем свое внимание на неверно классифицированных объектах, на каждой итерации придавая им все больший вес, который отвечает за важность элементов. Удобная штука чтобы идентифицировать выбросы.
Для градиентного бустинга существует множество известных реализаций - XGBoost, LightGBM, CatBoost и т.д. Бывало ли у вас такое, что один из них был гораздо круче остальных на какой-то задаче? Поделитесь в комментариях⬇️
3. Стекинг. В стекинге мы используем модели разной природы, например регрессию на деревьях, линейную регрессию, регрессию с помощью knn и тд. Предсказания всех этих моделей мы используем как мета-признаки и итоговую модель обучаем уже на этих самых метапризнаках. Из этого вытекает особенность - полученные признаки сильно коррелируют, для решения этой проблемы иногда помогает обучение не на целевой признак, а на разницу между каким-то признаком и целевым.
Ансамблирование это метод машинного обучения при котором решать задачу обучаются несколько моделей, а потом их предсказания агрегируются(например, усредняются). Ансамблирование хороший способ повысить точность модели, его часто используют на соревнованиях.
Важно заметить, что если модели будут одинаковые, то смысла в этом не будет, модели должны отличаться, например:
-тренироваться на разных частях датасета
-использовать разные веса для инициализации
-иметь разную архитектуру
Итак, каким же бывает ансамблирование?
1. Бэггинг. При бэггинге мы выбираем из исходного датасета поднаборы с возвращением. То есть при размере датасета N на каждом шаге выбора элемента для поднабора мы всегда выбираем из N элементов. . Суть метода очень проста - во время тренировки - учимся на разных поднаборах, во время предсказания - усредняем ответы всех моделей.
Если базовая модель имела высокую дисперсию, бэггинг позволяет свести ошибки классификации к минимуму.
2.Бустинг. При бустинге мы тренируем модели из ансамбля последовательно и у каждой следующей модели корректируем веса с учетом ошибки предыдущей. Вы наверняка знакомы с градиентным бустингом, когда мы изменяем веса в сторону антиградиента. Существует например AdaBoost где мы фокусируем свое внимание на неверно классифицированных объектах, на каждой итерации придавая им все больший вес, который отвечает за важность элементов. Удобная штука чтобы идентифицировать выбросы.
Для градиентного бустинга существует множество известных реализаций - XGBoost, LightGBM, CatBoost и т.д. Бывало ли у вас такое, что один из них был гораздо круче остальных на какой-то задаче? Поделитесь в комментариях⬇️
3. Стекинг. В стекинге мы используем модели разной природы, например регрессию на деревьях, линейную регрессию, регрессию с помощью knn и тд. Предсказания всех этих моделей мы используем как мета-признаки и итоговую модель обучаем уже на этих самых метапризнаках. Из этого вытекает особенность - полученные признаки сильно коррелируют, для решения этой проблемы иногда помогает обучение не на целевой признак, а на разницу между каким-то признаком и целевым.