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.
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.
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.
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:
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.
- Minimalna liczba przykładów to 5 (
min_examples = 5
) - 10% danych treningowych jest przechowywanych na potrzeby walidacji (
validation_ratio = 0.1
).
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.
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.