Drzewa decyzyjne z wzmocnioną gradientem

Wzmacnianie gradientu jest metodologią stosowaną innego algorytmu systemów uczących się. W prostym stylu wzmacnianie gradientu obejmuje 2 typy modeli:

  • „słaby” który jest zwykle drzewem decyzyjnym.
  • „silne” który składa się z wielu słabych modeli ML.

Przy wzmacnianiu gradientu na każdym etapie trenowany jest nowy słaby model tak, aby przewidywał „błąd” obecnego silnego modelu (zwanego pseudoreakcją). Wyświetlimy „błąd” później. Na razie przyjmijmy, że „błąd” jest różnica między z prognozą i etykietą regresji. Słaby model (czyli „błąd”) to a następnie dodano do silnego modelu ze znakiem ujemnym, aby zmniejszyć błąd solidny model.

Wzmacnianie gradientem jest iteracyjne. Każda iteracja wywołuje tę formułę:

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

gdzie:

  • Najsilniejszy model na etapie $i$ to $F_i$.
  • $f_i$ to słaby model w kroku $i$.

Ta operacja powtarza się, dopóki nie zostanie spełnione kryterium zakończenia, takie jak maksymalna liczby iteracji lub jeśli model (silny) zacznie się zawyżać, zgodnie z pomiarem osobnego zbioru danych do weryfikacji.

Zilustrujemy wzmocnienie gradientu w prostym zbiorze danych regresji, w którym:

  • Celem jest prognozowanie wartości $y$ od $x$.
  • Silny model ma wartość zerową: $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

Zastosujmy ten kod do następującego zbioru danych:

Wykres danych podstawowych dla 1 obiektu – x i jej etykiety – y. Fabuła jest
szereg częściowo tłumionego sinusa
fale.

Rysunek 25. Zbiór danych syntetycznych regresywny z 1 cechą liczbową. .

 

Oto 3 wykresy po pierwszej iteracji wzmocnienia gradientu. algorytm:

Trzy fabuły. Pierwszy wykres przedstawia prognozę silnego modelu, który jest
linia prosta nachylenie 0 i punkt przecięcia z osią y 0. Drugi wykres pokazuje błąd
silnego modelu, który jest szeregiem fal sinusowych. Trzeci wykres przedstawia
prognoza słabego modelu, który jest kwadratem
fale.

Rysunek 26. Trzy wykresy po pierwszej iteracji. .

 

Pamiętaj o tych uwagach na temat wykresów na rys. 26:

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

Pierwszym słabym modelem jest uczenie się przybliżonej reprezentacji etykiety i przede wszystkim obejmuje lewą część przestrzeni cech (tę o największej zmienności, a co za tym idzie, z największym błędem stałego nieprawidłowego modelu).

Poniżej przedstawiono te same wykresy dla innej iteracji algorytmu:

Trzy fabuły. Pierwszy wykres przedstawia prognozę silnego modelu, który jest
odwrotność wykresu prognozy słabego modelu z poprzedniego
Rysunek. Drugi wykres przedstawia błąd silnego modelu, który jest szumem
i zestawu fal sinusowych. Trzeci wykres przedstawia prognozę słabego modelu, który
jest kwadratem
fale.

Rysunek 27. Trzy wykresy po drugiej iteracji. .

 

Pamiętaj o uwagach dotyczących wykresów na rys. 27:

  • 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 prawej części do działania.

Algorytm uruchamiamy jeszcze przez 8 powtórzeń:

Wykresy pokazują, że solidny model stopniowo staje się coraz bliżej danych podstawowych
podczas gdy prognoza słabego modelu stopniowo staje się
słabszy.

Rysunek 28. Trzy wykresy po trzeciej i dziesiątej iteracji. .

 

Na rys. 28 warto zauważyć, że prognoza silnego modelu zaczyna przypominać wykres zbioru danych,

Rysunki te ilustrują algorytm wzmocnienia gradientem, wykorzystując drzewa decyzyjne jako słabych uczniów. Ta kombinacja jest nazywana drzewami decyzyjnymi z wzmocnieniem gradientu.

Poprzednie wykresy sugerują istotę wzmocnienia gradientu. Jednak W przykładzie brakuje dwóch rzeczywistych działań:

  • Zmniejszenie
  • Optymalizacja wartości liści za pomocą jednego etapu metody Newtona
.

Zmniejszanie

Słaby model $f_i$ jest mnożony przez małą wartość $\nu$ (na przykład $\nu = 0,1$) przed dodaniem do silnego modelu $F_i$. Ta mała wartość nazywa się zmniejszenia. Innymi słowy, zamiast każdej iteracji za pomocą wzór:

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

Każda iteracja korzysta z tej formuły:

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

Zmniejszenie w wzmacnianiu gradientu jest analogiczne do tempa uczenia się w sieciach neuronowych. Zmniejszanie kontroluje szybkość uczenia się silnego modelu, co pomaga ograniczyć nadmiernego dopasowania. Oznacza to, że wartość kurczenia bliższa 0,0 zmniejsza większe dopasowanie niż wartość kurczenia bliższa 1,0.

W powyższym kodzie zmniejszanie zostałoby zaimplementowane w następujący sposób:

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