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

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

Что такое XGBoost?

  • XGBoost (eXtreme Gradient Boosting) — это популярный и мощный алгоритм машинного обучения, используемый для задач обучения с учителем, особенно в задачах регрессии, классификации и ранжирования.

  • Машинное обучение с учителем использует алгоритмы для обучения модели поиску шаблонов в наборе данных с метками и функциями, а затем использует обученную модель для прогнозирования меток для функций нового набора данных.
  • Он основан на фреймворке повышения градиента, предназначенном для оптимизации скорости выполнения и производительности модели.
  • XGBoost широко используется в соревнованиях по науке о данных и известен своей эффективностью и результативностью при обработке структурированных/табличных данных.
  • Он принадлежит к семейству алгоритмов повышения градиента, которые представляют собой методы ансамблевого обучения, которые объединяют прогнозы нескольких слабых учеников (обычно деревьев решений) для создания сильной прогностической модели.

Почему мы используем XGBoost:

  • Высокая производительность: XGBoost известен своей исключительной производительностью с точки зрения скорости и точности. Он оптимизирован для эффективной обработки больших наборов данных и может быстро обучать сложные модели, что делает его пригодным для реальных приложений с многомерными данными.
  • Обучение по ансамблю: XGBoost использует подход к обучению по ансамблю, объединяя прогнозы нескольких слабых учеников (деревьев решений) для создания надежной, надежной и точной модели прогнозирования. Эта ансамблевая стратегия часто превосходит индивидуальные модели, уменьшая переобучение и улучшая обобщение.
  • Регуляризация и переобучение управления: XGBoost включает условия регуляризации L1 (Lasso) и L2 (Ridge) в целевую функцию. Это помогает контролировать сложность модели и предотвращает переоснащение, что приводит к более точным и обобщаемым результатам.
  • Обработка отсутствующих данных: XGBoost может обрабатывать отсутствующие значения в данных в процессе обучения, не требуя явного вменения данных. Он автоматически определяет наилучшее направление, в котором функция имеет пропущенные значения, что упрощает предварительную обработку данных.
  • Важность функции: XGBoost предоставляет простой и эффективный способ расчета показателей важности функции. Эти оценки помогают определить наиболее важные функции в модели, обеспечивая лучшее понимание и интерпретацию данных.
  • Широкий спектр приложений: XGBoost можно использовать для различных задач машинного обучения, включая системы классификации, регрессии, ранжирования и рекомендаций. Его универсальность делает его пригодным для решения широкого круга задач в различных областях.
  • Параллельная обработка: XGBoost разработан, чтобы использовать возможности параллельной обработки, что делает его более быстрым и масштабируемым для больших наборов данных. Он эффективно использует несколько ядер ЦП во время обучения модели, что приводит к более быстрому выполнению.
  • Сообщество и поддержка: у XGBoost большое и активное сообщество пользователей и разработчиков. Это обеспечивает непрерывную разработку, улучшение и поддержку алгоритма, что делает его надежным и хорошо обслуживаемым.
  • Победный послужной список: XGBoost имеет подтвержденный послужной список побед в соревнованиях и соревнованиях по машинному обучению. Его успех в различных конкурсах по науке о данных, таких как Kaggle, укрепил его позицию в качестве одного из самых эффективных алгоритмов.

В целом, сочетание скорости, точности, интерпретируемости и универсальности делает XGBoost популярным выбором для специалистов по данным и специалистов по машинному обучению при работе со структурированными/табличными данными.

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

ключевые компоненты:

  • Среда повышения градиента. XGBoost основан на структуре повышения градиента. Повышение градиента — это итерационный метод, при котором в модель последовательно добавляются слабые ученики, и каждый новый ученик исправляет ошибки, допущенные его предшественниками. Окончательная модель представляет собой взвешенную сумму прогнозов, сделанных всеми учащимися.
  • Ансамбль слабых учащихся. Слабые учащиеся в XGBoost обычно представляют собой деревья решений, а точнее деревья регрессии. Каждое дерево представляет собой простую модель, которая делает прогнозы на основе набора входных признаков. Объединяя прогнозы нескольких деревьев, XGBoost создает мощную и надежную ансамблевую модель.
  • Целевая функция. XGBoost использует целевую функцию для количественной оценки производительности модели во время обучения. Целевая функция состоит из двух компонентов: функции потерь, которая измеряет разницу между прогнозируемыми и фактическими значениями, и члена регуляризации, который штрафует сложные модели для предотвращения переобучения.
  • Оптимизация на основе градиента. В процессе обучения XGBoost оптимизирует целевую функцию, используя методы оптимизации на основе градиента. Он вычисляет градиент (производную) целевой функции по отношению к предсказаниям модели, а затем обновляет параметры модели (веса) таким образом, чтобы минимизировать целевую функцию.
  • Регуляризация: XGBoost включает условия регуляризации L1 (Lasso) и L2 (Ridge) в целевую функцию. Это помогает контролировать сложность модели и предотвращает переоснащение. Регуляризация побуждает модель отдавать предпочтение более простым деревьям, что приводит к лучшему обобщению невидимых данных.
  • Сокращение дерева: XGBoost использует стратегию роста дерева «по глубине», при которой каждый уровень дерева сначала расширяется, а затем выполняется сокращение для удаления разбиений, которые не улучшают производительность модели. Такой подход помогает строить более сбалансированные и неглубокие деревья, что уменьшает переоснащение.
  • Обработка отсутствующих данных: XGBoost имеет встроенную возможность обработки отсутствующих значений в данных в процессе обучения. Он автоматически определяет наилучшее направление, когда у признака отсутствуют значения, что упрощает предварительную обработку данных.
  • Параллельная обработка. XGBoost использует преимущества параллельной обработки и многоядерных процессоров, что делает его более быстрым и масштабируемым, чем традиционные реализации с градиентным ускорением.
  • Важность функции: XGBoost предоставляет способ расчета показателей важности функции на основе того, сколько раз функция используется в модели и насколько она способствует снижению целевой функции.

Как работает XGBoost?

  • Шаг 1. Инициализация. Мы начинаем с первоначального предположения для прогнозов. Это может быть простое значение, такое как среднее значение целевых значений (для регрессии) или наиболее распространенный класс (для классификации).
  • Шаг 2. Расчет ошибок. Мы вычисляем ошибки между нашими первоначальными прогнозами и фактическими целевыми значениями в обучающих данных.
  • Шаг 3. Создайте дерево для исправления ошибок. Теперь мы создадим дерево решений для исправления этих ошибок. Дерево пытается найти закономерности в данных, которые помогают нам делать более точные прогнозы.
  • Шаг 4. Обновление прогнозов. Мы используем только что созданное дерево для обновления прогнозов. Прогнозы дерева объединяются с предыдущими прогнозами, придавая больший вес прогнозам дерева, когда они более точны.
  • Шаг 5. Повторите для других деревьев. Мы повторяем шаги со 2 по 4, чтобы создать больше деревьев. Каждое новое дерево фокусируется на исправлении ошибок, которые не могли обработать предыдущие деревья.
  • Шаг 6. Остановитесь, когда будете готовы: мы повторяем этот процесс в течение определенного количества раундов (раундов повышения) или до тех пор, пока модель не станет достаточно хорошей. Мы хотим избежать переобучения, поэтому останавливаемся, когда модель достигает удовлетворительного уровня точности.
  • Шаг 7. Делайте прогнозы. После завершения обучения у нас есть набор деревьев, которые работают вместе, чтобы делать прогнозы на основе новых, невидимых данных. Чтобы сделать прогноз, мы пропускаем новые данные через каждое дерево, и их объединенные прогнозы дают нам окончательный результат.

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

Как решить XGBoost математически:

Здесь мы будем использовать простые тренировочные данные, в которых по оси X указана дозировка лекарства, а по оси Y — эффективность лекарства. Два приведенных выше наблюдения(6,5, 7,5) имеют относительно большое значение эффективности препарата, что означает, что лекарство было полезным, а два приведенных ниже наблюдения(-10,5, -7,5) > иметь относительно отрицательное значение эффективности лекарства, что означает, что лекарство принесло больше вреда, чем пользы.

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

Прогноз 0,5 соответствует толстой черной горизонтальной линии.

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

Теперь нам нужно рассчитать показатель качества или показатель сходства для остатков.

Здесьλ — параметр регуляризации.

Итак, мы разделили наблюдения на две группы в зависимости от того, была ли дозировка‹15.

Наблюдение слева — единственное с дозировкой‹15. Все остальные остатки идут на лист справа.

Когда мы вычисляем показатель сходства для наблюдений -10,5, -7,5, 6,5, 7,5, полагая λ = 0

мы получили сходство =4 и

Следовательно, результат, который мы получили:

Гиперпараметр в XGBoost:

  • learning_rate (или eta): этот параметр определяет размер шага на каждой итерации повышения. Меньшее значение делает модель более надежной, но более медленной для сходимости, в то время как большее значение может привести к более быстрой сходимости, но есть риск превышения оптимального решения.
  • n_estimators: количество повышающих раундов (деревьев) для построения. Он определяет количество деревьев в ансамбле. Более высокое значение обычно повышает производительность, но также увеличивает время вычислений.
  • max_depth: максимальная глубина каждого дерева решений. Он ограничивает количество узлов в дереве. Более глубокое дерево может привести к переоснащению, поэтому этот параметр следует тщательно настраивать.
  • min_child_weight: минимальная сумма весов экземпляров (гессиан), необходимая для дочернего узла. Он управляет разделением узлов и помогает предотвратить переоснащение.
  • подвыборка: доля сэмплов, используемых в каждом раунде повышения. Он случайным образом выбирает подмножество обучающих данных для построения каждого дерева, вводя случайность и уменьшая переоснащение.
  • colsample_bytree: доля функций (столбцов), используемых в каждом раунде повышения. Он случайным образом выбирает подмножество признаков для построения каждого дерева, обеспечивая дальнейшую регуляризацию.
  • гамма: минимальное снижение потерь, необходимое для создания дополнительного раздела на листовом узле. Он контролирует обрезку деревьев, а более высокое значение помогает предотвратить переоснащение.
  • альфа: член регуляризации L1 для весов листьев. Он добавляет регуляризацию L1 к весам листьев, способствуя получению редких оценок листьев.
  • лямбда: член регуляризации L2 для весов листьев. Он добавляет регуляризацию L2 к весам листьев, дополнительно контролируя сложность модели.
  • scale_pos_weight: управляет балансом положительных и отрицательных весов в наборе данных для задач бинарной классификации. Это полезно для несбалансированных наборов данных.
  • Цель: оптимизация функции потерь. Его следует выбирать на основе конкретного типа проблемы, такого как регрессия, классификация или ранжирование.

Это лишь некоторые из гиперпараметров, доступных в XGBoost. Существуют более продвинутые гиперпараметры и конфигурации для изучения, такие как использование различных типов бустера (gbtree, gblinear, dart), типов построения дерева (hist или точного) и других. Правильная настройка гиперпараметров имеет решающее значение для поиска оптимальной комбинации для вашего конкретного набора данных и проблемы, и она часто включает использование таких методов, как поиск по сетке, случайный поиск или байесовская оптимизация.

Сравнение XGBoost и традиционного повышения градиента:

Применение XGBOOST:

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

  • Классификация: XGBoost широко используется для задач классификации, таких как обнаружение спама, обнаружение мошенничества, анализ настроений, распознавание изображений и диагностика заболеваний. Его способность обрабатывать несбалансированные наборы данных и обеспечивать точные прогнозы делает его популярным для решения различных задач бинарной и мультиклассовой классификации.
  • Регрессия: XGBoost эффективен в задачах регрессии, включая прогнозирование цен на жилье, прогнозирование спроса и прогнозирование продаж. Он может моделировать сложные отношения в данных и обеспечивать точные непрерывные прогнозы.
  • Рейтинг. В приложениях для ранжирования XGBoost можно использовать для создания моделей, ранжирующих элементы или результаты поиска на основе показателей релевантности. Это обычно используется в поисковых системах, системах рекомендаций и персонализированном маркетинге.
  • Системы рекомендаций. XGBoost используется в совместной фильтрации для предоставления персонализированных рекомендаций пользователям на основе их прошлых взаимодействий и предпочтений. Он может обрабатывать большие наборы данных и эффективно давать рекомендации в режиме реального времени.
  • Прогнозирование временных рядов: XGBoost применим к задачам прогнозирования временных рядов, таким как прогнозирование цен на акции, погодных условий и моделей трафика. Он может фиксировать сезонные закономерности и нелинейные отношения в данных временных рядов.
  • Обнаружение аномалий: XGBoost можно использовать для обнаружения аномалий в различных областях, включая обнаружение сетевых вторжений, обнаружение мошенничества и прогнозирование отказов оборудования. Он может выявлять необычные закономерности в данных, которые отклоняются от нормы.
  • Анализ текста: XGBoost можно применять к задачам обработки естественного языка, таким как классификация текста, анализ настроений и распознавание именованных объектов. Его способность работать с большими пространствами признаков и нелинейными отношениями выгодна в текстовых приложениях.