XGBoost и Python Sklearn повышают градиент деревьев


20

Я пытаюсь понять, как работает XGBoost. Я уже понимаю, как деревья с градиентным ускорением работают на Python sklearn. Что мне не ясно, так это то, работает ли XGBoost таким же образом, но быстрее, или если между ним и реализацией python есть фундаментальные различия.

Когда я читаю эту статью

http://learningsys.org/papers/LearningSys_2015_paper_32.pdf

Мне кажется, что конечный результат выхода XGboost такой же, как и в реализации Python, однако основное отличие заключается в том, как XGboost находит наилучшее разделение для каждого дерева регрессии.

По сути, XGBoost дает тот же результат, но он быстрее.

Это правильно, или что-то еще мне не хватает?

Ответы:


18

Вы правы, XGBoost ('eXtreme Gradient Boosting') и GradientBoost от sklearn в основном совпадают, так как они обе являются реализациями повышения градиента.

Тем не менее, есть очень существенные различия под капотом в практическом смысле. XGBoost намного быстрее (см http://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ ) , чем sklearn годов. XGBoost довольно эффективно использует память и может быть распараллелен (я думаю, что sklearn не может сделать это по умолчанию, я не знаю точно об эффективности памяти sklearn, но я довольно уверен, что она ниже XGBoost).

Используя оба, скорость XGBoost весьма впечатляет, и его производительность превосходит GradientBoosting от sklearn.


1
Существует также разница в производительности. Xgboost использовал вторые производные, чтобы найти оптимальную константу в каждом терминальном узле. Стандартная реализация использует только первую производную.
Zelazny7

@ Zelazny7 У вас есть ссылки на ваше заявление? Можно было бы ожидать, что вычисление 2-х производных ухудшит производительность. Это также означало бы, что использовалось что-то помимо (любого аромата) градиентного спуска.
Мех


2
Соответствующие вопросы и ответы по Datascience: почему xgboost намного быстрее, чем sklearn, и здесь Статистика: функция потери XGBoost Приближение с расширением Тейлора
Winks

В подтверждение сообщения @ K88, GradientBoostingClassifier sklearn не имеет n_jobsдоступного параметра интерфейса; параллельная обработка невозможна из-за реализации алгоритма sklearn.
BMC

7

В отличие от повышения градиента в Sklearn, Xgboost также выполняет регуляризацию дерева, чтобы избежать переобучения, а также эффективно обрабатывает пропущенные значения. Следующая ссылка может быть полезна для изучения xgboost точно https://www.youtube.com/watch?v=Vly8xGnNiWs


GBM SkLearn выполняет регуляризацию с помощью параметра learning_rate.
Теджа Чеброле

1

XGboost - это реализация GBDT с рандомизацией (он использует выборку по столбцам и выборку по строкам). Выборка по строкам возможна, если не использовать все обучающие данные для каждой базовой модели GBDT. Вместо того чтобы использовать все обучающие данные для каждой базовой модели, мы выбираем подмножество строк и используем только эти строки данных для построения каждой из базовых моделей. Это обеспечивает меньшую вероятность переоснащения, что является основной проблемой простого GBDT, который XGBoost пытается решить с помощью этой рандомизации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.