Clasificación con aumento de gradiente: cómo mantener la predicción en [0,1]


17

La pregunta

Estoy luchando por comprender cómo se mantiene la predicción dentro del intervalo [0 0,1] cuando se realiza una clasificación binaria con Gradient Boosting.

Supongamos que estamos trabajando en un problema de clasificación binaria, y nuestra función objetivo es la pérdida de registro, , donde y es la variable objetivo { 0 , 1 } y H es nuestro modelo actual.yyoIniciar sesión(Hmetro(Xyo))+(1-yyo)Iniciar sesión(1-Hmetro(Xyo))y{0 0,1}H

Al entrenar al próximo alumno débil modo que nuestro nuevo modelo sea H i = H i - 1 + h i , ¿cuál es el mecanismo que se supone que debe mantener H i[ 0 , 1 ] ? O, tal vez una pregunta más relevante, ¿existe tal mecanismo?hyoHyo=Hyo-1+hyoHyo[0 0,1]


Más información sobre lo que estoy haciendo.

Estoy tratando de implementar el aumento de gradiente, usando árboles de regresión. Lo que hago para evitarlo es que una multiplicación por un factor c [ 0 , c max ] , de modo que H + c max h no vaya por debajo de cero o por encima de uno, y selecciono la c en este rango que minimiza La función de pérdida.hyoC[0 0,Cmax]H+cmaxhc

Esto trae el siguiente problema: después de algunas rondas, tengo un punto que está perfectamente clasificado, y la mejor división disponible para empujar el clasificador en la dirección del gradiente quiere empujar este punto por encima de uno, lo que me aseguro de que no suceda ajuste . Por lo tanto, la siguiente iteración seleccionará la misma división y la misma c = 0 .c=0c=0

Traté de prácticas comunes de regularización

  • Disminuir la tasa de aprendizaje multiplicando por μ = 0.01 . Esto solo retrasa el problema.cμ=0.01
  • Submuestreando el espacio de características, pero algunos de los puntos son muy fáciles de clasificar, marcan casi todas las casillas en "¿es positivo?" forma, y ​​casi cada "buena división" muestra este comportamiento.

Creo que esto no es un problema de parámetros, y debería haber una forma más sólida de solucionarlo. No estoy descartando la posibilidad de que mi implementación esté rota, pero no he encontrado nada que aborde este problema.

Lo que estamos manipulando, en el contexto de la pérdida logística, debería ser una probabilidad, entonces, ¿cómo lo evitamos?


Mi intuición sería poner el modelo que estamos construyendo, , en una función sigmoidea de modo que esté limitado a [ 0 , 1 ] , y supongo que funcionaría, pero quiero saber si hay otras soluciones. Dado que el aumento de gradiente parece usarse con éxito en tareas de clasificación, debe existir una solución "correcta" (es decir, con justificación).H[0,1]


Podría requerir que sea ​​multiplicitivo, ya que ln ( H ) se comporta de manera aditiva con sus otros expertos. Hln(H)
Alex R.

Respuestas:


21

Me gusta pensar en esto en analogía con el caso de los modelos lineales y su extensión a los GLM (modelos lineales generalizados).

En un modelo lineal, ajustamos una función lineal para predecir nuestra respuesta

y^=β0+β1x1+βnxn

Para generalizar a otras situaciones, introducimos una función de enlace, que transforma la parte lineal del modelo en la escala de la respuesta (técnicamente este es un enlace inverso, pero creo que es más fácil pensarlo de esta manera, transformando el predictor lineal en una respuesta, que transformar la respuesta en un predictor lineal).

Por ejemplo, el modelo logístico utiliza la función sigmoide (o logit)

y^=11+exp((β0+β1x1+βnxn))

y la regresión de Poisson usa una función exponencial

y^=Exp(β0 0+β1X1+βnorteXnorte)

Para construir una analogía con el aumento de gradiente, reemplazamos la parte lineal de estos modelos con la suma de los árboles aumentados. Entonces, por ejemplo, el caso gaussiano (análogo a la regresión lineal) se convierte en el bien conocido

y^=yohyo

donde es nuestra secuencia de alumnos débiles. El caso binomial es análogo a la regresión logística (como notó en su respuesta)hyo

y^=11+Exp(-yohyo)

y el aumento de Poisson es análogo a la regresión de Poisson

y^=Exp(yohyo)

yoβyoXyo

Por ejemplo, la pérdida binomial generalmente se encuentra como

yoyyoIniciar sesión(pagyo)+(1-yyo)Iniciar sesión(1-pagyo)

pagyo, los valores pronosticados en la misma escala que la respuesta, y pagyo es una transformación no lineal del predictor lineal Lyo. En cambio, podemos volver a expresar esto en función deLyo, (en este caso también conocido como las probabilidades de registro)

yoyyoLyo-Iniciar sesión(1+Exp(Lyo))

Entonces podemos tomar el gradiente de esto con respecto a L, y aumentar para minimizar directamente esta cantidad.

Solo al final, cuando queremos producir predicciones para el usuario, aplicamos la función de enlace a la secuencia final de alumnos débiles para poner las predicciones en la misma escala que la respuesta. Mientras ajustamos el modelo, trabajamos internamente en la escala lineal todo el tiempo.


2
De acuerdo con "escribir la función de pérdida que se minimiza en función de la parte lineal del modelo". Pero creo que una forma directa de entenderlo sin derivar las probabilidades de registro es: para la parte lineal del modelo, es decirr(-,), piense en la función de pérdida como -yo(yyoIniciar sesión11+mi-r+(1-yyo)Iniciar sesión(1-11+mi-r)), y el pseudo-residual es solo para hacer la derivada de la pérdida wrt r.
user2830451

@ matthew-drury ¿Puede agregar algo de luz sobre la sección multinomial de clase K del mismo algoritmo donde se extiende una idea similar para que funcione?
MixCoded

6

Después de un poco de investigación, parece que mi intuición y el comentario de Alex R. son correctos.

Para construir un modelo continuo con predicciones en [0 0,1], uno puede poner el modelo Hen una función logística (Wikipedia) , de modo que paraHR, tenemos

11+mi-H[0 0,1]
Los pasos de aumento de gradiente luego toman la derivada con respecto a H y actualice el modelo, como si la función logística fuera parte de la función de costo, y funciona.

Esto ha sido sugerido en el artículo Regresión logística aditiva: una visión estadística del impulso , por Friedman, Hastie y Tibshirani, para construir LogitBoost (Wikipedia) , una adaptación de AdaBoost (Wikipedia) a la pérdida logística.

En términos muy básicos, si es posible pasar de la regresión lineal a la regresión logística mediante la adición de un sigmoide, entonces también funciona para convertir el aumento de regresión en aumento de clasificación.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.