Русская Википедия:XGBoost

Материал из Онлайн справочника
Версия от 10:59, 18 июля 2023; EducationBot (обсуждение | вклад) (Новая страница: «{{Русская Википедия/Панель перехода}} {{Infobox software | name = XGBoost | logo = XGBoost_logo.png | screenshot = | caption = | developer = The XGBoost Contributors | released = {{Start date and age|2014|03|27}} | latest release version = 1.6.0 | latest release date = {{Start date and age|2022|04|15}} | operating system = [[Linux]...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Шаблон:Infobox software XGBoost[1] (eXtreme Gradient Boosting) — это библиотека с открытым исходным кодом, используемая в машинном обучении и предоставляющая функциональность для решения задач, связанных с регуляризацией градиентного бустинга. Библиотека поддерживается языками программирования C++, Java, Python[2], R[3], Julia[4], Perl[5] и Scala. Библиотека работает под ОС Linux, Windows[6], и macOS[7]. Она работает как на одной машине, так и на системах распределенной обработки Apache Hadoop, Apache Spark и Apache Flink.

В последнее время эта библиотека приобрела большую популярность и привлекла внимание как выбор многих команд-победителей соревнований по машинному обучению[8].

История

XGBoost изначально начинался как исследовательский проект Чэн Тяньци[9] как часть группы Distributed (Deep) Machine Learning Community (DMLC). Изначально она начиналась как консольная программа, которую можно было настроить с помощью конфигурационного файла libsvm. XGBoost стал широко известен в кругах участников соревнований по машинному обучению после его использования в решении победителя конкурса Higgs Machine Learning Challenge. Вскоре после этого были созданы пакеты для Python и R, и теперь XGBoost имеет реализации пакетов для Java, Scala, Julia, Perl и других языков. Это позволило привлечь к библиотеке больше разработчиков и способствовало ее популярности среди сообщества Kaggle, где она использовалась для проведения большого количества соревнований[8].

Вскоре XGBoost был интегрирован с рядом других пакетов, что упростило его использование в соответствующих сообществах. Сейчас он интегрирован в scikit-learn для пользователей Python и в пакет caret для пользователей R. Он также может быть интегрирован в такие фреймворки Data Flow, как Apache Spark, Apache Hadoop и Apache Flink с помощью абстрактного Rabit[10] и XGBoost4J[11]. XGBoost также доступен на OpenCL для ПЛИС[12]. Эффективная, масштабируемая реализация XGBoost была опубликована Чэн Тяньци и Карлосом Густрином[13].

Хотя модель XGBoost часто достигает более высокой точности, чем одно дерево решений, она жертвует присущей деревьям решений интерпретируемостью. Например, проследить путь, по которому дерево решений принимает решение, тривиально и самообъяснимо, но проследить пути сотен или тысяч деревьев гораздо сложнее. Для достижения производительности и интерпретируемости некоторые методы сжатия моделей позволяют преобразовать XGBoost в одно "перерожденное" дерево решений, которое аппроксимирует ту же функцию принятия решений[14].

Функционал

Основные особенности XGBoost, отличающие его от других алгоритмов градиентного бустинга, включают:[15][16][17].

Описание алгоритма

XGBoost использует Метод Ньютона-Рафсона в пространстве функций, в отличие от градиентного бустинга, который работает как градиентный спуск в пространстве функций, в функции потерь используется ряд Тейлора второго порядка для связи с методом Ньютона-Рафсона.

Общий вид нерегуляризованного алгоритма XGBoost: Шаблон:Начало коробки Вход: обучающее множество <math>\{(x_i, y_i)\}_{i=1}^N</math>, дифференцируемая функция потерь <math>L(y, F(x))</math>, число слабых обучающихся <math>M</math> и скорость обучения <math>\alpha</math>.

Алгоритм:

  1. Инициализировать модель постоянным значением:
    <math>\hat{f}_{(0)}(x) = \underset{\theta}{\arg\min} \sum_{i=1}^N L(y_i, \theta).</math>
  2. Для Шаблон:Mvar = от 1 до Шаблон:Mvar:
    1. Вычислите "градиенты" и "гессианы":
      <math>\hat{g}_m(x_i)=\left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)} \right]_{f(x)=\hat{f}_{(m-1)}(x)}.</math>
      <math>\hat{h}_m(x_i)=\left[\frac{\partial^2 L(y_i,f(x_i))}{\partial f(x_i)^2} \right]_{f(x)=\hat{f}_{(m-1)}(x)}.</math>
    2. Подогнать базового/слабого обучающегося, используя обучающее множество <math>\displaystyle\left\{x_i,-\frac{\hat{g}_m(x_i)}{\hat{h}_m(x_i)}\right\}_{i=1}^{N}</math>, решив следующую оптимизационную задачу:
      <math>\hat{\phi}_m=\underset{\phi \in \mathbf{\Phi}}{\arg\min}\sum_{i=1}^{N}\frac{1}{2}\hat{h}_m(x_i)\left[-\frac{\hat{g}_m(x_i)}{\hat{h}_m(x_i)}-\phi(x_i) \right]^2.</math>
      <math> \hat{f}_m(x)=\alpha \hat{\phi}_m(x).</math>
    3. Обновление модели:
      <math>\hat{f}_{(m)}(x) = \hat{f}_{(m-1)}(x) + \hat{f}_m(x).</math>
  3. Результат: <math>\hat{f}(x)=\hat{f}_{(M)}(x)=\sum_{m=0}^{M}\hat{f}_m(x).</math>

Шаблон:Конец коробки

Награды

  • Премия John Chambers (2016)[18]
  • Премия High Energy Physics meets Machine Learning award (HEP meets ML) (2016)[19]

Примечания

Шаблон:Примечания