Часть 2: Визуализация, интуиция и практическая демонстрация повышения градиента

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

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

Https://medium.com/@palash.jhr/gradient-boosting-a-birds-eye-view-into-widely-used-ml-algorithm-a95db080d256

В типичной задаче регрессии, где функцией потерь является среднеквадратическая ошибка (MSE), выполняются следующие уравнения:

Обратите внимание, что я умножил 1/2 на квадрат потерь, что никоим образом не влияет, поскольку минимизация потерь в квадрате аналогична минимизации половины квадратов потерь.

Как объяснялось в моей предыдущей статье



Регионы определяются оптимизацией,

и прогноз дается путем оптимизации,

если функция потерь - MSE, как в этом случае, тогда

Таким образом, уравнение (B) теперь можно записать как:

Теперь каждый экземпляр «i» будет принадлежать определенной области Rj (конечный лист дерева), и для каждого Rj будет значение прогноза. Эти значения представляют собой γj, полученные с помощью уравнения (C), и T (x, ʘ), полученные с помощью уравнения (A). Поскольку оба уравнения (A и C) оптимизируют квадрат функции потерь для каждой области,

Можно сказать, что

γj = T (xi, ʘ) для i ͼ Rj

Таким образом, уравнение (C) теперь можно записать как:

где,

T (x, ʘ) - прогнозируемое значение области.

Итак, теперь следующие целевые функции оптимизации для выращивания следующего дерева:

Для поиска оптимального региона

И

Для оценки прогноза для региона.

Эти уравнения (A и E) аналогичны выращиванию дерева решений. Однако обратите внимание, что здесь последующие деревья выращиваются на отрицательном градиенте (-gi), который равен остатку (из уравнения 2) от предыдущей базовой оценки.

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

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

Вот график образцов данных, которые я использовал для демонстраций в этой статье:

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

1. Подобрать первое дерево решений, используя объясняющую переменную x и переменную отклика y.

2. Оцените остатки из первого дерева решений (resd_1) и подгоните второе дерево решений, используя объясняющую переменную как x и переменную ответа как resd_1.

Суммируйте прогнозы из первого дерева решений и второго дерева решений, чтобы получить общий прогноз.

3. Оцените остатки из второго дерева решений (resd_2) и подгоните под третье дерево решений, используя объясняющую переменную x и переменную ответа как resd_2.

Суммируйте прогнозы из первого, второго дерева решений и третьего дерева решений, чтобы получить общий прогноз.

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

после выполнения процедуры, описанной выше, были получены следующие результаты

Соответствие модели при количестве деревьев в ансамбле 1

Соответствие модели при количестве деревьев в ансамбле 2

Подходит модель при количестве деревьев в ансамбле 3

Соответствие модели при количестве деревьев в ансамбле 4

Можно видеть, что каждая оценка соответствует остатку от предыдущей оценки, и их совокупность постепенно соответствует исходным данным.

Scikit Learn: реализация повышения градиента

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

Используемые гиперпараметры:

скорость обучения = 0,1

max_depth = 2

n_estimators = 250

Вот график MSE по сравнению с количеством установленных деревьев:

Видно, что MSE изгибается около 100 деревьев. Хотя MSE уменьшается по мере увеличения количества деревьев, но продолжать увеличивать количество деревьев будет неразумно. (Причина этого - возможность чрезмерной подгонки данных, компромисс отклонения отклонения, который будет обсуждается в разных статьях)

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

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

Ниже я показал, как ансамбль из разного количества деревьев соответствует данным для реализации scikit-learn.

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

Повышение градиента очень гибкое и часто очень хорошо выполняет различные задачи машинного обучения (как классификацию, так и регрессию). Существует широкий спектр гиперпараметров (см. Документацию по sklearn), которые необходимо настроить, что может создать некоторые проблемы для новичков. Однако в sklearn доступны различные методологии выбора модели, такие как GridsearchCV, RandomizedSearchCV и т. Д., Которые можно изучить для точной настройки алгоритма.

Выбор функции потерь также является важным параметром для выбора. Существует множество функций потерь, которые можно использовать. Некоторые примеры: экспоненциальная (классификация), отклонение (классификация), наименьшее абсолютное отклонение (регрессия), MSE (регрессия). Использование другой функции потерь приведет к разной производительности алгоритма. Например, если мы используем экспоненциальную функцию потерь, то повышение градиента будет таким же, как алгоритм AdaBoost. Даже когда выбрана экспоненциальная функция потерь, повышение градиента вызывает алгоритм SAMME.R, который используется в классификаторе AdaBoost.

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