XGBoost (XGBoost)
XGBoost | |
---|---|
Тип | Машинное обучение |
Разработчик | The XGBoost Contributors |
Написана на | C++ |
Операционные системы | Linux, macOS, Windows |
Первый выпуск | 27 марта 2014 |
Последняя версия | 1.6.0 (15 апреля 2022 ) |
Репозиторий | github.com/dmlc/xgboost |
Лицензия | Apache License 2.0 |
Сайт | xgboost.ai |
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].
- Умная штрафовка деревьев
- Пропорциональное уменьшение узлов листьев
- Метод Ньютона в оптимизации
- Дополнительный параметр рандомизации
- Реализация на одиночных, распределенных системах и out-of-core вычислениях
- Автоматический отбор признаков
Описание алгоритма
[править | править код]XGBoost использует Метод Ньютона-Рафсона в пространстве функций, в отличие от градиентного бустинга, который работает как градиентный спуск в пространстве функций, в функции потерь используется ряд Тейлора второго порядка для связи с методом Ньютона-Рафсона.
Общий вид нерегуляризованного алгоритма XGBoost:
Вход: обучающее множество , дифференцируемая функция потерь , число слабых обучающихся и скорость обучения .
Алгоритм:
- Инициализировать модель постоянным значением:
- Для m = от 1 до M:
- Вычислите "градиенты" и "гессианы":
- Подогнать базового/слабого обучающегося, используя обучающее множество , решив следующую оптимизационную задачу:
- Обновление модели:
- Вычислите "градиенты" и "гессианы":
- Результат:
Награды
[править | править код]- Премия John Chambers (2016)[18]
- Премия High Energy Physics meets Machine Learning award (HEP meets ML) (2016)[19]
Примечания
[править | править код]- ↑ Ссылка на страницу проекта . Дата обращения: 17 апреля 2022. Архивировано 1 апреля 2021 года.
- ↑ Python Package Index PYPI: xgboost . Дата обращения: 1 августа 2016. Архивировано 23 августа 2017 года.
- ↑ CRAN package xgboost . Дата обращения: 1 августа 2016. Архивировано 26 октября 2018 года.
- ↑ Julia package listing xgboost . Дата обращения: 1 августа 2016. Архивировано из оригинала 18 августа 2016 года.
- ↑ CPAN module AI::XGBoost . Дата обращения: 9 февраля 2020. Архивировано 6 октября 2021 года.
- ↑ Installing XGBoost for Anaconda in Windows . Дата обращения: 1 августа 2016. Архивировано 8 мая 2018 года.
- ↑ Installing XGBoost on Mac OSX . Дата обращения: 1 августа 2016. Архивировано 8 мая 2018 года.
- ↑ 1 2 XGBoost - ML winning solutions (incomplete list) . Дата обращения: 1 августа 2016. Архивировано 24 августа 2017 года.
- ↑ Story and Lessons behind the evolution of XGBoost . Дата обращения: 1 августа 2016. Архивировано из оригинала 7 августа 2016 года.
- ↑ Rabit - Reliable Allreduce and Broadcast Interface . Дата обращения: 1 августа 2016. Архивировано 11 июня 2018 года.
- ↑ html XGBoost4J (недоступная ссылка — html история). Дата обращения: 1 августа 2016.
- ↑ com/InAccel/xgboost XGBoost on FPGAs . Дата обращения: 1 августа 2019.
- ↑ Chen, Tianqi; Guestrin, Carlos (2016). Krishnapuram, Balaji; Shah, Mohak; Aggarwal, Charu C.; Shen, Dou; Rastogi, Rajeev (eds.). Труды 22-й Международной конференции ACM SIGKDD по обнаружению знаний и добыче данных, Сан-Франциско, Калифорния, США, 13-17 августа 2016 года. ACM. pp. 785–794. arXiv:1603.02754. doi:10.1145/2939672.2939785.
{{cite conference}}
: Неизвестный параметр|вклад=
игнорируется (справка); Неизвестный параметр|редактор3-первый=
игнорируется (справка); Неизвестный параметр|редактор3-последний=
игнорируется (справка); Пропущен|editor3=
(справка) - ↑ Sagi, Omer; Rokach, Lior (2021). "Approximating XGBoost with an interpretable decision tree". Information Sciences. 572 (2021): 522-542. doi:10.1016/j.ins.2021.05.055.
- ↑ Gandhi, Rohith Gradient Boosting and XGBoost (англ.). Medium (24 мая 2019). Дата обращения: 4 января 2020. Архивировано 31 июля 2022 года.
- ↑ Boosting algorithm: XGBoost (англ.). Towards Data Science (14 мая 2017). Дата обращения: 4 января 2020. Архивировано из оригинала 6 апреля 2022 года.
- ↑ Tree Boosting With XGBoost - Why Does XGBoost Win "Every" Machine Learning Competition? (амер. англ.). Synced (22 октября 2017). Дата обращения: 4 января 2020. Архивировано 23 августа 2022 года.
- ↑ John Chambers Award Previous Winners . Дата обращения: 1 августа 2016. Архивировано 31 июля 2017 года.
- ↑ HEP meets ML Award . Дата обращения: 1 августа 2016. Архивировано 8 мая 2018 года.