Градиентный бустинг — это метод машинного обучения, основанный на бустинге в функциональном пространстве, где целью являются псевдоостатки вместо остатков , как в традиционном бустинге. Он дает модель прогнозирования в виде ансамбля слабых моделей прогнозирования, т. е. моделей, которые делают очень мало предположений о данных, которые обычно являются простыми деревьями решений . [1] [2] Когда дерево решений является слабым учеником, результирующий алгоритм называется деревьями градиентного бустинга; он обычно превосходит случайный лес . [1] Как и в других методах бустинга , модель деревьев градиентного бустинга строится поэтапно, но она обобщает другие методы, позволяя оптимизировать произвольную дифференцируемую функцию потерь .
Идея градиентного бустинга возникла из наблюдения Лео Бреймана , что бустинг можно интерпретировать как алгоритм оптимизации на подходящей функции стоимости. [3] Явные алгоритмы регрессионного градиентного бустинга были впоследствии разработаны Джеромом Х. Фридманом [4] [ 2] (в 1999 году и позднее в 2001 году) одновременно с более общей перспективой функционального градиентного бустинга Лью Мейсона, Джонатана Бакстера, Питера Бартлетта и Маркуса Фрина. [5] [6] В последних двух статьях был представлен взгляд на алгоритмы бустинга как на итеративные алгоритмы функционального градиентного спуска . То есть, алгоритмы, которые оптимизируют функцию стоимости по функциональному пространству путем итеративного выбора функции (слабая гипотеза), которая указывает в отрицательном направлении градиента. Этот функциональный градиентный взгляд на бустинг привел к разработке алгоритмов бустинга во многих областях машинного обучения и статистики за пределами регрессии и классификации.
(Этот раздел следует изложению Чэн Ли. [7] )
Как и другие методы усиления, градиентное усиление итеративно объединяет слабых "обучающихся" в одного сильного обучающегося. Это проще всего объяснить в условиях регрессии наименьших квадратов , где цель состоит в том, чтобы "научить" модель предсказывать значения формы путем минимизации среднеквадратической ошибки , где индексы по некоторому обучающему набору размера фактических значений выходной переменной :
Если алгоритм имеет этапы, на каждом этапе ( ), предположим, что некоторая несовершенная модель (для низкого , эта модель может просто предсказать , что будет , среднее значение ). Чтобы улучшить , наш алгоритм должен добавить некоторую новую оценку, . Таким образом,
или, что то же самое,
Следовательно, градиентный бустинг будет соответствовать остатку . Как и в других вариантах бустинга, каждый пытается исправить ошибки своего предшественника . Обобщение этой идеи на функции потерь , отличные от квадратичной ошибки, и на задачи классификации и ранжирования следует из наблюдения, что остатки для данной модели пропорциональны отрицательным градиентам функции потерь среднеквадратичной ошибки (MSE) (относительно ):
Таким образом, градиентный бустинг можно обобщить до алгоритма градиентного спуска , «подключив» другую потерю и ее градиент.
Многие задачи контролируемого обучения включают выходную переменную y и вектор входных переменных x , связанных друг с другом некоторым вероятностным распределением. Цель состоит в том, чтобы найти некоторую функцию , которая наилучшим образом приближает выходную переменную из значений входных переменных. Это формализуется путем введения некоторой функции потерь и минимизации ее в ожидание:
Метод градиентного усиления предполагает действительное значение y . Он ищет приближение в виде взвешенной суммы функций M из некоторого класса , называемых базовыми (или слабыми ) учениками:
Обычно нам дается обучающий набор известных значений x и соответствующих значений y . В соответствии с принципом минимизации эмпирического риска , метод пытается найти приближение , которое минимизирует среднее значение функции потерь на обучающем наборе, т.е. минимизирует эмпирический риск. Он делает это, начиная с модели, состоящей из постоянной функции , и постепенно расширяет ее жадным образом:
для , где — базовая функция обучения.
К сожалению, выбор лучшей функции на каждом шаге для произвольной функции потерь L является вычислительно невыполнимой задачей оптимизации в целом. Поэтому мы ограничиваем наш подход упрощенной версией проблемы. Идея состоит в том, чтобы применить шаг наискорейшего спуска к этой задаче минимизации (функциональный градиентный спуск). Основная идея состоит в том, чтобы найти локальный минимум функции потерь путем итерации по . Фактически, направление локального максимального спуска функции потерь является отрицательным градиентом. [8] Следовательно, перемещение на небольшую величину таким образом, чтобы линейное приближение оставалось действительным:
где . Для малых это означает, что .
Кроме того, мы можем провести оптимизацию , найдя значение, при котором функция потерь имеет минимум:
Если бы мы рассматривали непрерывный случай, т.е. когда — множество произвольных дифференцируемых функций на , мы бы обновили модель в соответствии со следующими уравнениями:
где — длина шага, определяемая как Однако в дискретном случае, т. е. когда набор конечен [ необходимо разъяснение ] , мы выбираем функцию-кандидат h, ближайшую к градиенту L , для которой коэффициент γ затем может быть вычислен с помощью линейного поиска по приведенным выше уравнениям. Обратите внимание, что этот подход является эвристическим и, следовательно, не дает точного решения данной задачи, а скорее приближения. В псевдокоде общий метод градиентного бустинга выглядит следующим образом: [4] [1]
Вход: обучающий набор с дифференцируемой функцией потерь и числом итераций M.
Алгоритм:
Градиентный бустинг обычно используется с деревьями решений (особенно CART ) фиксированного размера в качестве базовых обучающихся. Для этого особого случая Фридман предлагает модификацию метода градиентного бустинга, которая улучшает качество соответствия каждого базового обучающегося.
Общий градиентный бустинг на m -м шаге подгонит дерево решений к псевдоостаткам. Пусть будет числом его листьев. Дерево разбивает входное пространство на непересекающиеся области и предсказывает постоянное значение в каждой области. Используя индикаторную нотацию , выход для входного x можно записать как сумму:
где — прогнозируемое значение в регионе . [9]
Затем коэффициенты умножаются на некоторое значение , выбранное с помощью линейного поиска таким образом, чтобы минимизировать функцию потерь, и модель обновляется следующим образом:
Фридман предлагает модифицировать этот алгоритм так, чтобы он выбирал отдельное оптимальное значение для каждой из областей дерева, а не одно для всего дерева. Он называет модифицированный алгоритм «TreeBoost». Коэффициенты из процедуры подгонки дерева затем можно просто отбросить, и правило обновления модели становится следующим:
Число конечных узлов в деревьях — это параметр, который контролирует максимально допустимый уровень взаимодействия между переменными в модели. При ( пни решений ) взаимодействие между переменными не допускается. При этом модель может включать эффекты взаимодействия между двумя переменными и т. д. может быть скорректирована для имеющегося набора данных.
Хасти и др. [1] отмечают, что обычно хорошо подходит для усиления, а результаты довольно нечувствительны к выбору в этом диапазоне, недостаточны для многих приложений и вряд ли потребуются.
Слишком близкая подгонка обучающего набора может привести к ухудшению способности модели к обобщению, то есть ее производительности на невиданных примерах. Несколько так называемых методов регуляризации уменьшают этот эффект переобучения , ограничивая процедуру подгонки.
Одним из естественных параметров регуляризации является число итераций градиентного бустинга M (т.е. число базовых моделей). Увеличение M уменьшает ошибку на обучающем наборе, но увеличивает риск переобучения. Оптимальное значение M часто выбирается путем мониторинга ошибки прогнозирования на отдельном наборе данных проверки.
Другим параметром регуляризации для древовидного бустинга является глубина дерева. Чем выше это значение, тем больше вероятность того, что модель будет переобучать обучающие данные.
Важной частью градиентного усиления является регуляризация путем сжатия, которая использует модифицированное правило обновления:
где параметр называется «скоростью обучения».
Эмпирически было обнаружено, что использование малых скоростей обучения (таких как ) приводит к значительному улучшению обобщающей способности моделей по сравнению с градиентным бустингом без сжатия ( ). [1] Однако это достигается ценой увеличения времени вычислений как во время обучения, так и во время запросов : более низкая скорость обучения требует большего количества итераций.
Вскоре после введения градиентного бустинга Фридман предложил небольшую модификацию алгоритма, мотивированную методом бутстрап-агрегации ( «бэггинга») Бреймана . [2] В частности, он предложил, чтобы на каждой итерации алгоритма базовый обучающийся алгоритм подгонялся под подвыборку обучающего набора, взятую случайным образом без замены. [10] Фридман наблюдал существенное улучшение точности градиентного бустинга с этой модификацией.
Размер подвыборки — это некоторая постоянная доля размера обучающего набора. Когда , алгоритм детерминирован и идентичен описанному выше. Меньшие значения вносят случайность в алгоритм и помогают предотвратить переобучение , действуя как своего рода регуляризация . Алгоритм также становится быстрее, поскольку деревья регрессии должны подгоняться к меньшим наборам данных на каждой итерации. Фридман [2] получил , что приводит к хорошим результатам для небольших и средних по размеру обучающих наборов. Поэтому обычно устанавливается равным 0,5, что означает, что половина обучающего набора используется для построения каждого базового ученика.
Также, как и в случае с бэггингом, подвыборка позволяет определить ошибку вне мешка улучшения производительности прогнозирования путем оценки прогнозов по тем наблюдениям, которые не использовались при построении следующего базового ученика. Оценки вне мешка помогают избежать необходимости в независимом наборе данных для проверки, но часто недооценивают фактическое улучшение производительности и оптимальное количество итераций. [11] [12]
Реализации градиентного бустинга деревьев часто также используют регуляризацию, ограничивая минимальное количество наблюдений в терминальных узлах деревьев. Она используется в процессе построения деревьев, игнорируя любые разбиения, которые приводят к узлам, содержащим меньше этого количества экземпляров обучающего набора.
Введение этого ограничения помогает уменьшить дисперсию прогнозов на листьях.
Другой полезный метод регуляризации для градиентно-бустированной модели — штрафовать ее сложность. [13] Для градиентно-бустированных деревьев сложность модели можно определить как пропорциональное [ требуется уточнение ] число листьев в деревьях. Совместная оптимизация потерь и сложности модели соответствует алгоритму пост-обрезки для удаления ветвей, которые не могут уменьшить потери на пороговое значение.
Для предотвращения переобучения можно также использовать другие виды регуляризации, такие как штраф по значениям листьев .
Градиентный бустинг может использоваться в области обучения ранжированию . Коммерческие поисковые системы Yahoo [14] и Yandex [15] используют варианты градиентного бустинга в своих машинах ранжирования с машинным обучением. Градиентный бустинг также используется в физике высоких энергий при анализе данных. На Большом адронном коллайдере (БАК) варианты градиентного бустинга глубоких нейронных сетей (DNN) были успешны в воспроизведении результатов немашинных методов анализа на наборах данных, используемых для открытия бозона Хиггса . [16] Дерево решений градиентного бустинга также применялось в исследованиях Земли и геологии — например, в оценке качества песчаного резервуара. [17]
Метод имеет множество названий. Фридман представил свою технику регрессии как «Машину градиентного усиления» (GBM). [4] Мейсон, Бакстер и др. описали обобщенный абстрактный класс алгоритмов как «функциональное градиентное усиление». [5] [6] Фридман и др. описывают усовершенствование моделей градиентного усиления как деревья множественной аддитивной регрессии (MART); [18] Элит и др. описывают этот подход как «деревья усиленной регрессии» (BRT). [19]
Популярная реализация R с открытым исходным кодом называет ее «Обобщенной моделью усиления» [11] , однако пакеты, расширяющие эту работу, используют BRT. [20] Еще одно название — TreeNet, в честь ранней коммерческой реализации Дэна Стейнберга из Salford System, одного из исследователей, которые были пионерами в использовании методов на основе деревьев. [21]
Градиентный бустинг может использоваться для ранжирования важности признаков, которое обычно основано на агрегирующей функции важности базовых учеников. [22] Например, если алгоритм градиентного бустинга деревьев разработан с использованием деревьев решений на основе энтропии , ансамблевый алгоритм ранжирует важность признаков также на основе энтропии с оговоркой, что она усредняется по всем базовым ученикам. [22] [1]
Хотя усиление может повысить точность базового обучающегося, такого как дерево решений или линейная регрессия, оно жертвует понятностью и интерпретируемостью . [22] [23] Например, отслеживание пути, который проходит дерево решений для принятия решения, является тривиальным и самоочевидным, но отслеживание путей сотен или тысяч деревьев гораздо сложнее. Чтобы достичь как производительности, так и интерпретируемости, некоторые методы сжатия моделей позволяют преобразовать XGBoost в единое «возрожденное» дерево решений, которое аппроксимирует ту же функцию решения. [24] Кроме того, его реализация может быть более сложной из-за более высоких вычислительных требований.