Прежде чем мы углубимся в алгоритм 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:
- λ: скорость обучения
Это также известно как усадка, которая используется для упорядочения модели. Значение скорости обучения варьируется от 0 до 1, с наиболее распространенным и широко используемым значением 0,01.
Большее λ обеспечивает регуляризацию модели за счет уменьшения количества деревьев до глобальных минимумов. Хотя мы должны иметь в виду, что исключительно высокая скорость обучения влечет за собой риск пропуска минимумов и, следовательно, скачков между функциями (ситуация, известная как перекрестный переход).
С другой стороны, очень малая скорость обучения требует большого количества деревьев решений для достижения минимумов, что приводит к очень долгому периоду обучения. Это также может привести к переобучению деревьев.
2. T: количество деревьев
Это еще одна ключевая особенность регуляризации модели. Но мы должны убедиться, что оба λ и T не настроены вместе, потому что большее λ означает более низкое T и наоборот.
Поскольку и скорость обучения, и количество настроек деревьев решений могут упорядочить модель, XGBoost использует более упорядоченную формулировку модели для управления переобучением. Целевая функция алгоритма XGBoost определяется следующим образом:
Целевая функция = потеря обучения + регуляризация
Преимущества XGBoost:
- Этот алгоритм использует регуляризацию по умолчанию, что делает его наиболее оптимально сложным из имеющихся алгоритмов.
- XGBoost использует все ядра ПК, что позволяет ему выполнять параллельные вычисления, тем самым увеличивая скорость вычислений.
- Этот алгоритм достаточно эффективен, чтобы уловить тенденцию к отсутствию значений. Таким образом, нет необходимости обрабатывать отсутствующие значения в наборе данных, если кто-то планирует выполнить XGBoost.
Вывод:
Хотя XGBoost пока что является лучшим алгоритмом, который присутствует сегодня в регрессионном анализе, все же есть сценарии, в которых лучше не использовать XGBoost. Одна из таких ситуаций - когда количество обучающих примеров меньше количества имеющихся функций.
Тем не менее, XGBoost превосходит все ограничения благодаря своей высокоэффективной вычислительной мощности и производительности модели. Это также можно использовать в тематических исследованиях регрессии, классификации, ранжирования и пользовательского прогнозирования.
В настоящее время я работаю над реализацией алгоритма XGBoost на Python, который вскоре будет помещен в мой профиль github. Пожалуйста, следите за новостями и следите за обновлениями, если вам понравилась эта статья.