Понимание повышения градиента и экстремального повышения градиента (XGBoost)
Повышение градиента
ГрадиентBoosting – это ансамблевая модель обучения. Модели ансамблевого обучения также называют слабыми учениками и обычно представляют собой деревья решений. В этом методе используются две важные концепции: градиентный спуск и усиление. Существует несколько вариантов Gradient Boosting, о которых мы поговорим позже в этой статье.
Экстремальное повышение градиента (XGBoost)
Название XGBoost относится к инженерной цели, заключающейся в расширении предела вычислительных ресурсов для алгоритмов форсированного дерева. Вот почему многие люди используют XGBoost.
Согласно официальной документации, XGBoost — это оптимизированная распределенная библиотека повышения градиента, разработанная с учетом высокой эффективности, гибкости и портативности. Он реализует алгоритмы машинного обучения в рамках структуры Gradient Boosting. XGBoost обеспечивает параллельное повышение дерева (также известное как GBDT, GBM), которое быстро и точно решает многие проблемы науки о данных.
XGBoost — это реализация деревьев решений с градиентным усилением, разработанных для обеспечения скорости и производительности.
Градиентный спуск
Градиентный спуск — это метод оптимизации, используемый для поиска наилучших параметров, которые минимизируют функцию стоимости модели. Он использует производные первого порядка, чтобы найти локальный минимум дифференциальной функции.
Повышение
Повышение — это двухэтапный метод обучения ансамблю. В Boosting мы используем подмножества набора данных для создания модели средней производительности, базовой модели. Затем мы обучаем базовую модель на большем наборе данных, чтобы повысить производительность модели.
Повышение — это последовательный метод обучения ансамбля, при котором мы обучаем несколько моделей одну за другой.
При повышении мы учимся на ошибках или недостатках предыдущей модели, чтобы улучшить следующую модель. Процесс продолжается до тех пор, пока мы не получим достойную пригодную для использования окончательную модель.
Мотивация: один слаб, вместе сила, лучше всего учиться на прошлом.
Как они работают?
И Gradient Boosting, и XGBoost можно использовать для задач классификации и регрессии. В этой статье мы рассмотрим обе эти проблемы.
Приведенные ниже шаги являются общими как для Gradient Boosting, так и для XGBoost. Мы рассмотрим различия позже в статье.
Классификация
давайте возьмем пример, чтобы понять, как XGBoost выполняет классификацию.
Набор данных
Здесь у нас есть простой набор данных с функциями, Зарплатой и Кредитом (B: Плохо, G: Хорошо, N: Нормально) и целевым Одобрением (1: Да, 0: Нет).
Шаг 1. Рассчитайте базовый выпуск
Примечание. Базовые выходные данные не являются выходными данными базовой модели. Нам нужен исходный результат для построения базовой модели.
Классификация: Вероятность каждого класса
Регрессия: среднее всех результатов
Поскольку у нас есть только два результата, 0 и 1, для этой задачи классификации вывод для каждого класса будет 0,5.
Шаг 2: Рассчитайте остаточную ошибку (R1)
Шаг 3: Создайте бинарное дерево решений
Давайте выберем функцию, скажем, Зарплату, и создадим бинарное дерево решений.
В XGBoost дерево решений всегда будет бинарным деревом решений, независимо от того, сколько категорий у нас есть для выбранной функции.
Зарплата — Вероятность
Шаг 4: Рассчитайте показатель сходства
Давайте посчитаем оценку сходства для каждого узла.
Вероятность
Гиперпараметр
Левый узел
Правый узел
Корневой узел
Шаг 5: Рассчитайте прибыль
Причина вычисления выигрыша состоит в том, чтобы выбрать наилучший признак для разделения для дерева решений. Здесь мы случайным образом начали с функции Зарплата, но в идеале мы рассчитываем прибыль для каждой из функций, а затем выбираем функцию с самой высокой прибылью.
Для построения дерева решений выбирается функция с наибольшим приростом.
Допущение. Мы можем рассчитать прибыль для кредита и сравнить ее с зарплатой, но для примера давайте просто предположим, что зарплата имеет более высокий прирост, чем кредит.
Шаг 6: Разверните дерево решений
Теперь мы добавим другие функции в наше дерево решений. Опять же, мы выберем функцию для разделения, рассчитаем сходство и усиление. Выберите функцию с самым высоким коэффициентом усиления для разделения.
Здесь у нас осталась только одна функция, Кредит, поэтому мы просто будем использовать ее.
Здесь важно отметить, что кредит имеет 3 категории: Хороший, Плохой и Нормальный. Но, как мы упоминали выше, дерево в XGBoost должно быть бинарным деревом решений, поэтому мы попробуем все комбинации хорошего, плохого и нормального, чтобы найти наилучшее разделение, используя сходство и усиление.
Левый узел
Разделение на плохое — хорошее и нормальное
Сходство
Прирост
Разделение на плохое и хорошее — нормальное
Сходство
Прирост
Мы рассчитаем Сходство и Прирост для комбинации Разделить по Плохо и Нормально — Хорошотакже. Пропускаю его для демонстрации.
Правый узел
Попробуйте также все комбинации на правом узле.
Предположение: предположим, что мы получили максимальное усиление для Разделить по Плохо — Хорошо и Нормально на левом узле. Так что мы пойдем с этим разделением.
Мы рассмотрели все функции, поэтому остановимся на этом. Это наша базовая модель.
XGBoost строит полное дерево решений, используя каждую функцию, и применяет обрезку для оптимизации и регуляризации. Мы увидим это позже в статье.
Шаг 7: Рассчитайте выпуск по базовой модели
Чтобы рассчитать результат базовой модели, мы будем использовать логарифмические шансы.
Лог шансов
Преобразует вероятность в шансы.
Наша начальная вероятность была 0,5.
Это наш базовый результат.
Шаг 8: Рассчитайте новые вероятности для каждой записи
Для каждой из записей мы рассчитаем новые вероятности. Новые вероятности можно рассчитать, используя приведенное ниже уравнение.
Новая вероятность
Чтобы увидеть пример, давайте посчитаем новую вероятность для первой записи.
Если мы пойдем по этому пути в нашем дереве решений, мы получим сходство для этой записи.
Итак, у нас есть,
- Сходство = 1
- Базовая модель O/P = 0
- Скорость обучения = 0,1
Подставив эти значения в наше уравнение, мы получим,
Аналогично рассчитаем новые вероятности для всех остальных записей. Допустим, мы получаем,
Шаг 9. Рассчитайте новую остаточную ошибку.
Итак, мы получаем,
Шаг 10: Повторите процесс
Мы создадим новое дерево решений, используя новую остаточную ошибку, и повторим процесс с шага 3 по шаг 9.
Следует отметить, что ранее мы использовали приведенное ниже уравнение для расчета новых вероятностей.
Мы немного изменим это уравнение, чтобы учесть все различные изменения, которые создает XGBoost.
Регрессия
давайте возьмем пример, чтобы понять, как XGBoost выполняет регрессию.
Набор данных
Здесь у нас есть набор данных с функциями, Exp и Gap с целевой Salary.
Шаг 1: Рассчитайте базовый выпуск
Примечание. Базовые выходные данные не являются выходными данными базовой модели. Нам нужен исходный результат для построения базовой модели.
Классификация: Вероятность каждого класса.
Регрессия: среднее всех результатов
Шаг 2: Рассчитайте остаточные ошибки
Шаг 3: Создайте бинарное дерево решений
Выберите функцию, например Exp, и постройте дерево решений. При создании дерева решений мы берем первую запись и функцию и пытаемся построить дерево.
Эксп. — Остаток
Разделить по опыту. = 2
Первая запись имеет Exp = 2. Поэтому мы будем использовать это условие для построения нашего дерева.
Разделить по опыту. = 2,5
Вторая запись имеет Exp = 2,5. Поэтому мы будем использовать это условие для построения нашего дерева.
Точно так же мы создадим деревья решений для всех других функций и каждой записи в этих функциях.
Шаг 4: Рассчитайте показатель сходства
Для каждого дерева решений выше мы рассчитаем сходство
Эксп. — Остаток
Разделить по опыту. = 2
Разделить по опыту. = 2,5
Аналогичным образом рассчитайте показатель сходства для всех остальных деревьев решений.
Шаг 5: Рассчитайте прибыль
Рассчитайте прибыль для каждого дерева решений.
Эксп. — Остаток
Разделить по опыту. = 2
Разделить по опыту. = 2,5
Среди всех деревьев решений мы выберем дерево, которое дает нам наибольший выигрыш.
Здесь мы видим Split By Exp. = 2,5 дает нам более высокий коэффициент усиления, чем другое дерево.
Предположим. Предположим, что мы разделяем по показателю. = 2,5 дает нам самый высокий коэффициент усиления среди всех возможных деревьев.
Шаг 6: Разверните дерево решений
Теперь мы добавим другие функции в наше дерево решений. Опять же, мы выберем функцию для разделения, а затем рассчитаем сходство и усиление. Выберите функцию с самым высоким коэффициентом усиления для разделения.
Здесь у нас осталась только одна функция, Gap, поэтому мы просто будем использовать ее.
Шаг 7: Рассчитайте выпуск по базовой модели
Чтобы рассчитать результат, мы просто возьмем среднее значение каждого листа дерева.
Шаг 8: Рассчитайте новое среднее значение для каждой записи
Новое среднее может быть рассчитано как
Итак, если мы будем следовать пути дерева решений для 1-й записи, у нас будет
- Базовая модель O/P (y’) = 51
- альфа = 0,5 (предположим)
- Листовой узел O/P = -10
Точно так же мы рассчитаем O/P для остальных записей.
Шаг 9: Рассчитайте новую остаточную ошибку
Шаг 10: Повторите процесс
Мы создадим новое дерево решений, используя новую остаточную ошибку, и повторим процесс с шага 3 по шаг 9.
Следует отметить, что ранее мы использовали приведенное ниже уравнение для расчета новых вероятностей.
Мы немного изменим это уравнение, чтобы учесть все различные изменения, которые создает XGBoost.
Краткое содержание
По сути, мы создаем несколько деревьев решений и используем остаток от предыдущего дерева для улучшения следующего дерева решений. Процесс будет продолжать повторяться, и мы увидим, как остатки уменьшаются. В конце концов мы получим модель с наименьшим остатком, и у нас будет наша окончательная модель.
Обрезка и значение покрытия
XGBoost использует эти методы, чтобы решить, следует ли дополнительно разделить узел или нет. Это обычная техника, используемая XGBoost и многими другими древовидными моделями, чтобы избежать переобучения.
Обрезка
Чтобы избежать переобучения, мы должны установить высокое значение лямбда.
Стоимость покрытия
Повышение градиента против XGBoost
Хотя и Gradient Boosting, и XGBoost работают одинаково, есть некоторые ключевые отличия, которые сильно влияют на производительность.
Оптимизация
Усиление градиента использует первую производную для оптимизации. Первая производная говорит нам, увеличивается функция или уменьшается, и насколько она увеличивается или уменьшается.
XGBoost использует вторую производную. Вторая производная говорит нам, увеличивается или уменьшается первая производная. Если вторая производная положительна, то первая производная возрастает.
Другими словами, точно так же, как первая производная измеряет скорость изменения исходной функции, вторая производная измеряет скорость изменения первой производной. Вторая производная поможет нам понять, как меняется сама скорость изменения исходной функции. Это помогает XGBoost собирать больше информации, вот почему экстремальной, о функции для лучшей оптимизации.
Регуляризация
XGBoost – это более регуляризованная форма повышения градиента. XGBoost использует расширенную регуляризацию (L1 и L2), которая улучшает возможности обобщения модели.
Мы уже узнали о преимуществе одного над другим выше. Давайте рассмотрим некоторые общие преимущества и недостатки этих алгоритмов.
Преимущества
- Эффективен с большими наборами данных.
- Модели не нуждаются в нормированных функциях и хорошо работают, если данные нелинейны, немонотонны или содержат отдельные кластеры.
- Высокая точность.
Недостатки
- Модели могут соответствовать данным, особенно если деревья слишком глубокие с зашумленными данными.
- Может быть дорогостоящим в вычислительном отношении из-за количества требуемых деревьев, часто слишком большого, что может быть исчерпывающим по времени и памяти.
Я надеюсь, что эта статья поможет вам лучше понять Gradient Boosting и XGBoost.
Если у вас есть какие-либо вопросы или вы обнаружите, что что-то искажено, пожалуйста, дайте мне знать.
Спасибо!