Wzmocnienie gradientu (opcjonalnie)

W przypadku problemów z regresją sensowne jest zdefiniowanie błędu podpisanego jako różnicy między prognozą a etykietą. Jednak w przypadku innych rodzajów problemów taka strategia często prowadzi do złych wyników. Lepszą strategią przy wzmocnieniu gradientu jest:

  • Zdefiniuj funkcję straty podobną do funkcji strat używanych w sieciach neuronowych. Na przykład entropia (zwana też stratą logarytmiczną) w przypadku problemu z klasyfikacją.
  • Wytrenuj słaby model, aby prognozował gradient straty na podstawie danych wyjściowych modelu.

Formalnie, biorąc pod uwagę funkcję straty $L(y,p)$, gdzie $y$ to etykieta, a $p$ prognozę, pseudoodpowiedź $z_i$ używana do trenowania słabego modelu w kroku $i$ to:

$$ z_i = \frac {\partial L(y, F_i)} {\partial F_i} $$

gdzie:

  • $F_i$ to prognoza silnego modelu.

Poprzedni przykład stanowi problem regresji: celem jest prognozowanie wartości liczbowej. W przypadku regresji typową funkcją straty jest błąd kwadratowy:

$$ L(y,p) = (y - p)^2 $$

W tym przypadku gradient jest:

$$ z = \frac {\partial L(y, F_i)} {\partial F_i} = \frac {\partial(y-p)^2} {\partial p} = 2(y - p) = 2 \ \text{signed error} $$

W kolejności słów gradient to podpisany błąd z naszego przykładu z współczynnikiem 2. Pamiętaj, że stałe czynniki nie mają znaczenia ze względu na kurczenie się. Pamiętaj, że ta równoważność dotyczy tylko problemów z regresją, w których występuje kwadratowa utrata błędów. W przypadku innych problemów z uczeniem nadzorowanym (np. klasyfikacji, rankingu, regresji z utratą centyla) nie ma równości między gradientem a błędem podpisanym.

Optymalizacja liści i struktury za pomocą kroku metody Newtona

Metoda Newtona to metoda optymalizacji, podobnie jak zejście gradientowe. Jednak w odróżnieniu od zejścia gradientowego, który do optymalizacji korzysta tylko z gradientu funkcji, metoda Newtona używa do optymalizacji zarówno gradientu (pierwsza pochodna), jak i drugiej pochodnej funkcji.

Etap opadania gradientu wygląda tak:

$$ x_{i+1} = x_i - \frac {df}{dx}(x_i) = x_i - f'(x_i) $$

i metody Newtona w następujący sposób:

$$ x_{i+1} = x_i - \frac {\frac {df}{dx} (x_i)} {\frac {d^2f}{d^2x} (x_i)} = x_i - \frac{f'(x_i)}{f''(x_i)}$$

Opcjonalnie metodę Newtona można zintegrować z trenowaniem drzew o wzmocnieniu gradientowym na 2 sposoby:

  1. Po wytrenowaniu drzewa do każdego liścia stosowany jest krok Newtona i zastępuje on jego wartość. Struktura drzewa jest niezmieniona – zmieniają się tylko wartości liści.
  2. W trakcie wzrostu drzewa warunki są wybierane na podstawie wyniku obejmującego komponent formuły Newtona. Ma to wpływ na strukturę drzewa.
Kod YDF
W YDF:
  • Funkcja YDF zawsze stosuje na liściu krok Newtona (opcja 1).
  • Możesz włączyć opcję 2, używając use_hessian_gain=True.