В этой статье вы узнаете, что такое повышение и как работает AdaBoost.
Что такое бустинг?
Повышение, также называемое повышением гипотез, представляет собой метод ансамбля, который объединяет несколько слабых учеников в одного сильного ученика. Основная логика повышения заключается в том, что каждая модель/обучаемый пытается исправить своего предшественника.
Существует много доступных методов бустинга, но наиболее часто используемые из них:
- АдаБуст.
- Повышение градиента.
АдаБуст
Как работает АдаБуст? как мы знаем о повышении, что учащиеся пытаются исправить своего предшественника, один из способов - уделить больше внимания тренировочным примерам, которые предшественник не подгонял.
В Adaboost каждому учебному экземпляру и каждому учащемуся/модели назначается вес. Позже в этом разделе мы рассмотрим, как назначаются и обновляются веса.
Например, для создания классификатора AdaBoost обучается первый базовый классификатор, который используется для прогнозирования обучающего набора. Затем увеличивается относительный вес ошибочно классифицированных обучающих примеров. Второй классификатор обучается с использованием обновленных весов и снова делает прогноз на обучающем наборе, веса обновляются и так далее.
На приведенном выше рисунке показаны границы решений пяти последовательных предикторов в наборе данных лун. Первый классификатор получает неверный прогноз после обучения тренировочного набора, поэтому мы увеличиваем их веса. Второй классификатор лучше справляется с этими экземплярами и так далее.
Как только все предикторы обучены, ансамбль делает прогнозы, очень похожие на мешки или вставки, за исключением того, что предикторы имеют разные веса в зависимости от их общей точности на взвешенном обучающем наборе.
Как назначаются и обновляются веса?
Давайте подробнее рассмотрим алгоритм Adaboost. Каждому весу экземпляра w(i) изначально присваивается значение 1/m (m — количество экземпляров). Первый предиктор обучается, и его взвешенная частота ошибок r1 вычисляется в обучающем наборе.
Взвешенная ошибка (r) является наиболее важным термином для нахождения весов модели/обучающихся и обновления весов.
Затем вес предиктораαj вычисляется с использованием приведенного ниже уравнения:
Где η — гиперпараметр скорости обучения (по умолчанию 1). Чем точнее предиктор, тем выше будет его вес. Если он просто угадывает наугад, то его вес будет близок к нулю. Однако если он чаще всего оказывается неверным (т. е. менее точным, чем случайное угадывание), то его вес будет отрицательным.
Затем веса экземпляров обновляются с использованием приведенного ниже уравнения, неправильно классифицированные экземпляры увеличиваются:
Затем все веса экземпляров нормализуются, т.е. делятся на сумму всех весов экземпляров.
Наконец, новый предиктор обучается с использованием обновленных весов, и весь процесс повторяется.
Чтобы делать прогнозы, AdaBoost просто вычисляет прогнозы всех предикторов и взвешивает их, используя веса предикторов αj. Прогнозируемый класс — это тот, который получает большинство взвешенных голосов.
Следующий код обучает классификатор AdaBoost на основе 200 пней решений с использованием класса AdaBoostClassifier Scikit-Learn (как и следовало ожидать, существует также класс AdaBoostRegressor). Пень решения — это Дерево решений с max_depth=1, другими словами, дерево, состоящее из одного узла решения и двух конечных узлов. Это базовая оценка по умолчанию для класса AdaBoostClassifier:
from sklearn.ensemble import AdaBoostClassifier ada_clf = AdaBoostClassifier( DecisionTreeClassifier(max_depth=1), n_estimators=200, algorithm="SAMME.R", learning_rate=0.5) ada_clf.fit(X_train, y_train)
Об авторе
Я Мустафа Сидхпури, мотивированный специалист по данным с опытом работы в качестве внештатного специалиста по данным. Увлечен созданием моделей, которые решают проблемы. Соответствующие навыки включают машинное обучение, решение проблем, программирование и творческое мышление.