Методы ансамбля: от деревьев решений к глубокому обучению
Здравствуйте, в этой статье я попытаюсь дать вам интуитивно понятное представление о наиболее популярных методах ансамбля, которые используются в области машинного обучения, и если все пойдет хорошо, я также отважусь на глубокое обучение, чтобы увидеть, как мы можем применить те же концепции. к нейронным сетям.
По своей сути концепция довольно проста: Алгоритмы ансамблевого обучения объединяют прогнозы нескольких моделей, обученных на всем наборе данных или нескольких выборках, с использованием различных методов агрегирования результатов.
Используя ансамблевые методы, мы получаем более общее и надежное решение, чем при использовании одной оценки, поэтому идея состоит в том, чтобы использовать несколько слабых учеников, которые по отдельности имеют тенденцию к большему смещению, но в совокупности мы получаем довольно хорошие прогнозы. Деревья решений являются одними из наиболее часто используемых «слабых обучающихся» для создания ансамблевых предикторов, в основном потому, что их легко и быстро обучать, и это помогает с «горизонтальным» типом масштабирования, который мы используем в этом случае.
Стандартные ансамблевые методы
У нас есть три основные категории алгоритмов обучения ансамбля:
Упаковка
Ансамбли пакетов, термин пакеты происходит от агрегации начальной загрузки, где начальная загрузка относится к наборам данных с начальной загрузкой, которые создаются с использованием выборки с заменой. Для каждого нового загруженного набора данных мы обучаем дерево решений, и во время вывода мы берем результаты из каждой модели и выбираем наиболее часто встречающийся для классификации или средний для регрессии.
У этого типа ансамблевого обучения есть несколько преимуществ: модели можно обучать параллельно, и в целом оно имеет довольно низкую дисперсию, поэтому не переобучается.
Существуют различные варианты алгоритмов упаковки в пакеты: деревья решений в пакетах, случайные леса, дополнительные деревья, пользовательские пакеты.
Один быстрый пример использования классификатора мешков, предоставленного sklearn:
Повышение
Стратегия ансамблевого метода этого типа заключается в последовательном создании моделей, при этом каждая новая модель корректирует предсказания предыдущей модели. Существует несколько методов, с помощью которых каждая новая модель может компенсировать плохо обработанные ранее наблюдения. Наиболее часто используемые из них: Адаптивное усиление и Градиентное усиление.
Есть два больших отличия от бэггинга: из-за его последовательного характера для этого метода мы больше не можем строить модели параллельно, и он в первую очередь нацелен на низкое смещение, хотя он также имеет хорошую дисперсию.
Это семейство ансамблей содержит некоторые из наиболее часто используемых алгоритмов в соревнованиях Kaggle и является выбором многих профессионалов: AdaBoost, XGBoost, LightGBM, CatBoost.
Укладка
Для этой категории у нас есть два уровня моделей: один с обычными «слабыми учениками» и один с «мета-обучаемыми», которые должны сочетать результаты первого уровня.
В отличие от двух предыдущих методов, в этом случае модели не обязательно должны быть одного типа, это позволяет нам использовать один и тот же набор данных для обучения каждой модели из базового слоя. Рекомендуется использовать этот подход, когда у нас есть несколько моделей с ошибками, которые не связаны друг с другом и поэтому имеют разные индуктивные смещения для одной и той же задачи.
Некоторые из алгоритмов, принадлежащих к этому семейству: голосование, взвешенное среднее, смешивание, Super Learner.
Глубокое обучение
Нейронные сети могут изучать довольно сложные числовые закономерности при достаточно большом наборе данных, поэтому они, как правило, имеют низкое смещение и высокую дисперсию. Применение их к системе обучения ансамблевого типа не требует значительных революционных изменений в методах, которые я представил до сих пор, но есть некоторые аспекты, которые необходимо учитывать при выборе конфигурации.
Благодаря своей высокой способности к обучению и гибкости нейронная сеть очень чувствительна к начальным значениям веса и распределению обучающих данных. Эти и другие факторы усиливают стохастическую природу этого типа учащихся, и в результате мы можем легко получить модели, которые имеют одинаковую архитектуру и были обучены на одних и тех же данных, но ведут себя совершенно по-разному.
Основываясь на том, что мы уже узнали, мы можем выделить несколько подходов:
- Варьируйте данные, которые мы обучаем для каждой модели: используйте одну и ту же идею из k-кратной перекрестной проверки, но, в конце концов, сохраните k разных моделей, чтобы использовать их в предсказателе ансамбля, или создайте несколько выборок, используя повторную выборку с заменой. , точно так же, как в агрегации начальной загрузки (бэггинге).
- Измените способ агрегирования результатов: самое простое решение — усреднить результаты или использовать средневзвешенное значение. Другой простой подход — усреднить веса всех обученных моделей и создать новую. Более сложные решения могут быть созданы с использованием идей бустинга и стекирования.
- Варьируйте модели: изменяя гиперпараметры архитектуры модели, мы можем создавать разные модели, которые ведут себя по-разному, поэтому мы можем различаться: количество слоев, скорость обучения, инициализация веса и т. д. Мы также можем сохранять модель в процессе обучения и использовать их все в конце как предиктор ансамбля; это также называется ансамбль моментальных снимков.
Самым большим недостатком использования моделей глубокого обучения является то, что требования к данным и затраты на вычисления, связанные с обучением нейронной сети, накладывают дополнительные ограничения на обучение ансамбля, ограничивая количество «слабых учеников», которые можно использовать.
Для практического примера нет простых решений, подобных тем, что были в предыдущем разделе, но я предлагаю вам проверить Kaggle, почти во всех соревнованиях, где присутствуют нейронные сети, вы также можете найти ансамблевый подход. Кроме того, для pytorch вы можете проверить этот фреймворк: https://github.com/TorchEnsemble-Community/Ensemble-Pytorch.
Заключительные слова
В некоторой степени очевидно, что при использовании нескольких моделей мы должны получить лучший результат, но в большинстве случаев в реальных сценариях дополнительные вычислительные требования для обучения и поддержки решения ансамбля глубокого обучения редко оправданы, за исключением соревнований.
Спасибо за чтение, я надеюсь, что теперь у вас есть хорошее понимание того, что такое ансамблевое обучение, довольно четкая карта доступных ансамблевых методов, которые у нас есть, и как мы можем их использовать.
Если вы хотите быть в курсе последних новостей о машинном обучении и технологиях, вы можете подписаться на меня в твиттере здесь.
Ресурсы:
Источник