Drzewa decyzyjne typu gradientowe

Podobnie jak awansowanie i wzmacnianie, wzmacnianie gradientu odbywa się tak samo jak inny algorytm systemów uczących się. Wzmocnienie gradientu polega nieformalnie na dwóch rodzajach modeli:

  • „słabego” modelu systemów uczących się, który zwykle jest drzewem decyzyjnym.
  • &silny model systemów uczących się, który składa się z wielu słabych modeli.

W przypadku wzmacniania gradientu w każdym kroku trenowany jest nowy, słaby model, aby przewidywać „obecny” błąd (nazywany odpowiedzią pseudo). Więcej informacji o błędach znajdziesz w dalszej części. Na razie załóżmy, że &prognoza to różnica między prognozą a etykietą regresji. Słaby model (czyli „"error"”) jest następnie dodawany do silnego modelu z ujemnym znakiem ujemnym, aby ograniczyć błąd modelu.

Wzmocnienie gradientu jest iteracyjne. Każda iteracja wywołuje tę formułę:

\[ F_{i+1} = F_i - f_i \]

gdzie:

  • $F_i$ to solidny model na etapie $i$.
  • $f_i$ to słaby model na etapie $i$.

Ta operacja będzie powtarzana, aż zostanie spełnione kryterium zatrzymania, np. przez maksymalną liczbę iteracji lub gdy model (silny) zacznie się przeciążać zgodnie z pomiarem w osobnym zbiorze danych weryfikacyjnych.

Ilustracja pokazująca wzmocnienie gradientu w prostym zbiorze danych regresji, w którym:

  • Celem jest prognozowanie $y$ od $x$.
  • Silny model jest zainicjowany do zera stałego: $F_0(x) = 0$.
# Simplified example of regressive gradient boosting.

y = ... # the labels
x = ... # the features

strong_model = []
strong_predictions = np.zeros_like(y) # Initially, the strong model is empty.

for i in range(num_iters):

    # Error of the strong model
    error = strong_predictions - y

    # The weak model is a decision tree (see CART chapter)
    # without pruning and a maximum depth of 3.
    weak_model = tfdf.keras.CartModel(
        task=tfdf.keras.Task.REGRESSION,
        validation_ratio=0.0,
        max_depth=3)
    weak_model.fit(x=x, y=error)

    strong_model.append(weak_model)

    weak_predictions = weak_model.predict(x)[:,0]

    strong_predictions -= weak_predictions

Zapisz ten kod w następującym zbiorze danych:

Zasada grzbietowa dla jednej cechy, x i jej etykietę y. Fabuła to seria osłabionych fal sinusowych.

Rysunek 25. Syntetyczny zbiór regresywny z jedną funkcją liczbową.

 

Oto trzy wykresy po pierwszym iteracji algorytmu gradientu wzmacniającego:

Trzy fabuły. Pierwszy wykres przedstawia prognozę silnego modelu, czyli prostą linię nachylenia 0 i przechwycenie Y. Drugi wykres przedstawia błąd silnego modelu, który jest serią sinusów. Trzeci wykres przedstawia prognozowanie słabego modelu, który jest zbiorem fal kwadratowych.

Rysunek 26. 3 działki po pierwszej iteracji.

 

Pamiętaj, że:

  • Pierwszy wykres przedstawia prognozy silnego modelu, który obecnie wynosi 0.
  • Drugi wykres przedstawia błąd, który jest etykietą słabego modelu.
  • Trzeci wykres przedstawia słaby model.

Pierwszym słabym modelem jest uczenie się przybliżonej etykiety, a skupianie się głównie na lewej części przestrzeni cech (część z największą zmiennością, a tym samym na najwięcej błędów w przypadku stałego nieprawidłowego modelu).

Te same fazy to kolejne powtarzanie algorytmu:

Trzy fabuły. Pierwszy wykres przedstawia prognozę silnego modelu, który jest odwrotnością przewidywanego dla słabego modelu z poprzedniej rysunku. Drugi wykres przedstawia błąd silnego modelu, który jest szumem fal dźwiękowych. Trzeci wykres przedstawia prognozę słabego modelu, który jest kilkoma falami kwadratowymi.

Rysunek 27. 3 działki po drugiej iteracji.

 

Pamiętaj, że:

  • Silny model zawiera teraz prognozę słabego modelu poprzedniej iteracji.
  • Nowy błąd silnego modelu jest nieco mniejszy.
  • Nowa prognoza słabego modelu skupia się teraz na właściwej części cech.

Algorytm uruchamiamy w 8 kolejnych iteracjach:

Wykresy mocne wskazują na to, że silny model coraz bardziej zbliża się do ziemi, a prognozowanie słabego modelu stopniowo staje się coraz słabszy.

Rysunek 28. 3 działki po 3. próbie i 10. iteracji.

 

Zwróć uwagę, że na rysunku 28 prognoza silnego modelu zaczyna przypominać schemat zbioru danych.

Liczby te ilustrują algorytm wzmocnienia gradientu, wykorzystując drzewa decyzyjne jako słabych uczniów. To połączenie nazywane jest drzewami przyrostowymi (decyzyjnymi).

Poprzednie fazy sugerują istotność wzmocnienia gradientu. W tym przykładzie brakuje jednak 2 rzeczywistych operacji:

  • Zmniejszenie
  • Optymalizacja wartości liściowych za pomocą jednego kroku metody Newtona

Zmniejszanie

Słaby model $f_i$ jest mnożony przez niewielką wartość $\nu$ (np.$\nu = 0,1$), zanim zostanie dodany do silnego modelu $F_i$. Ta niewielka wartość jest nazywana skurczem. Innymi słowy, zamiast każdej iteracji użyj następującego wzoru:

\[ F_{i+1} = F_i - f_i \]

Każda iteracja wykorzystuje tę formułę:

\[ F_{i+1} = F_i - \nu f_i \]

Zmniejszenie wzmocnienia gradientu jest analogiczne do współczynnika uczenia się w sieciach neuronowych. „Zmniejszenie” pozwala kontrolować szybkość uczenia się silnego modelu, co pomaga ograniczyć nadmierne dopasowanie. Oznacza to, że wartość kurczenia się mniejsza do 0,0 zmniejsza wartość dopasowania zbyt większą do 1,0.

W powyższym kodzie uwięzienie można zastosować w ten sposób:

shrinkage = 0.1   # 0.1 is a common shrinkage value.
strong_predictions -= shrinkage * weak_predictions