W przeciwieństwie do lasów losowych drzewa gradientowe mogą się nadstosowywać. Dlatego, podobnie jak w przypadku sieci neuronowych, możesz stosować regularyzację i wczesne zatrzymywanie, korzystając z danych testowych.
Na przykład na poniższych rysunkach pokazano krzywe strat i dokładności dla zbiorów danych treningowych i sprawdzających podczas trenowania modelu GBT. Zwróć uwagę, jak bardzo krzywe się rozchodzą, co sugeruje wysoki stopień dopasowania.
Rysunek 29. Straty w zależności od liczby drzew decyzyjnych.
Rysunek 30. Dokładność w zależności od liczby drzew decyzyjnych.
Typowe parametry regularyzacji dla drzew z wzmocnieniem gradientowym:
- Maksymalna głębokość drzewa.
- Współczynnik skurczu.
- Stosunek atrybutów testowanych w każdym węźle.
- współczynnik L1 i L2 strat;
Pamiętaj, że drzewa decyzyjne są zwykle płytsze niż modele lasów losowych. Domyślnie drzewa gradientowe w TF-DF są rozwijane do głębokości 6. Ponieważ drzewa są płytkie, minimalna liczba przykładów na liść ma niewielki wpływ i zwykle nie jest dostosowywana.
Potrzebny jest zbiór danych walidacyjnych, gdy liczba przykładów treningowych jest niewielka. Dlatego często trenuje się drzewa gradientowe w pętli walidacji krzyżowej lub wyłącza wczesny stop, gdy wiadomo, że model nie jest nadmiernie dopasowywany.
Przykład użycia
W poprzednim rozdziale trenowaliśmy las losowy na małym zbiorze danych. W tym przykładzie po prostu zastąpimy model lasu losowego modelem drzew gradientowych:
model = tfdf.keras.GradientBoostedTreesModel()
# Part of the training dataset will be used as validation (and removed
# from training).
model.fit(tf_train_dataset)
# The user provides the validation dataset.
model.fit(tf_train_dataset, validation_data=tf_valid_dataset)
# Disable early stopping and the validation dataset. All the examples are
# used for training.
model.fit(
tf_train_dataset,
validation_ratio=0.0,
early_stopping="NONE")
# Note: When "validation_ratio=0", early stopping is automatically disabled,
# so early_stopping="NONE" is redundant here.
Korzystanie i ograniczenia
Drzewa z wzmocnieniem gradientowym mają pewne zalety i wady.
Zalety
- Podobnie jak drzewa decyzyjne, domyślnie obsługują one atrybuty numeryczne i kategorialne oraz często nie wymagają wstępnego przetwarzania atrybutów.
- Drzewa gradientowe mają domyślne hiperparametry, które często dają świetne wyniki. Jednak dostosowanie tych hiperparametrów może znacznie poprawić model.
- Modele drzewa z wzmocnieniem gradientowym są zazwyczaj małe (pod względem liczby węzłów i pamięci) oraz szybkie w wykonaniu (często tylko 1 lub kilka µs na przykład).
Wady
- Drzewa decyzyjne muszą być trenowane sekwencyjnie, co może znacznie spowolnić proces trenowania. Spowolnienie treningu jest jednak w pewnym stopniu kompensowane przez mniejsze drzewa decyzji.
- Podobnie jak lasy losowe, drzewa gradientowych drzew wzrostowych nie mogą uczyć się i wykorzystywać wewnętrznych reprezentacji. Każde drzewo decyzyjne (i każda gałąź każdego drzewa decyzyjnego) musi ponownie nauczyć się wzorca zbioru danych. W niektórych zbiorach danych, zwłaszcza w przypadku zbiorów danych z danymi nieustrukturyzowanymi (np. obrazami czy tekstem), drzewa gradient boostingu dają gorsze wyniki niż inne metody.