Вау, я рад, что наконец понял это ❤.

Начиная с нашего понимания AdaBoost.

Адабуст

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

Теперь Gradient Boosting работает таким же образом, но есть разница.

  • Где вместо маленького пня GBM строит полное дерево (часто ограниченное глубиной). Ошибка расчета = прогнозируемое значение - фактическое значение. Обратите внимание, что прогнозируемое значение в первой итерации является средним значением всех целевых переменных (т. е. мы начинаем с дерева с одним узлом).
  • Позже вместо использования ошибок в качестве весов эти ошибки берутся в качестве целевой переменной для построения нового дерева решений (таким образом, что все ошибки с одинаковыми значениями группируются вместе).
  • После завершения этого мы получаем среднюю ошибку для каждого листа.
  • Следуя каждому пути дерева решений, мы прогнозируем фактическую целевую переменную, добавляя эту ошибку к нашему прогнозу на первом этапе (то же самое, что и среднее значение в первой итерации).
  • Обратите внимание, что простое добавление средней ошибки к прогнозируемому значению приведет к переоснащению. Поэтому вместо этого мы придаем вес, называемый скоростью обучения, нашему члену ошибки. Таким образом, в сумме получается Новый прогноз = Старый прогноз + скорость обучения * средняя ошибка.
  • Мы повторяем все вышеперечисленные шаги до количества итераций.
  • Обычно при построении деревьев ошибок на каждом этапе получаются разные деревья, но это нормально. Ошибки в каждой итерации будут уменьшаться после добавления нового дерева ошибок, показывая, что мы замедляемся, двигаясь к нашему наиболее желаемому прогнозу.

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

Окончательный результат F_{M}(x) — это требуемый прогноз, которого мы достигли на M итерации после построения M деревьев остатков.

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

1/2(прогноз — факт)². Это можно увидеть, чтобы вычислить F0 как среднее значение всех наблюдений. И gamma(jm) быть средним остатком в листе Jm.

Классификация

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

GBM работает аналогичным образом с изменениями

  • Начните с F0, как log(шансы), скажем, log(#1/#0), где #1: количество наблюдений с меткой 1.
  • Затем преобразуйте это в вероятность с помощью сигмовидной функции. то есть

  • Найдите остатки, такие как 1-S (log (шансы)) и 0-S (log (шансы)) для наблюдений с метками класса 1 и 0 соответственно.
  • Постройте дерево регрессии для этих остатков.
  • В отличие от регрессии GBM (т. е. усреднения остатков в каждом листе), нам необходимо некоторое преобразование этих остатков, прежде чем добавлять их в наш предыдущий прогноз (логарифмическая вероятность шансов в первой итерации). Самый распространенный из них

  • Мы вычисляем приведенное выше выражение для каждого листа остаточного дерева регрессии. Обратите внимание, что в первой итерации предыдущая вероятность будет такой же, как S(F0). Но это будет отличаться для каждого наблюдения в следующих итерациях.
  • Новые прогнозы теперь рассчитываются с использованием предыдущего логарифмического шанса + скорости обучения, умноженного выше выражения, на основе листа (дерева регрессии), в который попадает это наблюдение.
  • Прежде чем перейти к следующей итерации, мы преобразуем вышеприведенное в вероятность, снова используя сигмовидную функцию.
  • Эта конечная вероятность для данного наблюдения является начальной вероятностью F1 для этого наблюдения.
  • Повторите шаги для указанных итераций.

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

Обратите внимание, это можно настроить, чтобы получить

Начальное предсказание исходит из дифференцирования этой функции по логарифму (шансы) и нахождения логарифмических шансов, которые минимизируют эту функцию потерь. Получается, что F0 равно log(#1/#0), как было принято ранее.

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

Мы подходим к шагу © в приведенном выше алгоритме, где нам нужно найти гамму (jm), которая является оценкой для каждого листа. Обратите внимание, что после подтягивания функции потерь с параметрами, как в ©, мы получаем

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

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

После установки этого выражения в 0, как мы делаем, чтобы найти точку минимума, это дает нам

Вторая производная в знаменателе получается

Этот результат такой же, как мы использовали ранее

Итак, мы выполняем следующую итерацию, чтобы получить прогноз F1,

Используя сигмовидную функцию, мы получаем вероятность 1, если S(FM) > 0,5, и 0 в противном случае.

МОИ СОЦИАЛЬНЫЕ ПРОСТРАНСТВА

Инстаграм https://www.instagram.com/codatalicious/

LinkedIn https://www.linkedin.com/in/shaily-jain-6a991a143/

Медиа https://codatalicious.medium.com/

YouTube https://www.youtube.com/channel/UCKowKGUpXPxarbEHAA7G4MA

Ресурсы:

  1. https://www.youtube.com/watch?v=jxuNLH5dXCs&list=RDCMUCtYLUTtgS3k1Fg4y5tAhLbw&index=7
  2. https://www.youtube.com/watch?v=StWY5QWMXCw&list=RDCMUCtYLUTtgS3k1Fg4y5tAhLbw&index=8
  3. https://www.youtube.com/watch?v=StWY5QWMXCw&list=RDCMUCtYLUTtgS3k1Fg4y5tAhLbw&index=9