Введение в XGBoost: открытие черного ящика древовидных моделей

искусственный интеллект
Введение в XGBoost: открытие черного ящика древовидных моделей

Автор: Byte Mobile Technology - Сюй Яокун

Прежде всего, давайте проясним, что XGBoost — это метод обучения для обучения модели дерева решений.Если быть точным, это метод обучения модели ансамбля деревьев.Здесь модель ансамбля деревьев транслируется в модель ансамбля деревьев.

Например

img

Вот простой набор данных, абсцисса представляет дозу препарата, зеленый цвет указывает на то, что препарат эффективен, а красный цвет указывает на то, что препарат неэффективен.

Сначала дается модель дерева решений, полученная после обучения,

img

Каждый неконечный узел здесь является условием оценки, потому что набор данных относительно прост, здесь есть только одна оценка функции, и в процессе фактического использования будет несколько функций. Каждый листовой узел имеет соответствующий вес.Обратите внимание, что начальная вероятность предсказания установлена ​​​​на 0,5, то есть, когда мы ничего не знаем в начале, вероятность того, что лекарство считается эффективным в дозе, равна 0,5, и тогда дерево дает То, что получается, является смещением относительно первоначального предположения.Например, когда Dosage

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

Вероятно, с этим простым примером, вот простой математический вывод.

теоретическая часть

модель ансамбля деревьев

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

Вот формальное определение оригинальной статьи.

учитывая набор данныхD\mathcal{D}, набор данных имеетnnтренировочные данные, каждые данные имеютmmхарактеристика,

D={(xi,yi)}(D=n,xiеRm,yiеR)\mathcal{D} = \{(x_{i}, y_{i})\}(|\mathcal{D}|=n, x_{i}\in\mathbb{R}^{m}, y_{i}\in\mathbb{R})

интегрированныйKKМодель древовидного ансамбля отдельных деревьев решений может быть выражена как

yi^=ф(xi)=k=1Kfk(xi),fkеF\hat{y_{i}} = \phi(x_{i})=\sum_{k=1}^{K}f_{k}(x_{i}), f_{k}\in\mathcal{F}

здесьfk()f_k(\cdot)представляет результат прогнозирования дерева решений для ввода,F\mathcal{F}представляет все возможные деревья решений. Здесь следует отметить, что дерево решений состоит из двух аспектов: во-первых, это форма дерева, то есть, как оно выглядит, сколько у него ветвей и насколько оно глубоко, а во-вторых, это вес дерева. дерево, соответствующее листовым узлам. Во время вывода дерево решений делит тестовые выборки на соответствующие листовые узлы, а вес этого листового узла является оценкой тестовых выборок под деревом решений, то есть здесьfk(xi)f_{k}(x_{i}).

Как обучить модель ансамбля деревьев

Обучение модели заключается в определении параметров модели, а в контексте XGBoost — в определении формы дерева решений и весов конечных узлов дерева решений.

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

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

L(ф)=il(yi^,yi)+kОм(fk)\mathcal{L}(\phi)=\sum_{i}l(\hat{y_{i}},y_{i})+\sum_{k}\Omega(f_{k})
Ом(f)=γT+12λю2\Omega(f)=\gamma T+\frac{1}{2}\lambda||\omega||^{2}

вL()\mathcal{L}(\cdot)называется функцией потерь, видно, что функция потерьф\phiФункция , обратите внимание здесьф\phiявляется моделью ансамбля деревьев. первый пунктil(yi^,yi)\sum_{i}l(\hat{y_{i}},y_{i})Представляет разницу между прогнозируемым значением модели и истинным значением, второй членkОм(fk)\sum_{k}\Omega(f_{k})Представляет собой накопление сложности всех деревьев, вОм(f) \Omega(f)В расширении ,TTпредставляет количество листовых узлов в дереве,ю\omegaПредставляет сумму весов всех конечных узлов дерева.

Проще говоря, для заданного входаxix_{i}, модель будет иметь соответствующий выводф(xi)\phi(x_{i}). Учитывая функцию потерь, мы получаемL(ф(xi))\mathcal{L}(\phi(x_{i})), с помощью метода нахождения минимального значения в математике можно получить соответствующееф\phiпараметр.

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

Gradient Tree Boosting

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

Учитывая функцию потерь алгоритма дерева с градиентным усилением,

L(t)=i=1nl(yi,yi^(t1)+ft(xi))+Ом(ft)\mathcal{L}^{(t)} = \sum_{i=1}^{n}l(y_{i}, \hat{y_{i}}^{(t-1)}+f_{t}(x_{i}))+\Omega(f_{t})

Функция потерь здесь представляет собой рекурсивную формулу.Отличие от функции потерь, описанной в предыдущем разделе, заключается в том, что предыдущее прогнозируемое значение равноyi^\hat{y_{i}}, параметрами целевой оптимизации являются параметры всех деревьев решений, а прогнозируемое значение здесь равноyi^(t1)+ft(xi)\hat{y_{i}}^{(t-1)}+f_{t}(x_{i}), то есть результат предсказания первого t-1 дерева плюс результат предсказания t-го дерева, а параметры целевой оптимизации являются параметрами t-го дерева.

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

XGBoost

После указания нормального дерева повышения градиента XGBoost использует расширение Тейлора для аппроксимации рекурсивной функции потерь, а затем решает параметры модели ансамбля деревьев.

L(t)\mathcal{L}^{(t)}относительноft(xi)f_{t}(x_{i})функция , здесь дляL(t)\mathcal{L}^{(t)}Выполните разложение Тейлора, чтобы получить

L(t)i=1n[l(yi,y^(t1))+gift(xi)+12hift2(xi)]+Ом(ft)\mathcal{L}^{(t)} \simeq{\sum_{i=1}^{n}[l(y_{i},\hat{y}^{(t-1)})+g_{i}f_{t}(x_{i})+\frac{1}{2}h_{i}f_{t}^{2}(x_{i})]+\Omega(f_{t})}

здесьgi=l(yi,y^(t1))y^(t1)g_{i}=\frac{\partial l(y_{i},\hat{y}^{(t-1)})}{\partial \hat{y}^{(t-1)}},hi=2l(yi,y^(t1))y^(t1)2h_{i}=\frac{\partial ^{2}l(y_{i},\hat{y}^{(t-1)})}{\partial \hat{y}^{(t-1)^{2}}},Сейчасl(yi,y^(t1))л (у_ {я}, \ шляпа {у} ^ {(т-1)})правильноy^(t1)\hat{y}^{(t-1)}Первая и вторая производные от . С помощью разложения Тейлора функция потерь преобразуется в квадратичную функцию, причем коэффициент при квадратичном члене здесь положительный, что позволяет легко найти минимальное значение функции.

объясни еще разft(xi)f_{t}(x_{i})означает первыйiiввод вttвывод на дереве, где верхняя граница знака суммированияnnУказывает общее количество выборок в наборе обучающих данных.

В этом месте наша цель - решитьft()f_t(\cdot), появляется в виде переменной в приведенной выше формуле, а в квадратичной функции принимает экстремальное значение на оси симметрии. Для простоты постоянный член равенft()f_t(\cdot)Удалите неактуальные элементы.

L(t)i=1n[gift(xi)+12hift2(xi)]+Ом(ft)\mathcal{L}^{(t)} \simeq{\sum_{i=1}^{n}[g_{i}f_{t}(x_{i})+\frac{1}{2}h_{i}f_{t}^{2}(x_{i})]+\Omega(f_{t})}

Как было сказано выше, решениеft()f_t(\cdot)В основном есть две широты, одна - форма дерева, а другая - вес листовых узлов дерева. Математическое выражение здесь таково,

i=1nft(xi)=j=1TiеIjюj\sum_{i=1}^{n}f_t(x_i) = \sum_{j=1}^{T}\sum_{i\in{I_j}}\omega_{j}

Смысл левой части уравнения очевиден, то есть все отсчеты находятся в первойttСумма выходных данных по дереву, правая часть уравнения выражает это значение по-другому, первый символ суммирования представляет все листовые узлы, а второй символ суммирования представляет набор отсчетов, которые присвоены каждому конечному узлу,{iiеIj}\{i|i\in{I_j}\}значит быть назначеннымjjПример набора конечных узлов.юj\omega_{j}представительjjвес каждого листового узла. Можно понять, какой листовой узел, которому назначен образец, представляет структуру дерева.

Принимая это уточненное выражение в приближенную функцию потерь разложения Тейлора, мы получаем,

Ltj=1T[(iеIjgi)wj+12(iеIjhi+λ)wj2]+γT\mathcal{L}^{t} \simeq{\sum_{j=1}^{T}[(\sum_{i\in{I_{j}}}g_i)w_j+\frac{1}{2}(\sum_{i\in{I_{j}}}h_i+\lambda)w_j^{2}]}+\gamma T

Учитывая структуру дерева здесь, мы можем вывести оптимальное решение веса каждого листового узла при приближенных условиях, когда структура данного дерева неявна в{iiеIj}\{i|i\in{I_j}\}В наборе, поскольку этот набор необходимо зафиксировать во время расчета по приведенной выше формуле, можно рассчитать следующий шаг.

Оптимальное решение записывается как

wj*=iеIjgiiеIjhi+λw^{\ast}_{j}=-\frac{\sum_{i\in{I_{j}}}g_{i}}{\sum_{i\in{I_{j}}}h_{i}+\lambda}

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

Так как же определить структуру дерева?

One of the key problems in tree learning is to find the best split. In order to do so, a split finding algorithm enumerates over all the possible splits on all the features.

Ответ - перечисление.Если вы хотите разбить узлы в узле, какие сэмплы должны быть разделены влево, а какие узлы должны быть разделены вправо, XGBoost сортирует все сэмплы по определенному признаку, а затем делит их, чтобы определить структура дерева перебирается и минимальное значение потерь рассчитывается как оптимальная структура.

учебный пример

Рисунок в начале статьи представлен таблицей,

Drug Dosage Effectiveness gig_{i} hih_{i}
4 0 -0.5 0.75
9 1 0.5 0.25
11 1 0.5 0.25
17 0 -0.5 0.75

Прежде всего видно, что начальное прогнозируемое значение для всех выборок равно 0,5, что соответствует приведенной выше формулеy^(t1)\hat{y}^{(t-1)}, метка отрицательного образца равна 0, а метка положительного образца равна 1, что соответствует приведенной выше формулеyiy_{i}, в самом начале обучения все образцы находятся на листовых узлах.

На рисунке показано состояние листовых узлов в начале обучения, все обучающие выборки находятся на листовых узлах, а листовые узлы представлены своими характеристиками (Drug Dosage):

img

Подставляем данные в расчетwj*w^{\ast}_{j}Вычислите вес листового узла в формуле, а затем поднесите соответствующийLt\mathcal{L}^{t}В формуле получен убыток в это время, а регулярное направление убрано для удобства расчета, т. е.γ=0\gamma =0,получитьLt=0\mathcal{L}^{t}=0.

Сначала мы пытаемся разделить признаки от доз менее 15, поэтому мы получаем следующее дерево:

img

В это время потеря этого дерева равна потере левого поддерева плюс потеря правого поддерева.Подставьте данные, чтобы получитьLt=1.33\mathcal{L}^{t}=-1.33, потери уменьшаются, и мы решаем, что разбиение этого узла лучше, чем то, что все узлы находятся на корневом узле.

Затем перебрать по очереди, найти уменьшение потерь в случае Dosage

Остальные деревья обучаются таким же образом, но вместо 0,5 начальное предположение равно 0,5 плюс сумма предсказаний всех предыдущих деревьев.

Note

  1. Большинство формул в тексте взяты из оригинальной статьи, но следующие формулы добавлены автором, надеюсь, это будет полезно для вывода и понимания формул
i=1nft(xi)=j=1TiеIjюj\sum_{i=1}^{n}f_t(x_i) = \sum_{j=1}^{T}\sum_{i\in{I_j}}\omega_{j}
  1. Решение производной первого порядка и производной второго порядка функции потерь задачи классификации в статье опущено, если интересно, можете прочитать.здесь.
  2. В дополнение к использованию расширения второго порядка расширения Тейлора для поиска экстремального значения, XGBoost имеет в своей реализации множество алгоритмов и оптимизаций на аппаратном уровне, которые перечислены ниже:
  • Используйте параллельную стратегию для разделения решений для каждой функции: сначала отсортируйте каждую функцию, потому что разделение функций в разных местах независимо (например, две точки разделения Dosage

  • Стратегия кэширования градиентных данных: в исходных данных выборки не хранятся в порядке собственных значений или для разных собственных значений хранение выборок не является непрерывным. Тогда при вычислении функции потерь при взятии соответствующей производной первого порядка и производной второго порядка обращение к памяти не является непрерывным. Когда XGBoost будет реализован, он поместит необходимые данные градиента в дополнительную память и будет использовать предварительную выборку и кэширование для повышения скорости попадания в кэш, тем самым повышая скорость ввода-вывода данных.

  • Стратегия децентрализованной памяти: например, для достижения децентрализованных вычислений иногда объем данных слишком велик для запуска на одной машине, данные делятся на разные блоки, а затем все блоки сохраняются на диске. В процессе вычислений используется отдельный поток для предварительной выборки данных на диске, чтобы гарантировать, что операция и выборка данных могут выполняться одновременно.

Reference

  1. оригинальная бумага
  2. пример источника

О команде мобильной платформы Byte

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

Это снег!Клиент/Внешний интерфейс/Сервер/Конечный интеллектуальный алгоритм/Разработка тестовНайм по всему миру!Давайте использовать технологии, чтобы изменить мир вместе, заинтересованные могут обращаться по электронной почтеchenxuwei.cxw@bytedance.com,Тема письмаРезюме - Имя - Цель работы - Предполагаемый город - Телефон.