XgBoost

Оновлено: 31.07.2023

Extreme Gradient Boost (XGBoost) - це масштабований інструментарій для навчання на основі узагальненого дерева рішень з градієнтним прискоренням (GBDT). Це найкраща бібліотека машинного навчання для задач регресії, класифікації та ранжування, яка включає в себе паралельний бустинг дерев.

Щоб зрозуміти XGBoost, ви повинні спочатку зрозуміти ідеї та методи машинного навчання, на яких він базується: кероване машинне навчання, дерева рішень, ансамблеве навчання та градієнтний бустинг.

Контрольоване машинне навчання використовує алгоритми для навчання моделі для виявлення закономірностей у наборі даних з мітками та об'єктами, а потім для прогнозування міток на нових об'єктах набору даних за допомогою навченої моделі.

Аналізуючи дерево запитань типу "якщо-тоді-інше" і визначаючи найменшу кількість запитань, необхідних для оцінки ймовірності прийняття правильного рішення, дерева рішень створюють модель, яка прогнозує мітку. Дерева рішень можна використовувати для прогнозування безперервного числового значення або для категоризації, щоб передбачити категорію. У наведеному нижче базовому прикладі дерево рішень використовується для оцінки ціни на нерухомість залежно від розміру та кількості спалень.

Gradient Boosting Decision Trees (GBDT) - це метод ансамблевого навчання на основі дерев рішень для класифікації та регресії, який можна порівняти з випадковим лісом. Щоб створити кращу модель, методи ансамблевого навчання поєднують різні методи машинного навчання.

Випадковий ліс і GBDT створюють модель з багатьма деревами рішень. Різниця полягає у способі побудови та з'єднання дерев. Випадковий ліс будує всі дерева рішень паралельно, використовуючи випадкові бутстрап-вибірки з набору даних за допомогою методу, який називається пакуванням. Середнє значення всіх прогнозів дерева рішень використовується для отримання остаточного прогнозу.

Градієнтний бустінг - це процес "підсилення" або покращення однієї слабкої моделі шляхом об'єднання її з кількома додатковими слабкими моделями для створення спільної сильної моделі. У градієнтному бустінгу, який є розширенням бустінгу, підхід адитивної побудови слабких моделей визначається як алгоритм градієнтного спуску. Щоб зменшити кількість помилок, градієнтний бустінг визначає очікувані результати для наступної моделі. Градієнт помилки (звідси і назва градієнтного бустінгу) щодо прогнозу визначає цільові результати для кожного випадку.

GBDT тренують набір тонких дерев рішень багаторазово, на кожній ітерації використовуючи залишки помилок попередньої моделі, щоб підігнати наступну модель. Зважена сума всіх прогнозів дерев дає остаточний прогноз. "Підсилення" GBDT зменшує похибку та недостатнє припасування, тоді як "пакування" випадкового лісу мінімізує дисперсію та надмірне припасування.

  • XGBoost - гнучка і надзвичайно точна версія градієнтного бустингу.
.

Він був розроблений в першу чергу для підвищення продуктивності моделі машинного навчання та швидкості обчислень. На відміну від GBDT, XGBoost будує дерева паралельно, а не послідовно. Він використовує рівневу техніку, скануючи значення градієнта та оцінюючи якість розбиття на кожному можливому розбитті в навчальній вибірці за допомогою часткових сум.

Оптимізація та вдосконалення

  • Обрізання: У рамках GBM критерій зупинки розбиття дерев є жадібним і базується на критерії від'ємних втрат у точці розбиття. XGBoost починає обрізання дерев у зворотному напрямку, використовуючи аргумент максимальної глибини замість критеріїв. Цей метод "спочатку глибина" значно підвищує продуктивність обчислень.
  • Оптимізація апаратного забезпечення: Цей метод було створено, щоб максимально ефективно використовувати наявні апаратні ресурси. Це досягається завдяки використанню кешу, який передбачає створення кожним потоком внутрішніх буферів для зберігання статистики градієнта. Позаядерні обчислення, наприклад, оптимізують наявний дисковий простір під час керування великими кадрами даних, які не вміщуються в пам'яті.
  • Регуляризація: Щоб мінімізувати надмірне припасування, він штрафує складніші моделі, використовуючи як LASSO, так і регуляризацію Ridge.
  • Зважений квантильний ескіз: Щоб успішно знайти найкращі точки розбиття серед зважених наборів даних, XGBoost використовує техніку розподіленого зваженого квантильного ескізу.
.

За останні роки XGBoost набув великої популярності завдяки своїй здатності допомагати окремим особам і командам вигравати майже всі змагання зі структурованих даних Kaggle. Компанії та дослідники подають дані на ці конкурси, а майнери даних змагаються за створення найкращих моделей для прогнозування та пояснення даних.

Спочатку були створені реалізації XGBoost на Python та R. Завдяки своїй популярності XGBoost тепер включає пакетні реалізації для Scala, Java та інших мов. Ці вдосконалення розширили привабливість бібліотеки XGBoost для ще більшої кількості розробників у спільноті Kaggle.

XGBoost сумісний з багатьма різними інструментами та пакетами, включаючи scikit-learn для користувачів Python та caret для користувачів R. XGBoost також сумісний з фреймворками розподіленої обробки, такими як Apache Spark та Dask.

Щоб знайти алгоритм-чемпіон, фахівці з даних повинні оцінити всі потенційні алгоритми для наявних даних. Крім того, недостатньо вибрати відповідний алгоритм. Вони також повинні налаштувати гіперпараметри, щоб отримати найкращу конфігурацію алгоритму для набору даних. Існують також різні додаткові фактори, які слід враховувати при виборі методу-переможця, такі як обчислювальна складність, пояснюваність і простота реалізації.