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

Общая идея большинства методов бустинга состоит в последовательном обучении предикторов, каждый из которых пытается исправить своего предшественника. Существует много доступных методов повышения, но, безусловно, самыми популярными из них являются AdaBoost (сокращение от Adaptive Boosting) и Gradient Boosting.

Бэгинг VS. Повышение

На рисунке ниже одиночная модель представляет собой дерево решений, и у вас есть только один поезд модели для ваших данных, и все.

С помощью Бэггинга мы тренируем множество разных деревьев по отдельности, а затем объединяем их результаты (метод голосования или метод класса большинства).

Но в Boosting, как мы видим, мы будем запускать данные через одну модель (Дерево решений) и получать выходные данные из модели, а затем снова и снова переобучать нашу модель на основе выходных данных нашей предыдущей модели, и вот почему это последовательное обучение модели.

Повышение моделей

- Повышение — это статистическая структура, целью которой является минимизация потерь модели путем добавления слабых учеников с использованием процедуры, подобной градиентному спуску.

- Это позволяет использовать различные функции потерь, расширяя метод за пределы задач бинарной классификации для поддержки регрессии, многоклассовой классификации и многого другого.

Усиленные алгоритмы существуют для деревьев, а также являются общей процедурой, которую могут выполнять другие классификаторы. Например, по умолчанию для AdaBoost используются деревья решений, но мы можем изменить его и создать экземпляр другой модели, такой как KNN.

АдаБуст — Интуиция

В частности, интуиция AdaBoost такова: вы говорите мне, что не сработало, и я больше сосредотачиваюсь на этих неправильно классифицированных точках.

Как видно на следующем рисунке (сверху вниз, слева направо), по умолчанию используется дерево решений с максимальной глубиной, равной единице. Таким образом, вы получаете только один сплит. После разделения мы видим, что у нас есть 3 неправильно классифицированных балла (2 минуса и один плюс). Что он собирается сделать для следующей модели, так это взвесить эти точки выше, чтобы ваша следующая модель сосредоточилась на этих неправильно классифицированных точках и снова переобучила ваши классификаторы, и, как мы видим, у нас теперь есть 3 минуса как неправильно классифицированные точки и наши предыдущие ошибочно классифицированные точки классифицированы правильно. Этот классификатор будет повторять этот процесс снова и снова, просто много раз переориентируясь на любые неправильно классифицированные точки, а затем вы сможете агрегировать результаты.

Как работает АдаБуст?

AdaBoost — это ансамблевый метод, используемый для решения задач классификации.

1- Инициализируйте вес каждого из наблюдений

2- Установите базовый классификатор, такой как дерево решений.

3- Используйте этот классификатор, чтобы делать прогнозы на тренировочном наборе.

4- Увеличьте относительный вес экземпляров, которые были неправильно классифицированы

5- Обучите другой классификатор, используя обновленный вес

6- Объедините все классификаторы в один, взвесив их по точности.

Примечание: первый классификатор обучается с использованием случайного подмножества общего обучающего набора. Неправильно классифицированному элементу присваивается более высокий вес, чтобы он появился в обучающем подмножестве следующего классификатора с большей вероятностью.

Подготовка данных для AdaBoost

В этом разделе перечислены некоторые эвристики для лучшей подготовки ваших данных для AdaBoost.

- Качественные данные: поскольку ансамблевый метод продолжает пытаться исправить ошибки классификации в обучающих данных, необходимо следить за тем, чтобы обучающие данные были высокого качества. (Никаких неверных необработанных данных!)

- Выбросы: выбросы заставят ансамбль работать в кроличьей норе, чтобы исправить нереалистичные случаи. Их можно удалить из обучающего набора данных.

-Шумные данные: шумные данные, специфический шум в выходной переменной может быть проблематичным. Если возможно, попытайтесь изолировать и удалить их из набора обучающих данных.

Резюме AdaBoost

AdaBoost последовательно обучает классификаторы.

Пытается улучшить классификатор, просматривая неправильно классифицированные экземпляры.

Алгоритм больше взвешивает неправильно классифицированные экземпляры, поэтому они с большей вероятностью будут включены в подмножество обучающих данных.

Каждый классификатор взвешивается в зависимости от его точности, а затем все они объединяются для создания окончательного классификатора.

Плохо работает с очень зашумленными данными или данными с выбросами.

Adaboost может использовать любой тип модели классификации, а не только дерево решений.

Повышение градиента

Как и AdaBoost, Gradient Boosting последовательно оценивает набор деревьев и постепенно собирает набор деревьев, которые моделируют базовое поведение наших данных.

В отличие от Adaboost, Gradient Boost оценивает остатки предыдущего дерева и пытается их предсказать.

Повышение градиента за итерации

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

Раньше без повышения мы просто повторно взвешивали фактические точки данных, здесь вы просто регрессировали по остаткам.

Что-то, что вы в конечном итоге настраиваете с повышением градиента, — это то, сколько деревьев я должен создать. Существует очень распространенный график для любой модели повышения градиента.

Регрессия VS. классификация в Gradient Boosting

Регрессия

- Начните со слабого дерева

- Минимизировать целевую функцию (функцию стоимости), найдя остатки предшествующего дерева

- Создайте новое дерево, используя градиенты из предыдущего дерева.

Классификация

- Начните со слабого дерева

- Максимизируйте логарифмическую вероятность, вычислив частную производную логарифмической вероятности для всех объектов в наборе данных.

- Создайте новое дерево, используя эти градиенты, и добавьте его в свой ансамбль, используя заранее определенный вес, который является скоростью обучения градиентного спуска.