La pregunta
Estoy luchando por comprender cómo se mantiene la predicción dentro del intervalo 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.
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?
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.
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 .
Traté de prácticas comunes de regularización
- Disminuir la tasa de aprendizaje multiplicando por μ = 0.01 . Esto solo retrasa el problema.
- 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).
fuente
Respuestas:
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
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 la regresión de Poisson usa una función exponencial
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
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 el aumento de Poisson es análogo a la regresión de Poisson
Por ejemplo, la pérdida binomial generalmente se encuentra como
Entonces podemos tomar el gradiente de esto con respecto aL , 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.
fuente
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 , 1 ] , uno puede poner el modelo H en una función logística (Wikipedia) , de modo que paraH∈ R , tenemos
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.
fuente