El boosting de gradiente es una técnica de aprendizaje automático basada en el boosting en un espacio funcional, donde el objetivo son pseudo-residuales en lugar de residuos como en el boosting tradicional. Proporciona un modelo de predicción en forma de un conjunto de modelos de predicción débiles, es decir, modelos que hacen muy pocas suposiciones sobre los datos, que normalmente son árboles de decisión simples . [1] [2] Cuando un árbol de decisión es el aprendiz débil, el algoritmo resultante se llama árboles potenciados por gradiente; normalmente supera al bosque aleatorio . [1] Al igual que con otros métodos de boosting , un modelo de árboles potenciados por gradiente se construye en etapas, pero generaliza los otros métodos al permitir la optimización de una función de pérdida diferenciable arbitraria .
La idea del boosting de gradiente se originó en la observación de Leo Breiman de que el boosting puede interpretarse como un algoritmo de optimización en una función de costo adecuada. [3] Los algoritmos de boosting de gradiente de regresión explícita fueron desarrollados posteriormente, por Jerome H. Friedman , [4] [2] (en 1999 y más tarde en 2001) simultáneamente con la perspectiva de boosting de gradiente funcional más general de Llew Mason, Jonathan Baxter, Peter Bartlett y Marcus Frean. [5] [6] Los últimos dos artículos introdujeron la visión de los algoritmos de boosting como algoritmos iterativos de descenso de gradiente funcional . Es decir, algoritmos que optimizan una función de costo sobre el espacio de funciones eligiendo iterativamente una función (hipótesis débil) que apunta en la dirección del gradiente negativo. Esta visión de gradiente funcional del boosting ha llevado al desarrollo de algoritmos de boosting en muchas áreas del aprendizaje automático y las estadísticas más allá de la regresión y la clasificación.
(Esta sección sigue la exposición de Cheng Li. [7] )
Al igual que otros métodos de refuerzo, el refuerzo de gradiente combina "aprendices" débiles en un único aprendiz fuerte de forma iterativa. Es más fácil de explicar en el contexto de la regresión de mínimos cuadrados , donde el objetivo es "enseñar" a un modelo a predecir valores de la forma minimizando el error cuadrático medio , donde los índices sobre un conjunto de entrenamiento del tamaño de los valores reales de la variable de salida :
Si el algoritmo tiene etapas, en cada etapa ( ), supongamos un modelo imperfecto (para valores bajos , este modelo puede predecir simplemente que será , la media de ). Para mejorar , nuestro algoritmo debería agregar un nuevo estimador, . Por lo tanto,
o, equivalentemente,
Por lo tanto, el aumento de gradiente se ajustará al residuo . Como en otras variantes de aumento, cada una intenta corregir los errores de su predecesora . Una generalización de esta idea a funciones de pérdida distintas del error cuadrático, y a problemas de clasificación y ordenación , se desprende de la observación de que los residuos para un modelo dado son proporcionales a los gradientes negativos de la función de pérdida del error cuadrático medio (MSE) (con respecto a ):
Por lo tanto, el aumento de gradiente se podría generalizar a un algoritmo de descenso de gradiente "conectando" una pérdida diferente y su gradiente.
Muchos problemas de aprendizaje supervisado involucran una variable de salida y y un vector de variables de entrada x , relacionadas entre sí con alguna distribución probabilística. El objetivo es encontrar alguna función que se aproxime mejor a la variable de salida a partir de los valores de las variables de entrada. Esto se formaliza introduciendo alguna función de pérdida y minimizándola en la expectativa:
El método de potenciación de gradiente supone un valor real de y . Busca una aproximación en forma de una suma ponderada de funciones M de alguna clase , denominadas aprendices base (o débiles ):
Generalmente, se nos proporciona un conjunto de entrenamiento de valores conocidos de x y valores correspondientes de y . De acuerdo con el principio de minimización de riesgo empírico , el método intenta encontrar una aproximación que minimice el valor promedio de la función de pérdida en el conjunto de entrenamiento, es decir, minimice el riesgo empírico. Para ello, comienza con un modelo que consiste en una función constante y lo expande de manera incremental de manera voraz :
para , donde es una función de aprendizaje base.
Desafortunadamente, elegir la mejor función en cada paso para una función de pérdida arbitraria L es un problema de optimización computacionalmente inviable en general. Por lo tanto, restringimos nuestro enfoque a una versión simplificada del problema. La idea es aplicar un paso de descenso más pronunciado a este problema de minimización (descenso de gradiente funcional). La idea básica es encontrar un mínimo local de la función de pérdida iterando en . De hecho, la dirección de descenso máximo local de la función de pérdida es el gradiente negativo. [8] Por lo tanto, mover una pequeña cantidad de modo que la aproximación lineal siga siendo válida:
donde . Para valores pequeños , esto implica que .
Además, podemos optimizar encontrando el valor para el cual la función de pérdida tiene un mínimo:
Si consideramos el caso continuo, es decir, donde es el conjunto de funciones diferenciables arbitrarias en , actualizaríamos el modelo de acuerdo con las siguientes ecuaciones
donde es la longitud del paso, definida como Sin embargo, en el caso discreto, es decir, cuando el conjunto es finito [ aclaración necesaria ] , elegimos la función candidata h más cercana al gradiente de L para la cual el coeficiente γ puede calcularse con la ayuda de la búsqueda de línea en las ecuaciones anteriores. Tenga en cuenta que este enfoque es una heurística y, por lo tanto, no produce una solución exacta al problema dado, sino más bien una aproximación. En pseudocódigo, el método genérico de aumento de gradiente es: [4] [1]
Entrada: conjunto de entrenamiento una función de pérdida diferenciable número de iteraciones M.
Algoritmo:
El aumento de gradiente se utiliza normalmente con árboles de decisión (especialmente CART ) de un tamaño fijo como aprendices base. Para este caso especial, Friedman propone una modificación del método de aumento de gradiente que mejora la calidad del ajuste de cada aprendiz base.
El aumento de gradiente genérico en el paso m -ésimo ajustaría un árbol de decisión a pseudorresiduos. Sea el número de sus hojas. El árbol divide el espacio de entrada en regiones disjuntas y predice un valor constante en cada región. Usando la notación de indicador , la salida de para la entrada x se puede escribir como la suma:
donde es el valor predicho en la región . [9]
Luego, los coeficientes se multiplican por algún valor , elegido mediante búsqueda lineal para minimizar la función de pérdida, y el modelo se actualiza de la siguiente manera:
Friedman propone modificar este algoritmo para que elija un valor óptimo independiente para cada una de las regiones del árbol, en lugar de uno único para todo el árbol. Denomina al algoritmo modificado "TreeBoost". Los coeficientes del procedimiento de ajuste del árbol se pueden descartar y la regla de actualización del modelo se convierte en:
El número de nodos terminales en los árboles es un parámetro que controla el nivel máximo permitido de interacción entre las variables en el modelo. Con ( tocones de decisión ), no se permite interacción entre variables. Con el modelo se pueden incluir efectos de la interacción entre hasta dos variables, y así sucesivamente. se puede ajustar para un conjunto de datos en cuestión.
Hastie et al. [1] comentan que normalmente funcionan bien para potenciar y los resultados son bastante insensibles a la elección de este rango, es insuficiente para muchas aplicaciones y es poco probable que sea necesario.
Ajustar demasiado el conjunto de entrenamiento puede provocar una degradación de la capacidad de generalización del modelo, es decir, su rendimiento en ejemplos no vistos. Varias técnicas de regularización reducen este efecto de sobreajuste al restringir el procedimiento de ajuste.
Un parámetro de regularización natural es el número de iteraciones de aumento de gradiente M (es decir, el número de modelos base). Aumentar M reduce el error en el conjunto de entrenamiento, pero aumenta el riesgo de sobreajuste. A menudo, se selecciona un valor óptimo de M monitoreando el error de predicción en un conjunto de datos de validación separado.
Otro parámetro de regularización para el aumento de la densidad de árboles es la profundidad de los árboles. Cuanto mayor sea este valor, mayor será la probabilidad de que el modelo se ajuste en exceso a los datos de entrenamiento.
Una parte importante del aumento de gradiente es la regularización por contracción, que utiliza una regla de actualización modificada:
donde el parámetro se llama "tasa de aprendizaje".
Empíricamente, se ha descubierto que el uso de tasas de aprendizaje pequeñas (como ) produce mejoras espectaculares en la capacidad de generalización de los modelos en comparación con el aumento de gradiente sin contracción ( ). [1] Sin embargo, esto tiene el precio de aumentar el tiempo computacional tanto durante el entrenamiento como durante la consulta : una tasa de aprendizaje más baja requiere más iteraciones.
Poco después de la introducción del aumento de gradiente, Friedman propuso una modificación menor al algoritmo, motivada por el método de agregación bootstrap ("bagging") de Breiman . [2] Específicamente, propuso que en cada iteración del algoritmo, un aprendiz base debería ajustarse a una submuestra del conjunto de entrenamiento extraído al azar sin reemplazo. [10] Friedman observó una mejora sustancial en la precisión del aumento de gradiente con esta modificación.
El tamaño de la submuestra es una fracción constante del tamaño del conjunto de entrenamiento. Cuando , el algoritmo es determinista e idéntico al descrito anteriormente. Los valores más pequeños de introducen aleatoriedad en el algoritmo y ayudan a prevenir el sobreajuste , actuando como una especie de regularización . El algoritmo también se vuelve más rápido, porque los árboles de regresión deben ajustarse a conjuntos de datos más pequeños en cada iteración. Friedman [2] obtuvo que conduce a buenos resultados para conjuntos de entrenamiento de tamaño pequeño y moderado. Por lo tanto, normalmente se establece en 0,5, lo que significa que se utiliza la mitad del conjunto de entrenamiento para construir cada aprendiz base.
Además, al igual que en el bagging, el submuestreo permite definir un error out-of-bag de la mejora del rendimiento de la predicción mediante la evaluación de las predicciones en aquellas observaciones que no se utilizaron en la construcción del siguiente aprendiz base. Las estimaciones out-of-bag ayudan a evitar la necesidad de un conjunto de datos de validación independiente, pero a menudo subestiman la mejora real del rendimiento y el número óptimo de iteraciones. [11] [12]
Las implementaciones de potenciación de árboles de gradiente también suelen utilizar la regularización al limitar la cantidad mínima de observaciones en los nodos terminales de los árboles. Se utiliza en el proceso de creación de árboles al ignorar cualquier división que genere nodos que contengan menos que esta cantidad de instancias del conjunto de entrenamiento.
Imponer este límite ayuda a reducir la variación en las predicciones en las hojas.
Otra técnica de regularización útil para el modelo potenciado por gradiente es penalizar su complejidad. [13] Para los árboles potenciados por gradiente, la complejidad del modelo se puede definir como el número proporcional [ aclaración necesaria ] de hojas en los árboles. La optimización conjunta de la pérdida y la complejidad del modelo corresponde a un algoritmo de pospoda para eliminar las ramas que no logran reducir la pérdida en un umbral.
También se pueden utilizar otros tipos de regularización, como una penalización en los valores de las hojas, para evitar el sobreajuste .
El aumento de gradiente se puede utilizar en el campo del aprendizaje para clasificar . Los motores de búsqueda web comerciales Yahoo [14] y Yandex [15] utilizan variantes del aumento de gradiente en sus motores de clasificación de aprendizaje automático. El aumento de gradiente también se utiliza en la física de alta energía en el análisis de datos. En el Gran Colisionador de Hadrones (LHC), las variantes de las redes neuronales profundas (DNN) con aumento de gradiente tuvieron éxito en la reproducción de los resultados de los métodos de análisis sin aprendizaje automático en los conjuntos de datos utilizados para descubrir el bosón de Higgs . [16] El árbol de decisiones con aumento de gradiente también se aplicó en estudios terrestres y geológicos, por ejemplo, la evaluación de la calidad de los yacimientos de arenisca. [17]
El método tiene varios nombres. Friedman introdujo su técnica de regresión como una "máquina de refuerzo de gradiente" (GBM). [4] Mason, Baxter et al. describieron la clase abstracta generalizada de algoritmos como "reforzamiento de gradiente funcional". [5] [6] Friedman et al. describen un avance de los modelos reforzados por gradiente como árboles de regresión aditiva múltiple (MART); [18] Elith et al. describen ese enfoque como "árboles de regresión reforzados" (BRT). [19]
Una implementación popular de código abierto para R lo llama "Modelo de refuerzo generalizado", [11] sin embargo, los paquetes que expanden este trabajo usan BRT. [20] Otro nombre es TreeNet, en honor a una implementación comercial temprana de Dan Steinberg de Salford System, uno de los investigadores que fueron pioneros en el uso de métodos basados en árboles. [21]
El aumento de gradiente se puede utilizar para la clasificación de importancia de las características, que generalmente se basa en la agregación de la función de importancia de los aprendices base. [22] Por ejemplo, si se desarrolla un algoritmo de árboles potenciados por gradiente utilizando árboles de decisión basados en la entropía , el algoritmo de conjunto clasifica la importancia de las características también en función de la entropía con la salvedad de que se promedia sobre todos los aprendices base. [22] [1]
Si bien el boosting puede aumentar la precisión de un aprendiz base, como un árbol de decisión o una regresión lineal, sacrifica la inteligibilidad y la interpretabilidad . [22] [23] Por ejemplo, seguir el camino que toma un árbol de decisión para tomar su decisión es trivial y se explica por sí solo, pero seguir los caminos de cientos o miles de árboles es mucho más difícil. Para lograr tanto rendimiento como interpretabilidad, algunas técnicas de compresión de modelos permiten transformar un XGBoost en un solo árbol de decisión "nacido de nuevo" que se aproxima a la misma función de decisión. [24] Además, su implementación puede ser más difícil debido a la mayor demanda computacional.