Como o aprendiz de base linear trabalha para aumentar? E como isso funciona na biblioteca xgboost?

9

Eu sei como implementar a função objetivo linear e os reforços lineares no XGBoost. Minha pergunta concreta é: quando o algoritmo se encaixa no residual (ou no gradiente negativo) ele está usando um recurso em cada etapa (ou seja, modelo univariado) ou todos os recursos (modelo multivariado)?

Qualquer referência à documentação sobre os aumentos lineares no XGBoost será apreciada.

EDIT: Os reforços lineares podem ser implementados no XGBoost, definindo o parâmetro 'booster' como 'gblinear'. Consulte: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ para obter informações úteis sobre reforço linear. Note que eu não estou falando sobre a função objetivo (que também pode ser linear), mas sobre o aumento deles mesmos.

Obrigado!

Escachator
fonte
11
Não sei como é implementado, mas não vejo razão para considerar apenas um recurso por vez
Alexey Grigorev
@AlexeyGrigorev provavelmente leva muitos recursos ao mesmo tempo, mas como esses recursos são selecionados? Qualquer documento sobre o processo específico de aumento linear seria muito esclarecedor.
Escachator 20/08/16

Respostas:

17

Resposta curta para sua pergunta:

quando o algoritmo se encaixa no residual (ou no gradiente negativo) ele está usando um recurso em cada etapa (ou seja, modelo univariado) ou todos os recursos (modelo multivariado)?

O algoritmo está usando um recurso ou todos os recursos dependem da sua configuração. Na minha longa resposta listada abaixo, nos exemplos do toco de decisão e do aluno linear, eles usam todos os recursos, mas se você quiser, também pode ajustar um subconjunto de recursos. As colunas de amostra (recursos) são vistas como reduzindo a variação do modelo ou aumentando a "robustez" do modelo, especialmente se você tiver um grande número de recursos.

Em xgboost, para o aluno da base da árvore, você pode definir colsample_bytreerecursos de amostra para caber em cada iteração. Para o aluno de base linear, não existem essas opções, portanto, ele deve ser adequado a todos os recursos. Além disso, poucas pessoas usam o aprendiz linear no xgboost ou o aumento do gradiente em geral.


Resposta longa para linear como aprendiz fraco para impulsionar:

Na maioria dos casos, não podemos usar o aluno linear como aluno de base. O motivo é simples: a adição de vários modelos lineares ainda será um modelo linear.

Ao impulsionar nosso modelo, há uma soma de alunos básicos:

f(x)=m=1Mbm(x)

onde é o número de iterações no aumento, é o modelo para iteração.Mbmmth

Se o aluno base for linear, por exemplo, suponha que apenas executemos iterações e e ,2b1=β0+β1xb2=θ0+θ1x

f(x)=m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x

que é um modelo linear simples! Em outras palavras, o modelo de conjunto tem o "mesmo poder" do aluno básico!

Mais importante, se usarmos o modelo linear como aluno base, podemos fazer um passo resolvendo o sistema linear vez de passar por várias iterações no aumento.XTXβ=XTy


Portanto, as pessoas gostariam de usar outros modelos além do modelo linear como aluno básico. A árvore é uma boa opção, pois adicionar duas árvores não é igual a uma árvore. Vou demonstrá-lo com um caso simples: cepo de decisão, que é uma árvore com apenas 1 divisão.

Estou fazendo um ajuste de função, onde os dados são gerados por uma função quadrática simples, . Aqui está a verdade do terreno de contorno preenchido (à esquerda) e o encaixe de reforço do coto de decisão final (à direita).f(x,y)=x2+y2

insira a descrição da imagem aqui

Agora, verifique as quatro primeiras iterações.

insira a descrição da imagem aqui

Observe que, diferente do aluno linear, o modelo na 4ª iteração não pode ser alcançado por uma iteração (um único tronco de decisão) com outros parâmetros.


Até agora, expliquei, por que as pessoas não estão usando o aluno linear como aluno de base. No entanto, nada impede as pessoas de fazer isso. Se usarmos o modelo linear como aluno base e restringir o número de iterações, será igual à resolução de um sistema linear, mas limitaremos o número de iterações durante o processo de resolução.

O mesmo exemplo, mas no gráfico 3D, a curva vermelha são os dados e o plano verde é o ajuste final. Você pode ver facilmente, o modelo final é um modelo linear e z=mean(data$label)é paralelo ao plano x, y. (Você pode pensar por quê? Isso ocorre porque nossos dados são "simétricos", portanto, qualquer inclinação do plano aumentará a perda). Agora, verifique o que aconteceu nas primeiras 4 iterações: o modelo ajustado está subindo lentamente para o valor ótimo (média).

insira a descrição da imagem aqui


Conclusão final, o aluno linear não é amplamente utilizado, mas nada impede as pessoas de usá-lo ou implementá-lo em uma biblioteca R. Além disso, você pode usá-lo e limitar o número de iterações para regularizar o modelo.

Post relacionado:

Reforço de gradiente para regressão linear - por que não funciona?

Um coto de decisão é um modelo linear?

Haitao Du
fonte
11
Eu diria que a combinação de n árvores é uma árvore, não importa quão grande seja n!
Metariat
@ Metariat NO !, a combinação de árvores NÃO é uma árvore !. para árvore, você verá a forma "T" na divisão. Mas coto impulsionado, você verá a forma "#". ou seja, a divisão cruzará outras divisões!
Haitao Du
Você pode dar um exemplo de n árvores? Vou te dar uma árvore equivalente!
Metariat
@ Metariat desculpe, não tenho tempo por enquanto. Mas estou certo de que o aumento no tronco de decisão não pode ser facilmente gerado por uma árvore de decisão. Voltará a esta pergunta quando tiver tempo.
Haitao Du
11
Concordo que essa combinação de n árvores ainda é uma árvore, mas essa árvore será significativamente maior. No pior caso, o número de folhas é igual ao produto do número de folhas em todas as árvores de entrada, portanto, a complexidade dessa árvore é impraticável. Por outro lado, no caso de funções lineares, a complexidade é exatamente a mesma.
Tomek Tarczynski