Понимание математической интуиции и реализация Gradient Boost для задачи классификации…!

📢ПРИМЕЧАНИЕ. Прежде чем читать эту статью, ознакомьтесь с моей статьей Интуиция и реализация градиентного повышения, часть 1, чтобы лучше понять алгоритм градиентного повышения, где мы использовали GBM для решения проблемы регрессии. Ссылка: https://medium.com/analytics. -vidhya/интуиция-и-реализация-ускорения-градиента-часть-1-1728eb463cf0»

💥Интуиция, стоящая за повышением градиента для классификации:

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

Мы будем использовать приведенный ниже набор данных, чтобы понять интуицию GBM, где мы собрали предпочтения попкорна от шести человек их возраста и их любимого цвета, чтобы предсказать, любят ли они фильм «Тролль 2».

ПРИМЕЧАНИЕ: когда Gradient Boost используется для прогнозирования дискретного значения, мы говорим, что используем Gradient Boost для классификации.

💛ШАГ 1- Рассчитайте логарифм (шансы) для целевой переменной:

Как и в Gradient Boost для регрессии, мы начинаем с листа, который представляет начальный прогноз для каждого человека.

Когда мы используем Gradient Boost для классификации, начальным прогнозом для каждого человека является журнал (шансы).

Итак, давайте посчитаем логарифм (вероятность) того, что кто-то любит Тролля 2. Так как четыре человека в наборе обучающих данных любят Тролля 2, а 2 человека — нет. Тогда логарифм (вероятность) того, что кто-то любит Тролля 2, составляет логарифм (4/2) = 0,7, который мы поместим в наш начальный лист. Итак, это наш первоначальный прогноз.

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

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

Мы получаем 0,7 в качестве вероятности любви к троллю 2 для всех выборок обучающих данных.

Поскольку вероятность любви к Троллю 2 больше 0,5, мы можем классифицировать всех в наборе обучающих данных как тех, кто любит Тролля 2.

📢ПРИМЕЧАНИЕ: хотя 0,5 является очень распространенным порогом для принятия решения о классификации на основе вероятности, мы могли бы так же легко использовать другое значение.

💙 ШАГ 2. Постройте дерево на основе ошибок предыдущего дерева.

Теперь классифицировать всех в наборе обучающих данных как тех, кто любит Тролля 2, довольно неубедительно, потому что двое из людей не любят фильм, как показано в приведенном ниже наборе данных. Запись 3 и 4 показывает, что им не нравится Тролль 2.

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

Остаток = (наблюдаемый-прогнозируемый)

Хотя математика проста, я думаю, что проще понять, что происходит, если мы нарисуем остатки на графике.

Ось y — это вероятность любви к троллю 2. Прогнозируемая вероятность любви к троллю 2 составляет 0,7, что показано пунктирной линией на изображении выше. Красные точки с вероятностью любви к троллю 2 = 0 представляют двух человек, которые не любят тролля 2 (образцы 3 и 4 набора обучающих данных), а синие точки с вероятностью любви к троллю 2 = 1. , представляет четырех человек, которые любят Troll 2 (образцы, исключая 3 и 4 набора обучающих данных). Другими словами, красная и синяя точки — это наблюдаемые значения, а пунктирная линия — это прогнозируемое значение.

📢ПРИМЕЧАНИЕ. Первая синяя точка представляет собой первую выборку набора обучающих данных, а вторая синяя точка представляет собой вторую выборку записи и т. д., а первая красная точка представляет собой третью выборку набора обучающих данных, а вторая красная точка представляет четвертую выборку набора обучающих данных.

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

Итак, для приведенного выше примера мы подставляем 1 для наблюдаемого значения (см. график выше) и 0,7 для прогнозируемого значения.

Остаток = (наблюдаемый-прогнозируемый)

= (1–0.7) =0.3

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

📢ПРИМЕЧАНИЕ. Используйте наблюдаемое значение как 0 для выборок 3 и 4 набора обучающих данных, чтобы получить остатки.

Теперь мы построим дерево, используя «Нравится попкорн», «Возраст» и «Любимый цвет» в качестве независимых переменных и «Остаток» в качестве зависимой переменной. Сформированное дерево представлено ниже.

ПРИМЕЧАНИЕ. Точно так же, как когда мы использовали Gradient Boost для регрессии, мы ограничиваем количество листьев, которые мы допустим в дереве. В приведенном выше дереве мы ограничиваем количество листьев до 3. На практике люди часто устанавливают максимальное количество листьев между 8 и 32.

Теперь давайте рассчитаем выходные значения для листьев. Образцы 1,5 и 6 идут на Третий лист. Образцы 2 и 3 идут на второй лист, а образец 4 идет на первый лист, как показано в приведенном выше дереве.

Когда мы используем Gradient Boost для регрессии, лист с одним остатком имел выходное значение, равное этому остатку. Напротив, когда мы используем Gradient Boost для классификации, ситуация немного сложнее. Это связано с тем, что прогнозы основаны на логарифме (шансы), а первый лист в приведенном выше дереве получен из вероятности. Таким образом, мы не можем просто сложить их вместе, чтобы получить новый прогноз логарифма (шансов) без какого-либо преобразования.

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

Числитель — это сумма всех остатков в листе, а знаменатель — это сумма ранее предсказанных вероятностей для каждого остатка, умноженная на 1, минус та же предсказанная вероятность.

Теперь воспользуемся формулой для расчета выходного значения первого листа Дерева. Поскольку у нас есть только один остаток в первом листе, то есть -0,7, мы заменяем числитель значением остатка, и, поскольку мы строим первое дерево, предыдущая вероятность относится к вероятности из начального листа, которая равна 0,7.

Теперь нам нужно вычислить выходное значение второго листа дерева. Поскольку у нас есть два остатка на втором листе, то есть 0,3 и -0,7, мы заменяем числитель на сумму обоих остаточных значений, и, поскольку мы строим первое дерево, предыдущая вероятность относится к вероятности из исходного листа, которая равна 0,7.

📢ПРИМЕЧАНИЕ. На данный момент предыдущие вероятности одинаковы для всех остатков, но это изменится, когда мы построим следующее дерево.

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

🧡ШАГ 3: Делайте прогнозы на основе полных данных тренировки.

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

Первоначально, когда образец проходит по начальному листу, прогноз логарифма (шансы) равен 0,7, а когда мы пропускаем образец по дереву, прогноз логарифма (шанса) равен

= 0.7+(0.8*1.4)

= 1.8

📢ПРИМЕЧАНИЕ. 0,7 в приведенном выше примере представляет собой логарифм (шансы) предсказания драгоценного листа, а 0,8 — это скорость обучения, такая же, как мы обсуждали в задаче повышения градиента для регрессии, а 1,4 — это результат третьего листа, поскольку образец, взятый выше, падает. в Третий лист.

Мы получили прогноз логарифма (шансов) как 1,8 для выборки, взятой выше. Теперь мы преобразуем прогноз журнала (шансов) в вероятность, используя приведенную ниже формулу.

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

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

Теперь повторите Шаг 2 и Шаг 3, пока Остатки не станут равными 0 или не будет достигнуто количество деревьев, которое вы запросили.

Ниже приведены остатки и дерево, которое мы получаем после выполнения шага 2.

Ниже приведено дерево, полученное с использованием «Нравится попкорн», «Возраст» и «Любимый цвет» в качестве независимых переменных и «Остатков» в качестве зависимой переменной, как показано на изображении выше.

И теперь нам нужно рассчитать выходные значения каждого листа, как мы сделали на шаге 2 выше. Поскольку у нас есть три листа в приведенном выше дереве. Выходное значение первого листа равно -2, выходное значение второго листа равно 0,6, а выходное значение третьего листа равно 2.

Теперь нам нужно протестировать все обучающие кортежи с помощью приведенной ниже модели — это третий шаг.

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

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

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

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

Прогноз начинается с листа, то есть 0,7, затем мы запускаем данные по первому дереву и добавляем масштабированное выходное значение 0,7+ (0,8 * 1,4), а затем мы запускаем данные по второму дереву и добавляем масштабированное выходное значение 0,7+ (0,8*1,4)+(0,8*0,6). Пожалуйста, внимательно посмотрите на модель 2 для понимания.

Лог(шансы) Прогноз того, что кто-то любит Тролля 2 = 0,7+(0,8*1,4) + (0,8*0,6)

= 2.3

Теперь нам нужно преобразовать прогноз логарифма (шансов) в вероятность, используя формулу, приведенную ниже.

Теперь прогнозируемая вероятность того, что человек любит Тролля 2, равна 0,9. Поскольку мы используем 0,5 в качестве порога для принятия решения о том, как классифицировать людей, а 0,9 > 0,5 мы будем классифицировать человека как человека, который любит тролля 2, как показано ниже.

💥Реализация с использованием Python для классификации.

Здесь мы используем набор данных радужной оболочки для задачи классификации.

Давайте обсудим в комментариях, если вы нашли что-то не так в посте или вам есть что добавить: P
Спасибо.

Кредиты и источники:

  1. Статквест
  2. www.Analyticsvidhya.com