Co oznacza głębokość interakcji w GBM?


30

Miałem pytanie dotyczące parametru głębokości interakcji w gbm w R. To może być pytanie nooba, za które przepraszam, ale w jaki sposób parametr, który moim zdaniem oznacza liczbę węzłów końcowych w drzewie, zasadniczo wskazuje X-way interakcja między predyktorami? Próbuję zrozumieć, jak to działa. Dodatkowo dostaję całkiem różne modele, jeśli mam zestaw danych z, powiedzmy, dwiema różnymi zmiennymi czynnikowymi w porównaniu z tym samym zestawem danych, z wyjątkiem tych dwóch zmiennych czynnikowych połączonych w jeden czynnik (np. Poziomy X w czynniku 1, poziomy Y w czynniku 2, zmienna łączona ma Czynniki X * Y). Ta ostatnia jest znacznie bardziej przewidywalna niż pierwsza. Myślałem, że zwiększenie głębi interakcji podniesie ten związek.

Odpowiedzi:


22

Obie poprzednie odpowiedzi są błędne. Pakiet GBM używa interaction.depthparametru jako liczby podziałów, które musi wykonać na drzewie (zaczynając od pojedynczego węzła). Ponieważ każdy podział zwiększa całkowitą liczbę węzłów o 3, a liczbę węzłów końcowych o 2 (węzeł {lewy węzeł, prawy węzeł, węzeł NA}), całkowita liczba węzłów w drzewie wyniesie 3 N + 1, a liczba węzłów końcowych 2 N + 1 . Można to zweryfikować, patrząc na wynik funkcji.3N+12N+1pretty.gbm.tree

Zachowanie jest raczej mylące, ponieważ użytkownik rzeczywiście oczekuje, że głębokość będzie głębokością wynikowego drzewa. Nie jest.


Co to jest N tutaj: liczba węzłów, interakcji. Głębokość czy coś innego?
Julian

Jest to liczba wykonanych podziałów, zaczynając od pojedynczego węzła (również głębokość interakcji).
losowy

1
Myślę, że każdy podział zwiększa tylko całkowitą liczbę węzłów końcowych o 1. przypuśćmy, że drzewo ma tylko jeden podział, a następnie ma 2 węzły końcowe, teraz wykonujesz podział na jednym z poprzednich węzłów końcowych, a następnie są 3 terminale węzły teraz. więc przyrost wynosi tylko 1. Czy mam rację, czy coś źle zrozumiałem?
Lily Long,

1
@LilyLong Może to nie być od razu jasne, ale gbm faktycznie dzieli węzły na trzy, trzecie potomne grupujące wartości NA (tj. Takie, których nie można bezpośrednio porównać z podaną wartością). Oznacza to, że każdy podział zwiększa liczbę węzłów o dwa. Pakiet mógł ewoluować od czasu, gdy ostatnio go użyłem, aby uniknąć tworzenia tego trzeciego dziecka, więc proszę dokładnie to sprawdzić, uruchamiając funkcję pretty.gbm.tree.
losowo

2

Miałem pytanie dotyczące parametru głębokości interakcji w gbm w R. To może być pytanie nooba, za które przepraszam, ale w jaki sposób parametr, który moim zdaniem oznacza liczbę węzłów końcowych w drzewie, zasadniczo wskazuje X-way interakcja między predyktorami?

Związek między interakcją. Głębokością a liczbą węzłów końcowych

interaction.depthinteraction.depth

interaction.depth=#{TerminalNodes}+1

Związek między interakcją. Głębokością a kolejnością interakcji

Powiązanie interaction.depthi kolejność interakcji są bardziej nużące.

Zamiast rozumowanie z interaction.depth, niech powód z liczbą węzłów końcowych, które będziemy zwanych J .

Przykład: załóżmy, że masz J = 4 węzły końcowe (interakcja.depth = 3), możesz:

  1. wykonaj pierwszy podział w katalogu głównym, a następnie drugi podział w lewym węźle katalogu głównego i trzeci podział w prawym węźle katalogu głównego. Kolejność interakcji dla tego drzewa to 2.
  2. wykonaj pierwszy podział na głównym, a następnie drugi podział na lewym (odpowiednio prawym) węźle root i trzeci podział na tym bardzo lewym (odpowiednio prawym) węźle. Kolejność interakcji dla tego drzewa to 3.

Pmin(J1,n)

1

Poprzednia odpowiedź jest nieprawidłowa.

Kikuty będą miały interakcję. Głębokość 1 (i mają dwa liście). Ale interakcja. Głębokość = 2 daje trzy liście.

Tak więc: NumberOfLeaves = interact.depth + 1


0

Właściwie poprzednie odpowiedzi są niepoprawne.

N=2(K+1)1L=2K

2k

N=k=0K2k)

co jest równoważne z:

N=2(K+1)1

0

Możesz spróbować

tabela (przewidywanie (gbm (y ~., data = TrainingData, dystrybucja = "gaussian", verbose = FAŁSZ, n. drzewa = 1, skurcz = 0,01, torba. frakcja = 1, interakcja. głębokość = 1), n. drzewa = 1))

i zobacz, że istnieją tylko 2 unikalne przewidywane wartości. Interakcja.depth = 2 da ci 3 różne przewidywane wartości. I przekonaj się.


Nie jest jasne, jak to odpowiada na pytanie.
Michael R. Chernick
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.