Interpretacja drzewa decyzyjnego w kontekście ważności operacji

9

Próbuję zrozumieć, jak w pełni zrozumieć proces decyzyjny modelu klasyfikacji drzewa decyzyjnego zbudowanego za pomocą sklearn. Dwa główne aspekty, na które patrzę, to reprezentacja drzewa grafviz oraz lista ważniejszych cech. To, czego nie rozumiem, to sposób, w jaki znaczenie funkcji jest określane w kontekście drzewa. Na przykład, oto moja lista ważności funkcji:

Ranking funkcji: 1. FeatureA (0.300237)

  1. Cecha B (0,166800)

  2. Cecha C (0,092472)

  3. FeatureD (0,075009)

  4. Cecha E (0,068310)

  5. Cecha F (0,067118)

  6. Cecha G (0,066510)

  7. Cecha H (0,043502)

  8. Cecha I (0,040281)

  9. Cecha J (0,039006)

  10. FeatureK (0,032618)

  11. Cecha L (0,008136)

  12. Cecha M (0,000000)

Jednak gdy patrzę na szczyt drzewa, wygląda to tak:Fragment drzewa

W rzeczywistości niektóre funkcje, które są klasyfikowane jako „najważniejsze”, pojawiają się dopiero w dalszej części drzewa, a górną częścią drzewa jest FeatureJ, który jest jedną z najniżej ocenianych funkcji. Moim naiwnym założeniem byłoby, że najważniejsze cechy zostałyby umieszczone w pobliżu szczytu drzewa, aby mieć największy wpływ. Jeśli jest to niepoprawne, to co powoduje, że funkcja jest „ważna”?

Tim Lindsey
źródło
1
ile próbek przypisano do lewej i prawej strony pierwszego węzła?
oW_

Odpowiedzi:

4

Nie jest konieczne, aby im ważniejsza była cecha, tym wyższy jest jej węzeł w drzewie decyzyjnym.

Jest tak po prostu dlatego, że w każdym z tych dwóch przypadków (podział vs ważność) można zastosować różne kryteria (np. Gini Impurity, Entropy-Information Gain, MSE itp.).

Na przykład, SkLearnmożesz zdecydować się na podział węzłów w drzewie decyzyjnym zgodnie z kryterium Entropy-Information Gain (zobacz criterioni 'entropy'at SkLearn), podczas gdy ważność funkcji jest określona przez Gini Ważność, która jest średnim spadkiem Gini zanieczyszczeń dla danej zmiennej we wszystkich drzew lasu losowego (patrz feature_importances_na SkLearni tutaj ).

Jeśli mam rację, SkLearnto samo ma zastosowanie, nawet jeśli zdecydujesz się na podział węzłów w drzewie decyzyjnym zgodnie z kryterium zanieczyszczenia Gini, podczas gdy ważność funkcji jest podana przez Gini Ważność, ponieważ Gini Zanieczyszczenie i Gini Ważność nie są identyczne (zobacz także to i to na Stackoverflow o ważności Gini).

Wyrzutek
źródło
Już @oW_ udzielił raczej poprawnej odpowiedzi na pierwotne pytanie, ale pomyślałem, że dobrze jest napisać to w bardziej zwięzły i przejrzysty sposób dla czytelnika.
Wyrzutek
3

W scikit-learn istotną cechą jest zmniejszenie zanieczyszczenia węzłów. Kluczem jest to, że mierzy ważność tylko na poziomie węzła. Następnie wszystkie węzły są ważone przez liczbę próbek docierających do tego węzła.

Tak więc, jeśli tylko kilka próbek znajdzie się w lewym węźle po pierwszym podziale, może to nie oznaczać, że J jest najważniejszą cechą, ponieważ wzmocnienie w lewym węźle może wpływać tylko na bardzo niewiele próbek. Jeśli dodatkowo wydrukujesz liczbę próbek w każdym węźle, możesz uzyskać lepszy obraz tego, co się dzieje.

oW_
źródło
2

To, że węzeł znajduje się niżej na drzewie, niekoniecznie oznacza, że ​​jest mniej ważne. Znaczenie funkcji w sci-kitlearn jest obliczane na podstawie tego, jak czysto węzeł oddziela klasy (indeks Gini). Zauważysz nawet w przyciętym drzewie, że A jest podzielony trzy razy w porównaniu do J raz, a wyniki entropii (podobna miara czystości jak Gini) są nieco wyższe w węzłach A niż J.

Jeśli jednak mógłbyś wybrać tylko jeden węzeł, wybrałbyś J, ponieważ dałoby to najlepsze prognozy. Ale gdybyś miał opcję, aby wiele węzłów podejmowało kilka różnych decyzji, A byłby najlepszym wyborem.

J_Heads
źródło
Tak więc, w kategoriach laika, zakładając, że istnieją tylko 2 możliwe klasyfikacje (nazwijmy je 0 i 1), cechą u podstawy drzewa będzie ta, która najlepiej dzieli próbki na 2 grupy (tj. Najlepsze zadanie dzielenia 1 na jednej stronie drzewa i 0 na drugiej). Czy to jest dokładne? Nadal nie jestem do końca jasne, jakie znaczenie ma ranking funkcji, jeśli nie jest najlepszy w rozdzielaniu zer i jedynek w tym kontekście
Tim Lindsey
-2

Istotność zmiennej mierzy się przez zmniejszenie dokładności modelu, gdy zmienna jest usuwana. Nowe drzewo decyzyjne utworzone za pomocą nowego modelu bez zmiennej może wyglądać zupełnie inaczej niż oryginalne drzewo. Decyzja o podziale na diagramie jest podejmowana przy uwzględnieniu wszystkich zmiennych w modelu.

Jaką zmienną do podziału w katalogu głównym (i innych węzłach) mierzy się przez zanieczyszczenie. Dobra czystość (np .: wszystko w lewej gałęzi ma tę samą wartość docelową) nie gwarantuje dobrej dokładności. Twoje dane mogą być wypaczone, twoja prawa gałąź ma więcej odpowiedzi niż lewa gałąź. Dlatego nie jest dobrze po prostu poprawnie sklasyfikować lewą gałąź, musimy również wziąć pod uwagę prawą gałąź. Dlatego zmienna dzieląca może, ale nie musi, być ważną zmienną dla ogólnej dokładności modelu.

Zmienne znaczenie jest lepszym miernikiem wyboru zmiennych.

Witaj świecie
źródło
2
Nie sądzę, że tak to jest implementowane w scikit-learn. Tam ważność cech jest mierzona jako „ważność gini”, tj. Całkowity spadek zanieczyszczenia węzła ważony przez odsetek próbek docierających do tego węzła.
oW_
„Ważność funkcji jest obliczana jako (znormalizowane) całkowite zmniejszenie kryterium wprowadzonego przez tę cechę. Jest ona również znana jako ważność Giniego”. - scikit-learn.org/stable/modules/generated/…
Afflatus