Przekształcanie i przycinanie

Korzystając z opisanego powyżej algorytmu, możemy wytrenować drzewo decyzyjne, które idealnie sklasyfikuje przykłady treningowe (przy założeniu, że przykłady są rozdzielone). Jeśli jednak zbiór danych zawiera szum, drzewo będzie dopasowywać się do danych i wykaże niską dokładność testów.

Poniższy rysunek przedstawia zaszumiony zbiór danych z zależność liniową między obiektem x a etykietą y. Na ilustracji widać też drzewo decyzyjne wytrenowane na tym zbiorze danych bez żadnego typu regularyzacji. Ten model poprawnie przewiduje wszystkie przykłady treningowe (prognoza modelu odpowiada przykładom treningowym). Jednak w przypadku nowego zbioru danych zawierającego ten sam wzorzec liniowy i inną instancję szumu model będzie miał niską skuteczność.

Ogólny nachylenie to +1, ale zbiór danych jest bardzo zaszumiany, więc poszczególne punkty danych są czasem oddalone od najlepszej linii.

Rysunek 12. Zaszumiony zbiór danych.

 

Aby ograniczyć nadmierne stosowanie drzewa decyzyjnego, podczas trenowania drzewa decyzyjnego zastosuj jedno lub oba z tych kryteriów regularności:

  • Ustaw maksymalną głębokość: uniemożliwia drzewom decyzyjnym wzrost wartości ponad maksymalną głębokość, np. 10.
  • Ustaw minimalną liczbę przykładów w liściu: liście, które mają mniej niż pewną liczbę przykładów, nie zostaną uwzględnione w podziale.

Rysunek poniżej przedstawia wpływ różnicy w minimalnej liczbie przykładów na liść. Model wychwytuje mniej szumu.

3 wykresy. Każdy z nich przedstawia wpływ innej wartości na minimalną liczbę przykładów na liść. Dostępne wartości to 2, 5 i 10.

Rysunek 13. Różna minimalna liczba przykładów na liść.

Po trenowaniu można też regularyzować, usuwając (przycinając) niektóre gałęzie, konwertując niektóre węzły inne niż liście na liście. Typowym rozwiązaniem wyboru gałęzi do usunięcia jest użycie zbioru danych do walidacji. Oznacza to, że jeśli usunięcie gałęzi poprawi jakość modelu w zbiorze danych do weryfikacji, gałąź zostanie usunięta.

Tę propozycję ilustruje poniższy rysunek. Sprawdzamy, czy dokładność walidacji drzewa decyzyjnego poprawiłaby się, gdyby zielony węzeł niebędący liśćmi został przekształcony w liść, czyli przycinanie pomarańczowych węzłów.

Dwa drzewa decyzyjne. Jedno drzewo decyzyjne zawiera 9 węzłów, a drugie przycięto do 6 węzłów przez przekształcenie jednego z warunków w liść.

Rysunek 14. Przycinanie liści i ich dzieci w liście.

 

Poniższy rysunek przedstawia efekt użycia 20% zbioru danych do walidacji w celu przycięcia drzewa decyzyjnego:

Wykres przedstawiający pokurczony, nadmiernie dopasowany model
i idealny model o linii prostej

Rysunek 15. Wykorzystanie 20% zbioru danych do obcięcia drzewa decyzyjnego.

 

Pamiętaj, że użycie zbioru danych do walidacji zmniejsza liczbę przykładów dostępnych do wstępnego trenowania drzewa decyzyjnego.

Wielu twórców modeli stosuje wiele kryteriów. Możesz na przykład wykonać wszystkie te czynności:

  • Zastosuj minimalną liczbę przykładów na liść.
  • Zastosuj maksymalną głębokość, aby ograniczyć wzrost drzewa decyzyjnego.
  • Przycięcie drzewa decyzyjnego.
Kod YDF
W YDF algorytmy uczenia są wstępnie skonfigurowane z wartościami domyślnymi dla wszystkich hiperparametrów przycinania. Oto np. domyślne wartości 2 hiperparametrów przycinania:
  • Minimalna liczba przykładów to 5 (min_examples = 5)
  • 10% zbioru danych treningowych jest przechowywane na potrzeby weryfikacji (validation_ratio = 0.1).
Aby wyłączyć przycinanie za pomocą zbioru danych do walidacji, ustaw wartość validation_ratio=0.0.

Kryteria te wprowadzają nowe hiperparametry wymagające dostrojenia (np. maksymalna głębokość drzewa), często za pomocą automatycznego dostrajania hiperparametrów. Drzewa decyzyjne są zwykle wystarczająco szybkie, aby trenować, aby korzystać z dostrajania hiperparametrów w ramach weryfikacji krzyżowej. Na przykład w zbiorze danych z przykładami „n”:

  • Podziel przykłady treningowe na grupy, które się nie nakładają. Przykład: p=10.
  • Dla wszystkich możliwych wartości hiperparametrów, np. maksymalna głębokość w {3,5,6,7,8,9}, minimalna głębokość w {5,8,10,20}.
    • W każdej grupie oceniaj jakość drzewa decyzyjnego wytrenowanego na innych grupach p-1.
    • Uśrednienie oceny w grupach.
  • Wybierz wartość hiperparametru z najlepszą średnią oceną.
  • Wytrenuj drzewo decyzyjne na podstawie wszystkich przykładów „n” z wybranymi hiperparametrami.

W tej sekcji omówiliśmy sposoby ograniczania nadmiernego dopasowania przez drzewa decyzyjne. Pomimo tych metod niedostateczne i nadmierne dopasowanie są główną słabością drzew decyzyjnych. Lasy decyzyjne wprowadzają nowe metody ograniczania nadmiernego dopasowywania, które omówimy później.

Interpretacja bezpośredniego drzewa decyzyjnego

Drzewa decyzyjne są łatwe do zrozumienia. Jednak zmiana nawet kilku przykładów może całkowicie zmienić strukturę, a tym samym również interpretację drzewa decyzyjnego.

Ze względu na sposób budowania drzew decyzyjnych i partycjonowanie przykładów treningowych można użyć drzewa decyzyjnego do interpretacji zbioru danych (a nie modelu). Każdy liść reprezentuje konkretny róg zbioru danych.

Kod YDF
W YDF możesz patrzeć na drzewa za pomocą funkcji model.describe(). Możesz też uzyskać dostęp do poszczególnych drzewa i je narysować za pomocą funkcji model.get_tree(). Więcej informacji znajdziesz w samouczku inspekcji modelu YDF.

Interpretacja pośrednia również daje wiele informacji.