Градієнт підсилюючого дерева: "чим більше змінною, тим краще"?


11

З підручника XGBoost, я думаю, що коли кожне дерево росте, всі змінні скануються, щоб їх було вибрано для розбиття вузлів, і буде вибрано той, який має максимальний розріз посилення. Отже, моє запитання полягає в тому, що якщо я додаю деякі змінні шуму в набір даних, чи вплинуть ці змінні шуми на вибір змінних (для кожного зростаючого дерева)? Моя логіка полягає в тому, що оскільки ці шумові змінні НЕ дають максимального коефіцієнта коефіцієнта посилення, вони ніколи не будуть обрані, тому вони не впливають на ріст дерева.

Якщо відповідь "так", то чи правда, що "чим більше змінних, тим краще для XGBoost"? Не будемо враховувати час тренувань.

Крім того, якщо відповідь "так", то це правда, що "нам не потрібно фільтрувати неважливі змінні з моделі".

Дякую!

Відповіді:


12

Моя логіка полягає в тому, що оскільки ці шумові змінні НЕ дають максимального коефіцієнта коефіцієнта посилення, вони ніколи не будуть обрані, тому вони не впливають на ріст дерева.

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

Шум слабких змінних, що випадково співвідноситься з цільовою змінною, може обмежувати ефективність прискорення алгоритмів, і це може легше траплятися на більш глибоких розщепленнях в дереві рішень, де оцінювані дані вже були згруповані в невеликий підмножина.

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

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


дуже хороший. Дякую! Отже, чи вважаєте ви, що вибір функції перед встановленням XGBoost необхідний на основі вашого досвіду?
WCMC

@Frank: Можливо. Ви можете однаково почати з повного набору функцій і використовувати звіт про важливість змінної xgboost, щоб допомогти вам. Взагалі, XGBoost не повністю позбавить вас від будь-яких звичних проблем щодо вибору функцій та інженерії.
Ніл Слейтер

Привіт @Neil, будь ласка, подивіться на datascience.stackexchange.com/questions/17288/…, коли у вас є можливість. Дякую.
WCMC

@Frank: Я вже робив вчора і залишив запитання для уточнення, тому що цифри здалися трохи вимкненими.
Ніл Слейтер

Привіт @Neil, оскільки попередній плакат не відповів на ваше запитання, я повторно розміщую його тут із власним проектом. Я також надав там набір даних та сценарій R, що, сподіваюся, було б зручніше для інших, щоб зрозуміти проблему. Я вдячний, якщо ви хочете надати допомогу.
WCMC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.