¿Cómo funciona el aprendiz de base lineal para impulsar? ¿Y cómo funciona en la biblioteca xgboost?

9

Sé cómo implementar la función objetivo lineal y los aumentos lineales en XGBoost. Mi pregunta concreta es: cuando el algoritmo se ajusta al residual (o al gradiente negativo), ¿está usando una característica en cada paso (es decir, modelo univariante) o todas las características (modelo multivariado)?

Cualquier referencia a la documentación sobre los aumentos lineales en XGBoost será apreciada.

EDITAR: Los refuerzos lineales se pueden implementar en XGBoost configurando el parámetro 'booster' en 'gblinear'. Ver: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ para obtener información útil sobre el refuerzo lineal. Tenga en cuenta que no estoy hablando de la función objetivo (que también puede ser lineal) sino de los aumentos en sí mismos.

¡Gracias!

Escalera mecánica
fuente
1
No sé cómo se implementa, pero no veo ninguna razón por la que debería considerar solo una característica a la vez
Alexey Grigorev
@AlexeyGrigorev probablemente tenga muchas funciones a la vez, pero entonces, ¿cómo se seleccionan estas funciones? Cualquier documento sobre el proceso específico para el impulso lineal sería muy clarificador.
Escalera mecánica

Respuestas:

17

Respuesta corta a tu pregunta:

cuando el algoritmo se ajusta al residual (o al gradiente negativo), ¿está usando una característica en cada paso (es decir, modelo univariante) o todas las características (modelo multivariante)?

El algoritmo está utilizando una función o todas las funciones dependen de su configuración. En mi larga respuesta que se enumera a continuación, tanto en el tocón de decisión como en los ejemplos de aprendizaje lineal, usan todas las características, pero si lo desea, también puede ajustar un subconjunto de características. Se considera que las columnas de muestreo (características) reducen la varianza del modelo o aumentan la "robustez" del modelo, especialmente si tiene una gran cantidad de características.

En xgboost, para el alumno de base de árbol, puede configurar colsample_bytreecaracterísticas de muestra para que se ajusten a cada iteración. Para el alumno de base lineal, no existen tales opciones, por lo tanto, debería ajustarse a todas las características. Además, no muchas personas usan el aprendizaje lineal en xgboost o el aumento de gradiente en general.


Respuesta larga para lineal como aprendiz débil para impulsar:

En la mayoría de los casos, es posible que no usemos al aprendiz lineal como aprendiz base. La razón es simple: agregar varios modelos lineales juntos seguirá siendo un modelo lineal.

Al impulsar nuestro modelo hay una suma de aprendices básicos:

F(X)=metro=1METROsimetro(X)

METROsimetrometroth

2si1=β0 0+β1Xsi2=θ0 0+θ1X

F(X)=metro=12simetro(X)=β0 0+β1X+θ0 0+θ1X=(β0 0+θ0 0)+(β1+θ1)X

que es un modelo lineal simple! En otras palabras, ¡el modelo de conjunto tiene el "mismo poder" con el alumno base!

XTXβ=XTy


Por lo tanto, a las personas les gustaría usar otros modelos distintos al modelo lineal como aprendiz base. El árbol es una buena opción, ya que agregar dos árboles no es igual a un árbol. Lo demostraré con un caso simple: tocón de decisión, que es un árbol con solo 1 división.

F(X,y)=X2+y2

ingrese la descripción de la imagen aquí

Ahora, verifique las primeras cuatro iteraciones.

ingrese la descripción de la imagen aquí

Tenga en cuenta que, a diferencia del alumno lineal, el modelo en la cuarta iteración no puede lograrse mediante una iteración (un solo tocón de decisión) con otros parámetros.


Hasta ahora, expliqué, por qué las personas no están usando el alumno lineal como aprendiz base. Sin embargo, nada impide que las personas hagan eso. Si usamos el modelo lineal como aprendiz base y restringimos el número de iteraciones, es igual a resolver un sistema lineal, pero limitar el número de iteraciones durante el proceso de resolución.

El mismo ejemplo, pero en el gráfico 3D, la curva roja son los datos, y el plano verde es el ajuste final. Puede ver fácilmente, el modelo final es un modelo lineal, y es el z=mean(data$label)que es paralelo al plano x, y. (¿Puedes pensar por qué? Esto se debe a que nuestros datos son "simétricos", por lo que cualquier inclinación del plano aumentará la pérdida). Ahora, vea lo que sucedió en las primeras 4 iteraciones: el modelo ajustado está subiendo lentamente al valor óptimo (media).

ingrese la descripción de la imagen aquí


Conclusión final, el aprendizaje lineal no se usa ampliamente, pero nada impide que las personas lo usen o lo implementen en una biblioteca R. Además, puede usarlo y limitar el número de iteraciones para regularizar el modelo.

Publicación relacionada:

Aumento de gradiente para regresión lineal: ¿por qué no funciona?

¿Es un tocón de decisión un modelo lineal?

Haitao Du
fuente
1
Yo diría que la combinación de n árboles es un árbol, ¡no importa cuán grande sea n!
Metariat
@Metariat NO !, los árboles combinados NO son un árbol !. para el árbol, verá la forma de "T" en la división. Pero el tocón aumentado verá la forma "#". es decir, ¡la división cruzará otras divisiones!
Haitao Du
¿Puedes dar un ejemplo de n árboles? ¡Te daré un árbol equivalente!
Metariat
@Metariat lo siento, no tengo tiempo por ahora. Pero estoy seguro de que impulsar un tocón de decisión no puede ser generado fácilmente por un árbol de decisión. Volveré a esta pregunta cuando tenga tiempo.
Haitao Du
1
Estoy de acuerdo en que esa combinación de n árboles sigue siendo un árbol, pero este árbol será significativamente más grande. En el peor de los casos, el número de hojas es igual al producto del número de hojas en todos los árboles de entrada, por lo que la complejidad de dicho árbol no es práctica. Por otro lado, en el caso de funciones lineales, la complejidad es exactamente la misma.
Tomek Tarczynski