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

Процесс повышения дерева (математический обзор)

Давайте рассмотрим уравнение любого бустингового процесса.

Как мы знаем, заданный набор данных D = {(xi, yi)}
- n количество выборок (строк)
- m количество признаков (столбцов)

Y шляпа (предсказание) может быть идентифицирована функцией phi с входом xi, которая суммирует все выходные данные каждого дерева fk(xi) . (до К)

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

Регулярная цель обучения

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

  1. Классификация экземпляра (q)
    . CART классифицирует каждый экземпляр/образец на основе разделения, и все экземпляры окажутся в конечном узле.
  2. Добавить все веса узлов (w)
    . Каждому конечному узлу присвоен вес, и если бы мы вычислили общее значение определенной выборки x, она прошла бы через все созданные деревья. и просуммируйте все веса (пример. Ниже для расчета выбран мальчик. дерево1 имеет вес +2, а дерево2 +0,9. Суммирование двух даст 2,9)

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

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

Вопросы, которые могут возникнуть в связи с этим, будут

  1. Как узнать или получить веса для каждого конечного узла?
  2. Как узнать, достаточно ли хороша структура дерева? (качество) и поэтому оценивать их?

Ответ: с помощью функции потерь можно рассчитать эти два параметра.

Как видно из приведенного выше уравнения, Phi — это функция, а целевая функция (L) принимает параметр как функцию (phi). Это означает, что оптимизация в евклидовом пространстве невозможна (в евклидовом пространстве вводом функции обычно является числовой вектор).

Тогда как нам оптимизировать эту функцию потерь?
Решение: аддитивное обучение (повышение)

Y — это t-й прогноз, который можно интерпретировать как аддитивную процедуру, каждый раз создающую новую индивидуальную модель ( fk (xi) ), которая фокусируется на недостатках предыдущей модели (ft (xi) ) и добавляет ее к предыдущему прогнозу. . Метод создания новой модели будет создавать тот, который минимизирует вывод (ошибку) или функцию потерь (фи).

Поскольку функция phi представляет собой расчетную потерю для данной модели, и один из способов минимизировать ее — сузить разницу между истинным выходом y и прогнозом y hat.

Когда мы заменяем y в функции phi на приведенное выше уравнение (предыдущий прогноз + текущий результат модели), мы получаем следующее уравнение.

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

Уравнение выше представляет собой формулу, которая используется для применения расширения Тейлора к определенной функции f. Если мы применим эту формулу к фи-функции:

Предположим,
F = l( )
F(x) = l (yi, y hat (t-1))
X = (yi, y hat (t-1))< br /> Дельта x = ft (xi)

Другой простой метод исчисления u-подстановки применяется для того, чтобы gi представляла производную первого порядка F(X) и hj для представления производной второго порядка.

Уравнение можно еще упростить:

  1. Удаление функции потерь, потому что она будет иметь постоянную величину на выходе
  2. Разверните уравнение регуляризации и объедините нотацию суммирования (Примечание: регуляризация имеет суммирование по листу T (j → T), а левая часть уравнения, которое мы упростили, имеет суммирование по экземплярам (i → n ))
    - На основе свойств суммирования нотация должна повторяться по идентичным функциям (либо T, либо N). Требуется выбор одного над другим, и решение для этого должно быть сосредоточено на целевой функции.
  • Поскольку целевая функция получается с точки зрения деревьев, было бы оптимально выбрать суммирование по T.

3. Напомним, что f(x) = wj, поэтому мы можем заменить ft(xi) на wj

4. Дополнительное обозначение суммирования перед g и h представляет собой суммирование экземпляров (производных первого или второго порядка) в листе j.

Это казалось бы немного ненормальным, потому что мы должны были выбрать T вместо n, уравнение, которое было слева, должно было изменить свою форму, и в результате можно предположить, что смысл уравнения также изменился. Но можно было изменить обозначение, потому что даже после преобразования значение каждого компонента оставалось прежним.

Слева (до): суммирование производной первого порядка всех экземпляров и умножение их на выход модели t при вводе xi

Справа (после): суммирование всех листьев (j → T) и суммирование всех экземпляров (i → n) производной первого порядка экземпляров * выход модели t

  • Напомним: ft(xi) = wq(xi)

Чтобы визуализировать приведенное выше уравнение:

Например, у нас есть 100 экземпляров (выборок), которые прошли через дерево t, и, допустим, у левого конечного узла будет 70, а у правого — 30. Уравнение слева показывает, что мы просматриваем все 100 экземпляров и умножаем каждую их производную на результат модели (который также является весом).

Правое уравнение сначала суммирует все экземпляры в листе j, скажем, левый конечный узел с 70 экземплярами. Сначала мы просуммируем все производные экземпляра в левом узле, выполним те же вычисления для правого узла и просуммируем два в конце.

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

Уравнение снова упрощается с помощью метода подстановки:

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

Мы можем найти оптимальный вес, переформулировав приведенное выше уравнение так, чтобы оно равнялось x (Wj = x с помощью подстановки)

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

Окончательная форма этого уравнения представляет собой Оценку структуры дерева q.

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

Давайте посмотрим на иллюстрацию выше, каждый конечный узел будет иметь n экземпляров с соответствующими рассчитанными значениями (G и H). То, чего хочет модель (цель), состоит в том, чтобы уравнение имело низкое выходное значение, что достигается за счет того, что G²j / Hj + лямда имеет большее значение, поскольку перед суммированием стоит отрицательный знак. Следовательно, он может быть удовлетворен либо:

  1. Высокий G²j: производная первого порядка от l(yi, y hat i)
  2. Малый Hj: производная второго порядка от l(yi, y hat i)

Разделение дерева

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

XGBoost может использовать оценку структуры дерева, такую ​​как оценка примесей или прирост информации в других методах дерева.

Каким критерием принятия решения о разделении является Убыток от разделения. Модель хотела бы оценить на основе сокращения потерь, происходящих в результате разделения.
Уравнение можно интерпретировать как:

Оценка с левого узла + Оценка с правого узла - Оценка до разделения

* Объединение оценки двух дочерних узлов после разделения и оценки родительского узла до разделения будет представлять потери, которые уменьшаются в результате разделения. (Какое снижение потерь должно быть максимально высоким)
- Более подробное объяснение будет заключаться в том, что поскольку gi/hi + lambda должно быть как можно больше, чтобы показатель структуры был низким и, следовательно, когда два объединенных дочерних узла имеют большие значения, чем родительский узел, это будет означать, что сумма потерь уменьшилась из-за разделения.

Контроль переобучения

Поскольку XGBoost является очень конкретной и сложной моделью, она также подвержена переоснащению. Которым можно управлять через:

  1. Усадка

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

2. Подвыборка столбца

Тот же метод, что и в Random Forest, при выполнении разделения случайным образом выбирает определенное количество признаков.

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