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!
fuente
Respuestas:
Respuesta corta a tu pregunta:
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 configurarcolsample_bytree
caracterí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:
que es un modelo lineal simple! En otras palabras, ¡el modelo de conjunto tiene el "mismo poder" con el alumno base!
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.
Ahora, verifique las primeras cuatro iteraciones.
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).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?
fuente