Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

XGBoost

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

XGBoost (экстремальный градиентный бустинг) — библиотека с открытым исходным кодом для градиентного бустинга над деревьями решений и один из самых популярных инструментов для табличных данных. Тяньци Чэнь начал разрабатывать её как исследовательский проект в Вашингтонском университете и выпустил в 2014 году. В статье 2016 года для KDD «XGBoost: масштабируемая система бустинга деревьев», написанной совместно с Карлосом Гестрином, описаны регуляризованная целевая функция и архитектура системы. Библиотека, которую поддерживает сообщество DMLC, выполняет классификацию, регрессию и ранжирование на Python, R, JVM и C, работает на CPU и GPU, а также масштабируется с помощью Dask и Spark. В статье сообщается, что XGBoost использовался в 17 из 29 решений-победителей соревнований, опубликованных в блоге Kaggle в 2015 году.

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

XGBoost последовательно строит ансамбль: начинает с постоянного предсказания и на каждом раунде бустинга добавляет одно дерево, обученное уменьшать функцию потерь, оставшуюся после предыдущих деревьев. Итоговое предсказание — сумма выходов деревьев, каждый из которых умножается на скорость обучения (eta, по умолчанию 0.3), чтобы ни одно дерево не доминировало. Две идеи из статьи определяют, как строится каждое дерево:

  • Целевая функция второго порядка: Для каждой строки XGBoost вычисляет первую и вторую производные функции потерь относительно текущего предсказания — градиент g и гессиан h. Листу, в котором сумма градиентов строк равна G, а сумма гессианов — H, присваивается вес -G / (H + λ): это тот же шаг Ньютона, который выполняют оптимизаторы второго порядка.
  • Регуляризованные деревья: В целевую функцию входит штраф γ за каждый лист и штраф L2 λ за веса листьев, а также необязательный штраф L1 α. Разбиение сохраняется только при положительном приросте качества ½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γ. Так регуляризация встраивается в построение деревьев и ограничивает переобучение.

Глубина деревьев ограничена (max_depth, по умолчанию 6); они растут уровень за уровнем, если только grow_policy="lossguide" не включает рост от листьев. Обычно обучение останавливают досрочно, используя валидационный набор:

Пропущенные значения, скорость и масштабирование#

Алгоритм XGBoost для поиска разбиений с учётом разреженности позволяет обучаться на таблицах с пропусками без импутации. На каждом разбиении он пробует направить строки с пропущенным значением сначала налево, затем направо, и выбирает направление с большим приростом качества как ветвь по умолчанию для этого узла. Этот же механизм позволяет просматривать только сохранённые элементы разреженных матриц, например матриц с унитарным кодированием. В этом примере 30% всех значений признаков в наборе данных рака молочной железы из scikit-learn скрываются, а модель обучается непосредственно на данных с пропусками:

import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)

for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
    model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
    model.fit(train, y_train)
    print(f"{name}: accuracy {model.score(test, y_test):.3f}")

Он выводит тестовую точность: 0.972 для полного набора данных и 0.951, если в каждом из двух наборов — обучающем и тестовом наборе — отсутствуют 30% значений.

Для ускорения метод построения деревьев hist, используемый по умолчанию, разбивает каждый признак максимум на 256 интервалов (max_bin) и ищет разбиения по границам интервалов — так же, как LightGBM. Метод exact перебирает каждое отсортированное значение. Параметр device="cuda" переносит обучение на GPU NVIDIA, enable_categorical=True позволяет обрабатывать категориальные столбцы напрямую, а режим внешней памяти позволяет обучаться на наборах данных, превышающих объём оперативной памяти. Начиная с версии 2.1, модели по умолчанию сохраняются в двоичном формате UBJSON.

  • LightGBM: Библиотека бустинга от Microsoft, выпущенная в 2016 году. По умолчанию строит деревья от листьев, а также применяет градиентную выборку строк и объединение разреженных признаков. Сейчас обе библиотеки по умолчанию используют гистограммы и опираются на многие одинаковые методы.
  • CatBoost: Библиотека бустинга от Яндекса, которая строит симметричные деревья и кодирует категориальные признаки с помощью упорядоченной статистики целевой переменной.
  • Случайный лес: Метод бэггинга, который независимо обучает глубокие деревья на бутстрэп-выборках и усредняет их результаты. Это снижает дисперсию и требует минимальной настройки.
  • Глубокое обучение: Стандартный подход для неструктурированных данных — изображений, аудио и текста, где нейросети извлекают признаки из исходных данных. Для таблиц с подготовленными признаками обычно в качестве базового решения используют градиентный бустинг над деревьями, который и нужно превзойти. Теперь с ним конкурируют фундаментальные модели для табличных данных, например TabPFN, на небольших наборах данных.

Примеры применения в реальных условиях#

  • Обнаружение мошенничества и оценка кредитного риска: Платёжные компании оценивают каждую транзакцию по сумме, продавцу, местоположению, устройству и истории счёта. Это одна из основных задач прогностического моделирования, где высокая скорость вывода XGBoost подходит для принятия решений в реальном времени.
  • Визуальный контроль: системы контроля качества на производстве объединяют данные камер и сенсоров. Предсказания Ultralytics YOLO26 дают данные со стороны камеры: result.summary() возвращает класс, уверенность и координаты рамки для каждого обнаруженного дефекта. Завод может агрегировать их по деталям и объединить с показаниями температуры и давления в качестве признаков для модели XGBoost, предсказывающей отказы.
  • Ранжирование и прогнозирование кликов: XGBRanker по умолчанию обучается с целевой функцией rank:ndcg, чтобы упорядочивать результаты поиска, а бинарные классификаторы предсказывают вероятность перехода по рекламе.
  • Задачи — победители соревнований: В статье KDD перечислены задачи, решённые командами-победителями в 2015 году: прогнозирование продаж магазинов, классификация событий физики высоких энергий, классификация вредоносных программ и прогнозирование отсева на массовых онлайн-курсах.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения