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

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

Определение:

Бэггинг и бустинг - это два основных метода, используемых для построения ансамблевых деревьев решений. XGBoost - это алгоритм для создания таких ансамблей с использованием градиентного усиления на неглубоких деревьях решений.

Если мы правильно вспомним Gradient Boosting, мы бы вспомнили, что основная идея Gradient Boosting заключается в том, что он создает ансамбль, добавляя инкрементную модель к предыдущей модели на каждой итерации, которая создается путем моделирования остатков .

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

Псевдоалгоритм прилагается выше для удобства. Как вы можете видеть выше, в XGBoost мы подбираем дерево решений для вычисленных целевых значений и соответствующих (xi, yi ’), чтобы, скажем, получить J конечных узлов.

Представим каждый конечный узел как R ^ j (∀ j = 1,2,3,…, J). Для каждого конечного узла мы стремимся найти те значения α, для которых функция потерь между фактическим значением y и прогнозируемым значением y (заданным F (x) + α) является минимальной. Критерием остановки для модели XGBoost является близость градиентов к нулю.

Здесь у нас есть два гиперпараметра, которые при настройке сильно влияют на производительность модели XGBoost:

  1. λ: скорость обучения

Это также известно как усадка, которая используется для упорядочения модели. Значение скорости обучения варьируется от 0 до 1, с наиболее распространенным и широко используемым значением 0,01.

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

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

2. T: количество деревьев

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

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

Целевая функция = потеря обучения + регуляризация

Преимущества XGBoost:

  1. Этот алгоритм использует регуляризацию по умолчанию, что делает его наиболее оптимально сложным из имеющихся алгоритмов.
  2. XGBoost использует все ядра ПК, что позволяет ему выполнять параллельные вычисления, тем самым увеличивая скорость вычислений.
  3. Этот алгоритм достаточно эффективен, чтобы уловить тенденцию к отсутствию значений. Таким образом, нет необходимости обрабатывать отсутствующие значения в наборе данных, если кто-то планирует выполнить XGBoost.

Вывод:

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

Тем не менее, XGBoost превосходит все ограничения благодаря своей высокоэффективной вычислительной мощности и производительности модели. Это также можно использовать в тематических исследованиях регрессии, классификации, ранжирования и пользовательского прогнозирования.

В настоящее время я работаю над реализацией алгоритма XGBoost на Python, который вскоре будет помещен в мой профиль github. Пожалуйста, следите за новостями и следите за обновлениями, если вам понравилась эта статья.