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

Повышение градиента можно упростить тремя предложениями:

  1. Оптимизируемая функция потерь
  2. Слабый ученик, чтобы делать прогнозы
  3. Окончательная модель, которая добавляет этих слабых учеников, чтобы минимизировать потери и делать более точные прогнозы.

Наш алгоритм выглядит следующим образом:

Не волнуйтесь! Я подробно объясню каждый шаг на примере.

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

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

Примечание. Важно, чтобы наша функция потерь была дифференцируемой.

Шаг 1. Инициализируйте нашу модель с постоянным значением F0 (x)

F0(x) = argmin  [(1/2)(88-predicted)^2 + (1/2)(76-predicted)^2 +
          γ                          (1/2)(56 - predicted)^2 ]

Для решения задачи оптимизации мы устанавливаем градиент равным нулю и решаем

dL(yi,F0(x))
----------- = 0
F0(x)
-(88- predicted) - (76-predicted) - (56-predited) = 0
=> predicted = (88+76+56+3)/3  
=> F0(x) = 73.3

Шаг 2:

Это цикл, где M представляет общее количество деревьев. Обычно мы считаем M = 100, поэтому для каждого дерева мы делаем следующее.

2.1. Вычислите остатки psudo

Это производная функции потерь по прогнозируемому значению.

rim = -(observed - predicted)

так что у нас есть,

r11 = (88-73.3) = 14.6
r12 = (76-73.3) = 2.7
r13 = (56-73.3) = -17.3

Примечание. Алгоритм GBDT назван в честь этого псевдо-остатка, который равен отрицательному градиенту предсказания.

2.2 Подгоните базовое учащееся (дерево решений) к этим псудо-остаткам и назовите конечные листовые узлы как Rjm, где j = 1,2… .Jm

Здесь я создам дерево решений глубины 1 (пень), поскольку мой пример небольшой. Обычно для повышения градиента мы рассматриваем деревья решений большей глубины. Обычно мы не используем пни.

Предположим, это дерево решений, которое мы создали. Если вы не знаете, как построить дерево решений, вы можете обратиться к моей статье, в которой демонстрируется построение дерева решений с практической точки зрения. Пример. Теперь отметьте концевые области. Эта часть очень проста, потому что лист - это концевые области.

2.3. Для j = 1… .Jm вычислить γjm

На этом шаге мы вычислим выходное значение для каждого листа. Выходное значение каждого листа - это гамма-значение, которое минимизирует функцию потерь. Это похоже на шаг 1, где мы инициализировали F0 (x). Но на этом этапе мы учитываем наш предыдущий прогноз (Fm-1 (xi)).

xi элемент Rij означает все элементы в этом конкретном листовом узле. Мы решим эту задачу оптимизации с помощью множителей Лагранжа.

Для левого листового узла R1,1

Теперь мы решаем гамму, используя цепное правило.

Аналогично решаем для листового узла R1,2

У нас есть y1 = 88, y2 = 76, Fm-1 (x1) и Fm-1 (x2) = 73,3, что является нашим предыдущим предсказанием.

Примечание. В задачах регрессии среднее значение остатков оканчивается значениями rjm.

Теперь у нас есть дерево решений как:

2.4. Обновить Fm (x)

Здесь, чтобы получить F1 (x), мы умножаем предыдущее предсказание на значения rjm листовых узлов, умноженные на скорость обучения. Здесь мы принимаем скорость обучения равной 0,1.

У нас есть наши новые прогнозы:

For x1, r11 = 73.3 + (0.1*-17.3) = 71.6
For x2, r21 = 73.3 + (0.1*8.7) = 74.2 
For x3, r21 = 73.3 + (0.1*8.7) = 74.2

Следующее дерево строится на основе этих прогнозов.

Фаза прогнозирования

Предположим, что наше обучение окончено, и мы хотим сделать прогноз для данных. Предположим, что мы построили 2 дерева решений, т. Е. M = 2. В реальном времени обычно M = 100.

Предположим, что у человека, который мы хотим предсказать вес, рост 1,3 и он мужчина.

Мы предсказали вес 73,3 + (0,1 * -17,3) + (0,1 * -15,6) = 70.

Теперь, я думаю, у вас есть четкое интуитивное представление о регрессии GBDT. Я написал эту статью, вдохновленную StatQuest с Джошем Стармером. Если концепция все еще неясна, вы можете сослаться на его видео, в которых она объясняется с дополнительными примерами. До тех пор, пока удачное машинное обучение!

Ссылка:

Https://www.youtube.com/watch?v=2xudPOBz-vs&list=PLblh5JKOoLUICTaGLRoHQDuF_7q2GfuJF&index=45

Https://en.wikipedia.org/wiki/Gradient_boosting