Nadmierne dopasowanie i przycinanie

Korzystając z opisanego powyżej algorytmu, możemy wytrenować schemat decyzyjny, który będzie w doskonały sposób klasyfikować przykłady treningowe, o ile są one możliwe do oddzielenia. Jeśli jednak zbiór danych zawiera szum, to drzewo będzie zbytnio dopasowane do danych i będzie wykazywać niską dokładność testów.

Na rysunku poniżej widać zbiór danych z szumem, w którym występuje zależność liniowa między atrybutem x a etykietą y. Rysunek pokazuje też drzewo decyzyjne wytrenowane na tym zbiorze danych bez żadnego typu regularyzacji. Model poprawnie przewiduje wszystkie przykłady treningowe (prognozy modelu są zgodne z przykładami treningowymi). Jednak w przypadku nowego zbioru danych zawierającego ten sam wzór liniowy i inny przykład szumu model nie będzie działał dobrze.

Ogólny spadek wynosi +1, ale ponieważ zbiór danych jest bardzo szumny, poszczególne punkty danych czasami znacznie odbiegają od linii najlepszego dopasowania.

Rysunek 12. Zaszumiony zbiór danych.

 

Aby ograniczyć nadmierne dopasowanie schematu decyzyjnego, zastosuj jedno lub oba z tych kryteriów regularyzacji podczas trenowania schematu decyzyjnego:

  • Ustaw maksymalną głębokość: zapobiegaj rozrastaniu się drzewek decyzyjnych powyżej maksymalnej głębokości, np. 10.
  • Ustaw minimalną liczbę przykładów w węźle: węzeł z mniejszą liczbą przykładów nie zostanie uwzględniony w podziale.

Rysunek poniżej pokazuje wpływ różnej minimalnej liczby przykładów na poszczególne liście. Model rejestruje mniej szumu.

3 wykresy, z których każdy pokazuje efekty zastosowania innej wartości minimalnej liczby przykładów na liść. Różne wartości to 2, 5 i 10.

Rysunek 13. Różna minimalna liczba przykładów na węzeł.

Możesz też regularyzować po treningu, selektywnie usuwając (przycinając) niektóre gałęzie, czyli konwertując niektóre węzły niebędące liśćmi na liście. Typowym sposobem na wybranie gałęzi do usunięcia jest użycie zbioru danych do weryfikacji. Oznacza to, że jeśli usunięcie gałęzi poprawi jakość modelu na zbiorze danych do weryfikacji, gałęzi ta zostanie usunięta.

Ilustracja tego pomysłu znajduje się na rysunku poniżej. Tutaj sprawdzamy, czy dokładność weryfikacji drzewa decyzyjnego poprawi się, jeśli zielony węzeł niebędący liściem zostanie zamieniony w węzeł liściasty, czyli usuniemy pomarańczowe węzły.

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

Rysunek 14. Przycinanie warunku i jego elementów podrzędnych do elementu liściastego.

 

Poniższy rysunek pokazuje, jaki efekt daje użycie 20% danych do weryfikacji w celu przycięcia drzewa decyzyjnego:

Wykres przedstawiający nieregularny model z nadmiarowym dopasowaniem w porównaniu z idealnym modelem o prostej linii

Rysunek 15. Używanie 20% zbioru danych do przycinania 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:

  • Zastosuj minimalną liczbę przykładów na węzeł.
  • Zastosuj maksymalną głębokość, aby ograniczyć rozrost drzewa decyzyjnego.
  • Oczyść drzewo decyzyjne.
Kod YDF
W YDF algorytmy uczenia są wstępnie skonfigurowane z wartościami domyślnymi dla wszystkich hiperparametrów przycinania. Oto na przykład domyślne wartości 2 parametrów ścinki:
  • Minimalna liczba przykładów to 5 (min_examples = 5)
  • 10% danych treningowych jest przechowywanych na potrzeby walidacji (validation_ratio = 0.1).
Możesz wyłączyć przycinanie w przypadku zbioru danych do sprawdzania poprawności, ustawiając wartość validation_ratio=0.0.

Te kryteria wprowadzają nowe hiperparametry, które trzeba dostosować (np. maksymalną głębokość drzewa), często za pomocą automatycznego dostrajania hiperparametrów. Drzewa decyzyjne są na ogół wystarczająco szybkie, aby można było je trenować i stosować do dostrajania hiperparametrów za pomocą walidacji krzyżowej. Na przykład w przypadku zbioru danych z „n” przykładami:

  • Podziel przykłady treningowe na p nienachodzące na siebie grup. Na przykład: p=10.
  • Dla wszystkich możliwych wartości hiperparametrów, np. maksymalna głębokość w {3,5,6,7,8,9}, minimalna liczba przykładów w {5,8,10,20}.
    • Oceniaj w przypadku każdej grupy jakość drzewa decyzyjnego wytrenowanego na podstawie pozostałych grup p-1.
    • Oblicz średnią ocenę w grupach.
  • Wybierz wartość hiperparametru o najlepszej średniej ocenie.
  • Wytrenuj ostateczne drzewo decyzyjne, używając wszystkich „n” przypadków z wybranymi parametrami hiperparametrów.

W tej sekcji omawiamy sposoby, w jakie drzewa decyzyjne ograniczają nadmierne dopasowanie. Pomimo tych metod niedopasowanie i nadmierne dopasowanie są głównymi słabymi stronami drzewek decyzyjnych. Lasy decyzji wprowadzają nowe metody ograniczania nadmiernego dopasowania, o których opowiemy później.

Bezpośrednia interpretacja drzewa decyzyjnego

Drzewa decyzyjne są łatwe do interpretacji. Zmiana nawet kilku przykładów może całkowicie zmienić strukturę, a co za tym idzie interpretację drzewa decyzji.

Ze względu na sposób tworzenia drzew decyzyjnych, czyli podziału przykładów treningowych, można używać drzew decyzyjnych do interpretacji samego zbioru danych (a nie modelu). Każdy liść reprezentuje pewien fragment zbioru danych.

Kod YDF
W YDF możesz przeglądać drzewa za pomocą funkcji model.describe(). Możesz też uzyskać dostęp do pojedynczego drzewa i jego wykresu za pomocą model.get_tree(). Więcej informacji znajdziesz w  samouczku YDF na temat sprawdzania modeli.

Jednak interpretacja pośrednia również dostarcza informacji.