A questão
Estou lutando para entender como a previsão é mantida dentro do intervalo ao fazer a classificação binária com o Gradient Boosting.
Assumir que estamos a trabalhar sobre um problema de classificação binária, e a função objectiva é a perda de registo, , onde y é a variável de destino ∈ { 0 , 1 } e H é o nosso modelo atual.
Ao treinar a próxima fraco aluno tal que o nosso novo modelo é H i = H i - 1 + h i , que é o mecanismo que é suposto para manter H i ∈ [ 0 , 1 ] ? Ou, talvez uma pergunta mais relevante, exista esse mecanismo?
Mais informações sobre o que estou fazendo
Estou tentando implementar o aumento de gradiente, usando árvores de regressão. O que faço para evitar isso é que uma multiplicação por um fator c ∈ [ 0 , c max ] , de modo que H + c max h não fique abaixo de zero ou acima de um, e eu seleciono c nesse intervalo que minimiza a função de perda.
Isso traz o seguinte problema: Depois de algumas rodadas, tenho um ponto que está perfeitamente classificado, e a melhor divisão disponível para empurrar o classificador na direção do gradiente quer empurrar esse ponto para cima de um, o que asseguro que não aconteça por configuração . Portanto, toda a próxima iteração selecionará a mesma divisão e o mesmo c .
Eu tentei práticas comuns de regularização
- Diminuindo a taxa de aprendizagem multiplicando por μ = . Isso apenas atrasa o problema.
- Subamostrando o espaço do recurso, mas alguns dos pontos são muito fáceis de classificar, eles marcam quase todas as caixas no campo "isso é positivo?" forma, e quase toda "boa divisão" mostra esse comportamento.
Eu acho que isso não é um problema de parâmetros, e deve haver uma maneira mais sólida de corrigir isso. Não estou descartando a possibilidade de que minha implementação seja interrompida, mas não encontrei nada que resolvesse esse problema.
O que estamos manipulando, no contexto da perda logística, deve ser uma probabilidade; então, como evitamos isso?
Minha intuição seria colocar o modelo que estamos construindo, , em uma função sigmóide tal que seja limitada a [ 0 , 1 ] , e acho que funcionaria, mas quero saber se existem outras soluções. Como o aumento de gradiente parece ser usado com êxito nas tarefas de classificação, uma solução "correta" (isto é, com justificativa) deve existir.