XGBoost проти Python Sklearn сприяв збільшенню дерев


20

Я намагаюся зрозуміти, як працює XGBoost. Я вже розумію, як підсилені градієнти дерева працюють на склеарні Python. Що мені незрозуміло, це якщо 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, але я впевнений, що це нижче рівня XGBoost).

Використовуючи обидва, швидкість XGBoost є досить вражаючою, а її продуктивність перевершує GradientBoosting склеарна.


1
Існує також різниця в продуктивності. Xgboost використовував другі похідні для пошуку оптимальної константи у кожному кінцевому вузлі. Стандартна реалізація використовує лише першу похідну.
Zelazny7

@ Zelazny7 Чи є у вас посилання на вашу заяву? Можна очікувати, що обчислення другого похідного погіршить ефективність. Це також означатиме, що крім (будь-якого аромату) градієнтного спуску використовувалося щось.
meh


2
Відповідні запитання щодо інформатики: Чому xgboost настільки швидший, ніж sklearn, і ось тут Статистика: Наближення функції втрати XGBoost з розширенням Тейлора
Вінкс

Підтвердження до публікації @ K88, GradientBoostingClassifier склеарна не має n_jobsпараметру інтерфейсу; паралельна обробка неможлива внутрішньо із застосуванням алгоритму sklearn.
bmc

7

На відміну від збільшення градієнта Склеарна, 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.