max_delta_step no xgboost

9

Não consigo entender completamente como esse parâmetro funciona a partir da descrição na documentação

[max_delta_step [padrão = 0]] Etapa delta máxima que permitimos que a estimativa de peso de cada árvore seja. Se o valor estiver definido como 0, significa que não há restrição. Se estiver definido como um valor positivo, pode ajudar a tornar a etapa da atualização mais conservadora. Normalmente, esse parâmetro não é necessário, mas pode ajudar na regressão logística quando a classe está extremamente desequilibrada. Configure-o com um valor de 1 a 10 pode ajudar a controlar a atualização

Não está claro para mim a que "etapa delta" se refere, especialmente porque já existe uma solução analítica para os pesos, e os pesos já são penalizados por eta. Alguém pode esclarecer onde esse parâmetro se encaixa no algoritmo, a que se refere a "etapa delta" e como exatamente isso ajuda em conjuntos de dados extremamente desequilibrados?

YetIWillBe
fonte

Respostas:

5

eta introduz uma regularização 'relativa' (multiplicando o peso por um fator constante), mas em casos extremos onde o hessian é quase zero (como quando temos classes muito desequilibradas), isso não é suficiente porque os pesos (em que cálculo o hessian está denominador) torna-se quase infinito. Portanto, o que max_delta_steps faz é introduzir uma regularização "absoluta" limitando o peso antes de aplicar a correção eta.

Se você vir o código de xgboost (arquivo parameter.h, procedimento CalcWeight), poderá ver isso e ver o efeito de outros parâmetros de regularização, lambda e alpha (que são equivalentes à regularização L1 e L2). No efeito lambda especial, complemente (ou pode substituir) max_delta_step, pois uma lambda maior que zero diminui o peso.

Entalhe
fonte