1632
правки
Изменения
XGBoost
,rollbackEdits.php mass rollback
==История==
XGBoost изначально стартовал как исследовательский проект Тяньцзи Чена (Tianqi Chen) как часть сообщества распределенного глубинного машинного обучения. Первоначально он начинался как терминальное приложение, которое можно было настроить с помощью файла конфигурации libsvm. После победы в Higgs Machine Learning Challenge, он стал хорошо известен в соревновательный кругах по машинному обеспечению. Вскоре после этого были созданы пакеты для Python и R, и теперь у него есть пакеты для многих других языков, таких как Julia, Scala, Java и т. д. Это принесло библиотеке больше разработчиков и сделало ее популярной среди сообщества Kaggle<ref>[https://www.kaggle.com/ Kaggle]</ref>, где она использовалось для большого количества соревнований. Программное обеспечение разработано по методологии SCRUM.
Она вскоре стала использоваться с несколькими другими пакетами, что облегчает ее использование в соответствующих сообществах. Теперь у нее есть интеграция с scikit-learn для пользователей Python, а также с пакетом caret для пользователей R. Она также может быть интегрирована в рамах потока данных, таких как Apache Spark<ref>[https://spark.apache.org/ Apache Spark]</ref>, Apache Hadoop<ref>[https://hadoop.apache.org/ Apache Hadoop]</ref>, и Apache Flink<ref>[https://flink.apache.org/ Apache Flink]</ref> с использованием абстрактных Rabit<ref>[https://github.com/dmlc/rabit Rabit]</ref> и XGBoost4J<ref>[https://xgboost.readthedocs.io/en/latest/jvm/ XGBoost JVM]</ref>. Принцип работы XGBoost также был опубликован Тяньцзи Ченом (Tianqi Chen) и Карлосом Гастрин (Carlos Guestrin).
==Возможности XGBoostОписание алгоритма=='''Особенности модели''' Реализация модели поддерживает особенности реализации scikit[[File:golf-learn и R с новыми дополнениями, такими как регуляризацияMSE. Поддерживаются три основные формы повышения градиентаpng|700px|thumb|[https: * Алгоритм Gradient Boosting также называется градиентной машиной повышения, включая скорость обучения//explained.* Stochastic Gradient Boosting с субai/gradient-boosting/images/golf-выборкой в строке, столбце и столбце на каждый уровень разделенияMSE.png Иллюстрация бустинга]]]* Регулярное усиление градиента с регуляцией L1 и L2. В основе '''Системные функцииXGBoost'''лежит алгоритм [[Бустинг, AdaBoost|градиентного бустинга]] [[Дерево решений и случайный лес|деревьев решений]]. Библиотека предоставляет систему Градиентный бустинг — это техника машинного обучения для использования задач классификации и регрессии, которая строит модель предсказания в различных вычислительных средахформе ансамбля слабых предсказывающих моделей, не обычно деревьев решений.Обучение ансамбля проводится последовательно в последнюю очередь: * Параллелизация построения дерева с использованием всех ваших ядер процессора во время обученияотличие, например от [[Виды_ансамблей | бэггинга]].* Распределенные вычисления для обучения очень крупных моделей с использованием кластера машинНа каждой итерации вычисляются отклонения предсказаний уже обученного ансамбля на обучающей выборке.* Внекорпоративные вычисления для очень больших наборов данныхСледующая модель, которые не вписываются которая будет добавлена в памятьансамбль будет предсказывать эти отклонения. Таким образом, добавив предсказания нового дерева к предсказаниям обученного ансамбля мы можем уменьшить среднее отклонение модели, которое является таргетом оптимизационной задачи.Новые деревья добавляются в ансамбль до тех пор,* Кэш Оптимизация структуры данных и алгоритма для наилучшего использования аппаратного обеспеченияпока ошибка уменьшается, либо пока не выполняется одно из правил "ранней остановки".
<tex>\mathcal{L}^{(t)} = \sum_{i=1}^n l(y_i,\hat{y_i}^{(t-1)}+f_t(x_i))+\Omega(f_t)</tex> {{---}} функция для оптимизации градиентного бустинга, где:
<tex>w</tex> {{---}} значения в листьях, а <tex>\gamma</tex> и <tex>\lambda</tex> {{---}} параметры регуляризации.
Дальше с помощью разложения Тейлора до второго члена можем приблизить это оптимизируемую функцию <tex>\mathcal{L}^{(t)}</tex> следующим выражением:
<tex>\mathcal{L}^{(t)} = \sum_{i=1}^n l(y_i,\hat{y_i}^{(t-1)}) + g_i f_t(x_i) + 0.5 h_i f_t^2(x_i)) + \Omega(f_t)</tex>, где
<tex>g_i = \frac {\partial {l(y_i,\hat{y_i}^{t-1})}}{\partial{\hat{y_i}^{t-1}}}</tex>, <tex>h_i = \frac {\partial^2 {l(y_i,\hat{y_i}^{t-1})}}{\partial^2{\hat{y_i}^{t-1}}}</tex>
Поскольку мы хотим минимизировать ошибку модели на обучающей выборкивыборке, нам нужно найти минимум <tex>\mathcal{L}^{(t)}</tex> для каждого ''t''.
Минимум этого выражения относительно <tex>f_t(x_i)</tex> находится в точке <tex>f_t(x_i) = \frac{-g_i}{h_i}</tex>.
Каждое отдельное дерево ансамбля <tex>f_t(x_i)</tex> обучается стандартным алгоритмом. Для более полного описания см. [[Дерево решений и случайный лес|Дерево решений и случайный лес]].
==Возможности XGBoost==
'''Особенности модели'''
XGBoost поддерживает все возможности таких библиотек как scikit-learn с возможностью добавлять регуляризацию. Поддержаны три главные формы градиетного бустинга:
* Стандартный [[Бустинг,_AdaBoost|градиентный бустинг]] с возможностью изменения скорости обучения(''learning rate'').
* Стохастический градиентный бустинг<ref>[https://statweb.stanford.edu/~jhf/ftp/stobst.pdf Stochastic Gradient Boosting]</ref> с возможностью семплирования по строкам и колонкам датасета.
* Регуляризованный градиентный бустинг<ref>[https://arxiv.org/pdf/1806.09762.pdf Regularized Gradient Boosting]</ref> с L1 и L2 регуляризацией.
'''Системные функции'''
Библиотека предоставляет систему для использования в различных вычислительных средах:
* Параллелизация построения дерева с использованием всех ваших ядер процессора во время обучения.
* Распределенные вычисления для обучения очень крупных моделей с использованием кластера машин.
* Вычисления для очень больших наборов данных, которые не вписываются в память.
* Кэш Оптимизация структуры данных и алгоритма для наилучшего использования аппаратного обеспечения.
'''Особенности алгоритма'''
Реализация алгоритма была разработана для эффективности вычислительных ресурсов времени и памяти. Цель проекта заключалась в том, чтобы наилучшим образом использовать имеющиеся ресурсы для обучения модели. Некоторые ключевые функции реализации алгоритма включают:
* Различные стратегии обработки пропущенных данных.
* Блочная структура для поддержки распараллеливания обучения деревьев.
* Продолжение обучения для дообучения на новых данных.
==Основные параметры==
* ''n_estimators'' {{---}} число деревьев.
* ''eta'' {{---}} размер шага. Пердотвращает Предотвращает переобучение.
* ''gamma'' {{---}} минимальное изменение значения ''loss'' функции для разделения листа на поддеревья.
* ''max_depth'' {{---}} максимальная глубина дерева.
* ''lambda''/''alpha'' {{---}} ''L2''/''L1'' регуляризация.
==Пример использования с помощью библиотеки xgboost==
Загрузка датасета.
'''from''' sklearn '''import''' datasets
iris = datasets.'''load_iris'''()
X = iris.'''data'''
y = iris.'''target'''
Импорт ''XGBoost'' и создание необходимых объектов. '''import''' xgboost as xgb dtrain = xgb.'''DMatrix'''(X_train, label=y_train) dtest = xgb.'''DMatrix'''(X_test, label=y_test)
Задание параметров модели.
param = {
'max_depth': 3,
num_round = 20
Обучение. bst = xgb.'''train'''(param, dtrain, num_round) preds = bst.'''predict'''(dtest)
Определение качества модели на тестовой выборке. '''import ''' numpy '''as ''' np '''from ''' sklearn.metrics '''import ''' precision_score
best_preds = np.asarray([np.argmax(line) for line in preds])
'''print ''' precision_score(y_test, best_preds, average='macro')
==См. также==
* [https://towardsdatascience.com/xgboost-mathematics-explained-58262530904a XGBoost Mathematics Explained]
* [https://medium.com/@gabrieltseng/gradient-boosting-and-xgboost-c306c1bcfaf5 Gradient Boosting and XGBoost]
* [https://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ A Gentle Introduction to XGBoost for Applied Machine Learning]
[[Категория: Машинное обучение]]
[[Категория: Ансамбли]]