Drzewo wzmocnienia gradientu: „im więcej zmiennych, tym lepiej”?


11

Z samouczka XGBoost myślę, że gdy każde drzewo rośnie, wszystkie zmienne są skanowane w celu wybrania w celu podzielenia węzłów i zostanie wybrana ta z podziałem maksymalnego wzmocnienia. Więc moje pytanie brzmi: co jeśli dodam jakieś zmienne szumu do zbioru danych, czy te zmienne szumu wpłyną na wybór zmiennych (dla każdego drzewa rosnącego)? Moją logiką jest to, że ponieważ te zmienne szumowe wcale NIE dają maksymalnego podziału wzmocnienia, nigdy nie zostaną wybrane, więc nie wpływają na wzrost drzewa.

Jeśli odpowiedź brzmi „tak”, to czy to prawda, że ​​„im więcej zmiennych, tym lepiej dla XGBoost”? Nie bierzmy pod uwagę czasu szkolenia.

Ponadto, jeśli odpowiedź brzmi „tak”, to czy prawdą jest, że „nie musimy filtrować nieistotnych zmiennych z modelu”.

Dziękuję Ci!

Odpowiedzi:


12

Moją logiką jest to, że ponieważ te zmienne szumowe wcale NIE dają maksymalnego podziału wzmocnienia, nigdy nie zostaną wybrane, więc nie wpływają na wzrost drzewa.

Jest to całkowicie poprawne tylko w przypadku bardzo dużych, prawie nieskończonych zestawów danych, w których liczba próbek w zestawie treningowym zapewnia dobre pokrycie wszystkich odmian. W praktyce, przy wystarczającej liczbie wymiarów, powstaje dużo szumu próbkowania, ponieważ zasięg możliwych przykładów jest słabszy, im więcej wymiarów mają dane.

Hałas na słabych zmiennych, który ostatecznie koreluje przypadkowo ze zmienną docelową, może ograniczać skuteczność algorytmów wzmacniających, a łatwiej może się to zdarzyć przy głębszych podziałach w drzewie decyzyjnym, gdzie oceniane dane zostały już pogrupowane w niewielki podzbiór.

Im więcej zmiennych dodasz, tym bardziej prawdopodobne jest, że otrzymasz słabo skorelowane zmienne, które po prostu dobrze wyglądają w algorytmie podziału podziału dla określonej kombinacji, która następnie tworzy drzewa, które uczą się tego szumu zamiast zamierzonego sygnału, i ostatecznie źle uogólniać.

W praktyce XGBoost jest dość odporny na hałas na małą skalę. Odkryłem jednak, że czasami wybiera podobne zmienne inżynierskie, zamiast danych lepiej skorelowanych, z podobnych powodów. Nie jest to więc algorytm, w którym „im więcej zmiennych, tym lepiej dla XGBoost” i musisz dbać o możliwe funkcje niskiej jakości.


bardzo dobrze. Dzięki! Czy uważasz, że wybór funkcji przed dopasowaniem XGBoost jest konieczny na podstawie twojego doświadczenia?
WCMC

@Frank: Może. Możesz również zacząć od pełnego zestawu funkcji i skorzystać z raportu o zmiennym znaczeniu xgboost, aby ci pomóc. Ogólnie rzecz biorąc, XGBoost nie ratuje cię całkowicie od zwykłych obaw związanych z wyborem funkcji i inżynierią.
Neil Slater,

Cześć @Neil, proszę spojrzeć na datascience.stackexchange.com/questions/17288/... ilekroć masz szansę. Dziękuję Ci.
WCMC

@Frank: Zrobiłem to wczoraj i zostawiłem pytanie do wyjaśnienia, ponieważ liczby wydawały się trochę nie na miejscu.
Neil Slater,

Cześć @Neil, ponieważ poprzedni plakat nie odpowiedział na twoje pytanie, przesyłam go ponownie tutaj z własnym projektem. Podałem tam również zestaw danych i skrypt R, co, mam nadzieję, byłoby wygodniejsze dla innych, aby mogli zrozumieć problem. Doceniam, czy chciałbyś udzielić pomocy.
WCMC
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.