В этой статье вы узнаете, что такое повышение и как работает AdaBoost.

Что такое бустинг?

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

Существует много доступных методов бустинга, но наиболее часто используемые из них:

  1. АдаБуст.
  2. Повышение градиента.

АдаБуст

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

В 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)

Об авторе

Я Мустафа Сидхпури, мотивированный специалист по данным с опытом работы в качестве внештатного специалиста по данным. Увлечен созданием моделей, которые решают проблемы. Соответствующие навыки включают машинное обучение, решение проблем, программирование и творческое мышление.