Хотя алгоритм повышения градиента зарекомендовал себя достойно в различных задачах классификации и регрессии, но он все еще остается черным ящиком для многих людей (меня), так что давайте разберемся с ним,

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

Алгоритм повышения градиента - это алгоритм обучения ансамбля. Он основан на сильной теоретической концепции последовательного комбинирования слабого предиктора для построения сильного предиктора. Здесь предиктором может быть любой алгоритм машинного обучения, такой как SVM, логистическая регрессия, KNN, дерево решений и т. Д. Но версия дерева решений для повышения градиента гораздо популярнее, чем любой вышеупомянутый алгоритм. Итак, в этом блоге мы также будем использовать дерево решений в качестве предсказателя. Также широко известен как алгоритм дерева градиентного повышения (GBDT).

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

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

Так как же функция Gradient Boosting делает это ????

Алгоритм повышения градиента, основанный на теории аддитивного моделирования. Он помогает алгоритму хорошо обобщать входные данные.

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

Аддитивное моделирование !!!

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

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

Итак, каковы будут ваши первые несколько шагов в угадывании уравнения кривой: если вы умен, то это будет ваше предположение:

  1. Перехват - 30.
  2. Наклон между двумя серыми точками равен -1.
  3. Периодический сигнал может иметь вид sin (x).

s o, ваше предположение будет , f (x) = x + sin (x) +30,

Рис. 1. - f (x) = 30

Рис. 2. - f (x) = x + 30

Рис. 3. - f (x) = x + sinx + 30

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

Давайте разберемся на том же примере шаг за шагом,

  1. Давайте возьмем функцию случайного предположения f⁰ (x_0) = 10,. После построения графика мы увидим, что наше первое предположение не является точным. Итак, то, что нам еще нужно сделать, рассчитывается с точки зрения потерь, то есть расстояния между фактическим и целевым ожиданием.
  2. Итак, мы рассчитаем убыток как L = f (x) -f¹ (x_0) = 20 + x + sin (x).
  3. Итак, мы должны определить другую функцию , которая может угадать кривую потерь L. Итак, другая функция может быть f¹ (L) = 20.
  4. Итак, комбинируя f⁰ и f ¹, мы получаем f ^ c = 20 + 10 = 30. После построения графика мы увидим, что наша догадка все еще не точна.
  5. Опять же, повторяя операцию в (2), мы рассчитаем потери как L = f (x) - f ^ c (x_0) = x + sin (x).
  6. Снова повторяя (3), мы должны определить другую функцию f ², которая может угадать кривую потерь L . Итак, другая функция будет f² (L) = x.
  7. Итак, комбинируя f⁰, f¹ и f², мы получаем f ^ c = 20 + 10 + x = x + 30 . После построения графика мы увидим, что наше первое предположение не является точным.
  8. Опять же, повторяя операцию (2), мы рассчитаем потери как L = f (x) - f ^ c = sin (x).
  9. Снова повторяя (3), мы должны определить другую функцию f ³, которая может угадать кривую потерь L . Итак, другая функция будет f³ (L) = sin (x)
  10. Итак, комбинируя f⁰, f¹, f² и f³, мы получаем f ^ c = 20 + 10 + x + sin (x) = sin ( х) + х + 30. После построения графика мы увидим, что наша догадка верна.

Разложение сложной функции на простые подфункции аналогично стратегии «разделяй и властвуй». Итак, из приведенного выше примера функция f разделена на подфункции f¹, f², f³.

Математически в аддитивном моделировании функция f может быть представлена ​​как,

f = f⁰ + f¹ + f² = сигма (f⁰ + f¹ + f²)

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

Алгоритм повышения градиента:

Шаг 1: Найдите минимальное значение, при котором ваша целевая переменная будет иметь минимальные потери. Таким образом, значение будет не чем иным, как средним значением вашей целевой переменной. Его можно записать как Fm_predicted

когда m = 0

F0_predicted (x) = mean (y)

Шаг 2 : Вычислите функцию стоимости и соответствующий ей градиент g.

L = (y-Fm_predicted (x)) ²

g = (y-Fm_predicted (x))

когда m = 0

L = (y-F0_predicted (x)) ²

g = (y-F0_predicted (x))

Шаг 3. Возьмите модель дерева решений H, введите градиент g в качестве входной переменной и спрогнозируйте целевую переменную v.

H = модель_дерева_решения (g)

Шаг 4: добавьте модель H, взвешенную с альфа-альфа.

F1_predicted = Fm_predicted + α * H

когда m = 0

F1_predicted = F0_predicted + α * H

Шаг 5: m = m + 1

Шаг 6. После повторения шагов 2, 3 и 4 мы получим F2_predicted

Шаг 7. Опять-таки, повторив шаги 2, 3 и 4, мы получим F3_predicted и так далее.

здесь m - номер слабого предиктора, который вы хотите выбрать. Значение m очень важно для контроля чрезмерной подгонки, оно определяется перекрестной проверкой.

Итак, F (x) = F⁰_predicted (x) + sigma (F ^ m_predicted (x)) от m = 1 до количества предикторов;

Я надеюсь, что это место в блоге сможет объяснить длину и широту алгоритма повышения градиента. Еще есть что рассказать об усилении и эффективных методах повышения, о них я расскажу в моей будущей статье. БЫТЬ В КУРСЕ!!!

Спасибо!!