Градиентный бустинг – эффективный алгоритм преобразования относительно плохих гипотез Моделей (Model) в очень хорошие.
Происхождение
Идея бустинга (усиления) базируется на допущении, что изменить слабый предсказывающий алгоритм возможно. Слабый алгоритм определяется как гипотеза, чьи результаты немного лучше, чем случайные.
Идея усиления заключалась в том, чтобы фильтровать Наблюдения (Observation), оставляя те из них, с которыми может справиться слабый алгоритм, и сосредотачиваясь на развитии новых способностей, чтобы справиться с оставшимися трудными наблюдениями.
Идея состоит в том, чтобы использовать метод слабого обучения несколько раз, чтобы получить последовательность гипотез, каждая из которых перефокусируется на примерах, которые предыдущие сочли трудными и неверно классифицированными.
AdaBoost – первый бустинг-алгоритм
Первой реализацией бустинга, имевшей большой успех, была AdaBoost (Adaptive Boosting).
Слабые алгоритмы в AdaBoost – это Деревья решений (Decision Tree) с одним ответвлением, которые из-за краткости называются пнями решений. Адаптивное усиление работает путем взвешивания наблюдений, придавая больший вес трудно классифицируемым экземплярам и меньший – тем, которые уже хорошо обработаны. Последовательно добавляются новые слабые алгоритмы, которые сосредотачивают свое обучение на более сложных шаблонах.
Это означает, что записи, которые трудно классифицировать, получают все больший вес, пока алгоритм не определит модель, которая правильно классифицирует эти образцы.
Прогнозы делаются большинством голосов прогнозов слабых алгоритмов, взвешенных с учетом их индивидуальной точности. Самая успешная форма алгоритма – AdaBoost.M1 для задач Бинарной классификации (Binary Classification):
Обобщение AdaBoost как Градиентный бустинг
AdaBoost и связанные с ним алгоритмы были преобразованы в статистическую структуру сначала Брейманом, который назвал их алгоритмами ARCing (Adaptive Reweighting and Combining).
Эта структура была далее развита Фридманом и получила название "Машины градиентного бустинга" (или просто Gradient Boosting).
Статистическая структура рассматривает повышение как задачу численной оптимизации, цель которой состоит в том, чтобы минимизировать потери модели путем добавления слабых алгоритмов с использованием процедуры, подобной Градиентному спуску (Gradient Descent).
Этот класс алгоритмов был описан как поэтапная аддитивная модель. Это связано с тем, что за раз добавляется один новый слабый алгоритм, а существующие слабые алгоритмы в модели замораживаются и остаются без изменений.
Обобщение позволило использовать произвольные дифференцируемые Функции потерь (Loss Function), расширив методику за пределы задач двоичной классификации для поддержки Регрессии (Regression), Мультиклассовой классификации (Multi-Class Classification) и многого другого.
Градиентный бустинг и Scikit-learn
Давайте посмотрим, как работает адаптивный бустинг на примере SkLearn. Для начала импортируем необходимые библиотеки:
Сгенерируем игрушечный датасет на 1000 наблюдений с 4 признаками и сразу же запустим классификатор AdaBoost:
Настройки бустинга по умолчанию выглядят следующим образом:
Загрузим новое неизвестное наблюдение, состоящее из нулей, в модель и попросим ее классифицировать наблюдение:
AdaBoost считает, что запись относится к классу 1:
Узнаем, какого Скора (Score) добился наш бустинг:
98% – это прекрасный результат:
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
Фото: @mitchkmetz
Автор оригинальной статьи: Jason Brownlee
Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте курс «Введение в Машинное обучение» на Udemy.