Мотивация.Модели на основе дерева обычно имеют тенденцию к переоснащению из-за «выбросов». Например, по мере увеличения количества входных признаков и учета аномальных выборок дерево будет расти глубже с большим количеством подветвей, чтобы лучше классифицировать/сопоставлять точки данных. Однако по мере того, как дерево становится шире и глубже, не только стоимость хранения модели становится высокой и трудной для переноса, но она также может быть чувствительной к переоснащению и терять общность невидимых данных. Это нежелательно, и поэтому мы принимаем идею ансамблевого метода, чтобы смягчить эту проблему. Существует два основных типа ансамблевого метода: бэггинг и бустинг.
Повышение — это метод, который итеративно обучает слабые модели на взвешенных версиях данных с целью создания более сильной модели, чем каждая отдельная более слабая модель. Усиление работает, сосредотачиваясь на неправильно классифицированных образцах и придавая им больший вес в каждой итерации. Окончательная модель представляет собой ансамбль этих слабых моделей, где каждая модель имеет особый вес на основе ее эффективности на обучающих данных. Как правило, модели с более высокой точностью получают больший вес в окончательной модели.
И бэггинг, и бустинг широко используются в машинном обучении, и они могут помочь повысить точность и надежность моделей, особенно при работе с данными с высокой дисперсией или зашумленными данными.
AdaBoost, аббревиатура от Adaptive Boosting, представляет собой метод повышения. Для AdaBoost слабые учащиеся обучаются итеративно на взвешенной версии обучающих данных, где веса настраиваются на основе результатов предыдущего учащегося. AdaBoost придает больший вес неправильно классифицированным образцам на каждой итерации, чтобы следующий слабый ученик мог больше сосредоточиться на этих образцах и улучшить общую производительность модели.
Алгоритм в псевдокоде (отсылка к слайдам CMU):
Поскольку алгоритм AdaBoost опирается на базовые классификаторы, мы можем использовать классификатор дерева решений в качестве отдельной модели. Более просто мы можем использовать пни решений для демонстрационной реализации.
Пень решения — это тип дерева решений, который состоит из одного узла решения и двух конечных узлов. В отличие от полного дерева решений, культь решения делает прогноз на основе только одного признака и одного порогового значения. Узел принятия решения проверяет значение функции на соответствие пороговому значению, а затем назначает входные данные одному из двух конечных узлов на основе результатов теста. Хотя культи решений имеют ограниченную выразительную силу и могут не фиксировать сложные закономерности в данных, они могут быть полезны в ситуациях, когда количество признаков очень велико или данные очень зашумлены, поскольку они могут предоставить простую базовую модель для сравнения с более сложные модели.
Вот демонстрация Python для реализации AdaBoost с основными пнями принятия решений:
Производительность выборки набора данных (задача бинарной классификации):
входные характеристики: 2
метки: 1, -1
Тест на разное количество (K) пней решения:
Вывод: с большим количеством пней решений мы можем быть более конкретными и подробными при изучении границы. Алгоритм AdaBoost может изучать сложную/нелинейную границу решения посредством итеративного обучения на каждом слабом классификаторе — в нашем случае это пни решения.
Подробное обсуждение различных вариантов AdaBoost:
- Повышение градиента. Это более общая форма повышения, которая включает подгонку последовательности моделей к остаткам предыдущей модели. В отличие от AdaBoost, который фокусируется на классификации, повышение градиента можно применять и к задачам регрессии.
Преимущества:
- Может применяться как к задачам регрессии, так и к задачам классификации.
- Может обрабатывать широкий спектр функций потерь, обеспечивая большую гибкость в оптимизации модели.
- Может обрабатывать отсутствующие значения и выбросы в данных.
Недостатки:
- Может быть дорогостоящим в вычислительном отношении, особенно при большом количестве итераций или большом количестве функций.
- Может быть чувствителен к переоснащению, если скорость обучения слишком высока или количество деревьев слишком велико.
- Может потребоваться дополнительная настройка гиперпараметров, чем при использовании традиционного AdaBoost.
2. Адаптивное повышение с несколькими моделями (SAMME): этот вариант AdaBoost позволяет использовать несколько слабых учеников в каждой итерации. Он обновляет веса экземпляров в каждой итерации на основе точности их классификации по отношению к взвешенному большинству голосов моделей.
Преимущества:
- Можно повысить точность модели, используя несколько слабых учеников на каждой итерации.
- Хорошо работает для задач классификации нескольких классов.
- Может быть быстрее, чем традиционный AdaBoost, поскольку для сходимости требуется меньше итераций.
Недостатки:
- Может быть менее устойчивым к зашумленным данным, чем традиционный AdaBoost.
- Может быть чувствителен к переоснащению, если количество используемых моделей слишком велико.
- Может быть менее интерпретируемым, чем традиционный AdaBoost.
3. Настоящий AdaBoost. В этом варианте AdaBoost используется более сложный слабый ученик, такой как дерево решений с несколькими узлами, а не простой слабый ученик, такой как пень.
Преимущества:
- Можно повысить точность модели, используя более сложный слабый ученик.
- Может обрабатывать нелинейные границы решений.
Недостатки:
- Может быть дорогостоящим в вычислительном отношении, особенно при использовании более сложного слабого ученика.
- Может быть чувствителен к переоснащению, если слабый ученик слишком сложен или количество итераций слишком велико.
- Может быть менее интерпретируемым, чем традиционный AdaBoost.
4. AdaBoost.RT: этот вариант AdaBoost разработан специально для задач регрессии и работает путем подгонки деревьев решений к остаткам предыдущей модели.
Преимущества:
- Специально разработан для задач регрессии, что делает его более подходящим для этих типов задач.
- Может обрабатывать нелинейные отношения между входными объектами и целевой переменной.
Недостатки:
- Может быть дорогостоящим в вычислительном отношении, особенно когда количество итераций велико или количество входных функций велико.
- Может быть чувствителен к переоснащению, если глубина деревьев решений слишком велика.
- Может потребоваться дополнительная настройка гиперпараметров, чем при использовании традиционного AdaBoost.
5. BrownBoost: это вариант AdaBoost, в котором используется функция потерь, отличная от традиционной экспоненциальной функции потерь, используемой в AdaBoost. Он использует функцию потерь на основе маржи, которая оказалась более устойчивой к зашумленным данным.
Преимущества:
- Более устойчив к зашумленным данным, чем традиционный AdaBoost.
- Может обрабатывать нелинейные границы решений.
- Может быть быстрее, чем традиционный AdaBoost.
Недостатки:
- Менее широко используется, чем традиционный AdaBoost.
- Может потребоваться дополнительная настройка гиперпараметров, чем при использовании традиционного AdaBoost.
- Может быть менее интерпретируемым, чем традиционный AdaBoost.
Источник кодаe:
Если вам интересно, как работают алгоритмы машинного обучения и как их можно использовать для решения реальных задач, например, для анализа рисков или прогнозирования цен на акции, читайте мои посты!