Aumento do gradiente (unidade opcional)

Em problemas de regressão, faz sentido definir o erro assinado como a diferença entre a previsão e o rótulo. No entanto, em outros tipos de problemas, essa estratégia geralmente leva a resultados ruins. Uma estratégia melhor usada no aumento do gradiente é:

  • Defina uma função de perda semelhante às funções de perda usadas em redes neurais. Por exemplo, a entropia (também conhecida como perda de log) para um problema de classificação.
  • Treine o modelo fraco para prever o gradiente da perda de acordo com a saída forte do modelo.

Oficialmente, considerando uma função de perda $L(y,p)$ em que $y$ é um rótulo e $p$ é uma previsão, a pseudoresposta $z_i$ usada para treinar o modelo fraco na etapa $i$ é:

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

onde:

  • $F_i$ é a previsão do modelo forte.

O exemplo anterior era um problema de regressão: o objetivo é prever um valor numérico. No caso da regressão, o erro quadrático é uma função de perda comum:

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

Nesse caso, o gradiente é:

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

Em palavras, o gradiente é o erro assinado do exemplo com um fator de 2. Observe que os fatores constantes não importam por causa da redução. Essa equivalência só é verdadeira para problemas de regressão com perda de erros quadráticos. Para outros problemas de aprendizado supervisionado (por exemplo, classificação, classificação, regressão com perda de percentil), não há equivalência entre o gradiente e um erro com sinal.

Otimização de folhas e estruturas com a etapa de método de Newton

O método de Newton é um método de otimização como o gradiente descendente. No entanto, ao contrário do gradiente descendente que usa apenas o gradiente da função para otimização, o método de Newton usa o gradiente (primeira derivada) e a segunda derivada da função para otimização.

A etapa do gradiente descendente é a seguinte:

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

e ao método de Newton da seguinte maneira:

$$ 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)}$$

Opcionalmente, o método de Newton pode ser integrado ao treinamento de árvores aprimoradas por gradiente de duas maneiras:

  1. Depois que uma árvore é treinada, uma etapa de Newton é aplicada em cada folha e substitui o valor dela. A estrutura da árvore permanece intacta. Apenas os valores da folha mudam.
  2. Durante o crescimento de uma árvore, as condições são selecionadas de acordo com uma pontuação que inclui um componente da fórmula de Newton. A estrutura da árvore é afetada.
Código YDF
No YDF:
  • O YDF sempre aplica uma etapa de Newton na folha (opção 1).
  • É possível ativar a opção 2 com use_hessian_gain=True.