Машинне навчання · 8 у порівнянні
Tree ensembles
Кожен метод тут — це багато дерев рішень, об’єднаних в один прогноз. Вони діляться на дві родини, які хочуть від своїх членів протилежного, і цей поділ пояснює більшість відмінностей.
Порівняння
| Назва Що додає | Хоче членів, що | Будується | Більше членів | Складність налаштування |
|---|---|---|---|---|
| XGBoost 2016 Системна відповідь на той самий алгоритм: розбиття з урахуванням розрідженості, зважений квантильний ескіз і розміщення під кеш, що масштабується на мільярди рядків. | поодинці недонавчаються | послідовно | може перенавчити | висока |
| LightGBM 2017 Відкидає екземпляри з малим градієнтом і зв’язує взаємовиключні ознаки, пришвидшуючи навчання більш ніж у 20 разів за майже тієї самої точності. | поодинці недонавчаються | послідовно | може перенавчити | висока |
| Bagging Навчає ту саму модель на бутстреп-пересемплах і усереднює. Атакує лише дисперсію, тож потребує члена з великою дисперсією, щоб було що атакувати. Повна сторінка → | поодинці перенавчаються | паралельно | ніколи не шкодить | майже жодної |
| Random forest Беггінг плюс випадкова підмножина ознак на кожному розбитті. Декореляція дерев знижує мінімальний рівень, нижче якого усереднення не пробивається. Повна сторінка → | поодинці перенавчаються | паралельно | ніколи не шкодить | низька |
| Extra-Trees Бере пороги розбиття випадково замість пошуку найкращого. Більше випадковості, більше індивідуального зміщення, часто швидше навчання. | поодинці перенавчаються | паралельно | ніколи не шкодить | низька |
| AdaBoost Після кожного раунду перезважує навчальні приклади, щоб наступна модель зосередилася на тому, у чому комітет раз у раз помиляється. Повна сторінка → | поодинці недонавчаються | послідовно | може перенавчити | помірна |
| Gradient boosting Підганяє кожне нове дерево до від’ємного градієнта втрати. Та сама процедура для будь-якої диференційовної цілі, а не лише для похибки класифікації. Повна сторінка → | поодинці недонавчаються | послідовно | може перенавчити | висока |
| HistGradientBoosting Розкладає ознаки по гістограмах перед пошуком розбиттів. На порядки швидше за звичайний градієнтний бустинг, щойно рядків десятки тисяч. | поодинці недонавчаються | послідовно | може перенавчити | висока |
На шпаргалці: Tree ensembles →
Родовід
- 2016XGBoost Системна відповідь на той самий алгоритм: розбиття з урахуванням розрідженості, зважений квантильний ескіз і розміщення під кеш, що масштабується на мільярди рядків. XGBoost: A Scalable Tree Boosting System лінія завершується тут
- 2017LightGBM Відкидає екземпляри з малим градієнтом і зв’язує взаємовиключні ознаки, пришвидшуючи навчання більш ніж у 20 разів за майже тієї самої точності. LightGBM: A Highly Efficient Gradient Boosting Decision Tree лінія завершується тут
- Bagging Повна сторінка → Навчає ту саму модель на бутстреп-пересемплах і усереднює. Атакує лише дисперсію, тож потребує члена з великою дисперсією, щоб було що атакувати. привела до Random forest
- Random forest Повна сторінка → Беггінг плюс випадкова підмножина ознак на кожному розбитті. Декореляція дерев знижує мінімальний рівень, нижче якого усереднення не пробивається. лінія завершується тут
- Extra-Trees Бере пороги розбиття випадково замість пошуку найкращого. Більше випадковості, більше індивідуального зміщення, часто швидше навчання. лінія завершується тут
- AdaBoost Повна сторінка → Після кожного раунду перезважує навчальні приклади, щоб наступна модель зосередилася на тому, у чому комітет раз у раз помиляється. привела до Gradient boosting
- Gradient boosting Повна сторінка → Підганяє кожне нове дерево до від’ємного градієнта втрати. Та сама процедура для будь-якої диференційовної цілі, а не лише для похибки класифікації. лінія завершується тут
- HistGradientBoosting Розкладає ознаки по гістограмах перед пошуком розбиттів. На порядки швидше за звичайний градієнтний бустинг, щойно рядків десятки тисяч. лінія завершується тут
Спершу прочитайте стовпець Хоче членів, що. Він ділить цю таблицю навпіл, і майже все інше з нього випливає.
Методи усереднення хочуть членів, що перенавчаються. Беггінг, випадкові ліси та Extra-Trees беруть модель із малим зміщенням і великою дисперсією та гасять дисперсію усередненням. Документація прямо називає цю вимогу: ці методи «найкраще працюють із сильними й складними моделями (наприклад, повністю вирощеними деревами рішень)» [1, §1.11.3]. Додавання членів може лише допомогти, навчаються вони паралельно, і налаштовувати майже нічого.
Методи бустингу хочуть членів, що недонавчаються. Кожен раунд підганяє те, у чому помилилися попередні, тож член, який не лишає помилки, одразу завершує процес. Такі методи «зазвичай найкраще працюють зі слабкими моделями (наприклад, неглибокими деревами рішень)» [1, §1.11.3]. У термінах дерев: «Випадкові ліси зазвичай покладаються на глибокі дерева (що поодинці перенавчаються)… Моделі бустингу будують неглибокі дерева (що поодинці недонавчаються), які швидше навчати й застосовувати» [1, §1.11.2].
Ця відмінність поширюється аж до експлуатаційних стовпців. Усереднення тривіально паралельне, і більше членів нічого не коштує; бустинг за природою послідовний, а кількість раундів — параметр регуляризації, який треба обирати на відкладених даних.
Нижня половина таблиці — один алгоритм
Градієнтний бустинг, HistGradientBoosting, XGBoost і LightGBM — не чотири різні моделі. Це градієнтний бустинг із пришвидшеним пошуком розбиття, і причину їхнього існування автори LightGBM називають прямо: наявні реалізації «мусять переглядати всі екземпляри даних, щоб оцінити приріст інформації для всіх можливих точок розбиття, а це дуже довго» [3, abstract].
Три відповіді на те саме вузьке місце. Розкласти ознаки по гістограмах. Наблизити пошук розбиття зваженим квантильним ескізом і розкласти дані в пам’яті під кеш [2, abstract]. Або зменшити те, що взагалі доводиться переглядати: одностороннє семплування на основі градієнта в LightGBM відкидає екземпляри з малими градієнтами, а зв’язування взаємовиключних ознак об’єднує ознаки, які рідко бувають ненульовими одночасно, — і досягає пришвидшення «більш ніж у 20 разів за майже тієї самої точності» [3, abstract].
Вибір між ними — інженерне рішення про розмір і форму ваших даних. Вибір між двома родинами — рішення моделювання, і саме його ця таблиця існує, щоб зробити прозорим.
Що обрати
Почніть із випадкового лісу. Його важко застосувати неправильно, йому не потрібне масштабування, і за лічені хвилини він покаже, чи є в задачі сигнал.
Переходьте до градієнтного бустингу, коли мета — точність і є бюджет налаштувати три взаємопов’язані параметри. На табличних даних він зазвичай перемагає, і мовчки перенавчиться, якщо ви йому дозволите.
Беріть Extra-Trees, коли важить час навчання, а дані широкі: випадкові пороги прибирають пошук, який і домінує у вартості [1, §1.11.2].
Одне застереження стосується кожного рядка: важливості ознак, які ці моделі видають за замовчуванням, обчислюються за нечистотою, а важливість за нечистотою зміщена на користь ознак із високою кардинальністю. Чого це коштує і що використати натомість, див. важливість ознак.
Джерела
- scikit-learn User Guide — Ensembles: Gradient boosting, random forests, bagging, voting, stackingdocs · звірено 2026-09-05https://scikit-learn.org/stable/modules/ensemble.html
- XGBoost: A Scalable Tree Boosting System (2016)paperhttps://arxiv.org/abs/1603.02754
- LightGBM: A Highly Efficient Gradient Boosting Decision Tree (2017)paperhttps://proceedings.neurips.cc/paper_files/paper/2017/hash/6449f44a102fde848669bdd9eb6b76fa-Abstract.html