We wstępie do nauki statystycznej z aplikacjami w R autorzy piszą, że dopasowanie drzewa decyzyjnego jest bardzo szybkie, ale nie ma to dla mnie sensu. Algorytm musi przejść przez każdą funkcję i podzielić ją na wszystkie możliwe sposoby, aby znaleźć optymalny podział. W przypadku operacji numerycznych z obserwacjami może to skutkować n podziałami dla każdej operacji.
Czy nie rozumiem, jak działa podział binarny? Czy istnieje powód, dla którego ten algorytm nie potrwa długo?
Odpowiedzi:
Algorytmy drzew decyzyjnych nie obliczają wszystkich możliwych drzew, gdy pasują do drzewa. Gdyby to zrobili, rozwiązaliby trudną NPproblem. Algorytmy dopasowania drzewa decyzyjnego zazwyczaj podejmują chciwe decyzje w procesie dopasowania - na każdym etapie optymalizują pod-problem w celu znalezienia optymalnego podziału z danymi w danym węźle i kontynuują proces dopasowania. Ponadto, gdy wchodzisz głębiej w drzewo decyzyjne, masz mniejszy zestaw danych, który dotarł do danego węzła, dzięki czemu będziesz optymalizować regułę podziału na mniejszy podzbiór danych. Wszystkie te wybory są liniowymi skanami danych w danym węźle. Nie jest to skomplikowane, ale może stać się nieco kosztowne obliczeniowo, jeśli masz dużą liczbę obserwacji lub dużą liczbę zmiennych towarzyszących do podzielenia. Jednak wiele pracy można podzielić i wysłać na różne maszyny, aby pracować, więc istnieją sposoby na zbudowanie architektury obliczeniowej w celu zwiększenia jej skali.
źródło
Istnieją pewne różnice między algorytmami CART i C4.5 do budowania drzew decyzyjnych. Na przykład CART używa Gini Impurity do wybierania funkcji, podczas gdy C.4.5 używa Shannon Entropy. Nie sądzę, że różnice są istotne dla odpowiedzi, więc nie będę rozróżniał między nimi.
Co sprawia, że drzewa decyzyjne są szybsze niż mogłoby się wydawać:
and
poprawiłoby drzewo. Oznacza to, że powinieneś być bardzo ostrożny / sprytny podczas inżynierii funkcji. Załóżmy na przykład, że próbujesz przewidzieć, ile osób pije, możesz polecić takie rzeczy jak inżyniernew_feature = hour > 22 & hour < 4 & (friday_night | saturday_night)
. Drzewa decyzyjne mogą nie uwzględniać takich zasad lub przypisywać im mniejsze znaczenie niż powinny.X <= 1
X <= 1.5
X <= 2
X <= 1
X <= 1.5
xgboost
tak szybkie. Zwiększanie gradientu jest sekwencyjne i nie może być zrównoleglone, ale same drzewa mogą.źródło
Aby wzbogacić odpowiedzi,
Hierarchiczne drzewa decyzyjne równoległe do osi są szybkie (CART, C4.5), ale istnieją inne alternatywy, takie jak niehierarchiczne drzewa decyzyjne lub te, które wykonują skośne partycje, które nie są, chociaż mogą być bardziej dokładne. Jeśli jesteś zainteresowany, sprawdź następujące referencje (nie są to wybitne propozycje).
Niehierarchiczny:
Grubinger, T., Zeileis, A. i Pfeiffer, K.-., 2014. Evtree: Ewolucyjne uczenie się optymalnie globalnych drzew klasyfikacji i regresji w RJStat.Software 61 (1), 1-29.
Podziały ukośne:
Murthy, SK, Kasif, S. i Salzberg, S., 1994. System indukcji ukośnych drzew decyzyjnych. J. Artif. Intel. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. i Kamath, C., 2003. Indukowanie skośnych drzew decyzyjnych za pomocą algorytmów ewolucyjnych. IEEE Trans. Evol. Comput. 7 (1), 54–68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. i Salzberg, S., 1993. Indukcja skośnych drzew decyzyjnych. J. Artif. Intel. Res. 2 (2), 1002–1007.
Powodzenia!
źródło