Все мы знаем, как XGBoost доминирует в соревнованиях Kaggle благодаря своей производительности и скорости. Этот блог посвящен пониманию того, как работает XGBoost (попробуйте объяснить исследовательскую работу). Этот блог не о том, как кодировать / внедрять XGboost или как настраивать его гиперпараметры.

XGBoost означает e X treme G radient Boost ing. Во-первых, краткое описание бэггинга и бустинга на рисунке 1. Он объясняет бэггинг (агрегирование начальной загрузки) и бустинг (адаптивное ускорение). Точнее, как усиление является дополнением к идее упаковки в мешки. При упаковке точки данных для разных пакетов выбираются случайным образом с заменой с равной вероятностью. При повышении точки данных выбираются на основе производительности модели на данный момент. При создании нового пакета точкам данных, производительность которых была плохой, было присвоено большее значение. На основе этого веса выбираются точки данных (выбор типа колеса рулетки). XGBoost основан на аналогичной идее повышения (неслучайное построение новых деревьев).

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

Приведенные выше шаги показывают, как вычисляются веса нового дерева, когда деревья строятся последовательно (например, при повышении). Если мы знаем древовидную структуру q, мы можем получить веса в корнях и функцию оценки в уравнении (3). Но мы не знаем q, и невозможно перечислить и попробовать каждую древовидную структуру. При поиске дерева существует компромисс между производительностью дерева и вычислительной нагрузкой (в зависимости от алгоритма). Суть алгоритмов, упомянутых в статье, представлена ​​на рисунке 3.

Это первые 3 раздела статьи. Раздел 4 посвящен проектированию системы (больше с точки зрения инженера данных, и у меня лично нет опыта в этой области). В разделе 5 обсуждаются предыдущие работы, а в разделе 6 показаны оценки производительности XGBoost.

Разработчики XGBoost проделали огромную работу помимо простой разработки нового алгоритма построения деревьев. Некоторые из них включают:

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

Ссылки:
XGBoost: A Scalable Tree Boosting System (исходная статья)
Мастерство машинного обучения (объясняет преимущества XGBoost)
Обсуждение XGBoost by Tanqi Chen (главный автор XGBoost)
Bagging (видео Udacity)
Boosting (видео Udacity)

Я надеюсь, что этот блог был (простым для понимания) полезным для понимания логики XGBoost. Если есть ошибка или что-то непонятно, напишите на ashnayak AT ucdavis.edu

Первоначально опубликовано на https://medium.com 17 декабря 2019 г.