Día 20 del “Calendario de Adviento” de aprendizaje automático: regresión lineal impulsada por gradiente en Excel

combinamos el aprendizaje con votación, embolsado y Random Forest.

La votación en sí es sólo un mecanismo de agregación. No crea diversidad, sino que combina predicciones de modelos ya diferentes.
El ensacado, por otro lado, crea explícitamente diversidad al entrenar el mismo modelo base en múltiples versiones de arranque del conjunto de datos de entrenamiento.

Random Forest amplía el embolsado restringiendo adicionalmente el conjunto de características consideradas en cada división.

Desde un punto de vista estadístico, la idea es simple e intuitiva: la diversidad se crea mediante la aleatoriedad, sin introducir ningún concepto de modelado fundamentalmente nuevo.

Pero el aprendizaje en conjunto no termina ahí.

Existe otra familia de métodos de conjuntos que no se basan en absoluto en la aleatoriedad, sino en la optimización. Gradient Boosting pertenece a esta familia. Y para entenderlo verdaderamente, comenzaremos con una idea deliberadamente extraña:

Aplicaremos el aumento de gradiente a la regresión lineal.

Sí, lo sé. Probablemente esta sea la primera vez que haya oído hablar de la aplicación de la regresión lineal potenciada por gradiente.

(Mañana veremos árboles de decisión potenciados por gradiente).

En este artículo, aquí está el plan:

Primero, daremos un paso atrás y revisaremos los tres pasos fundamentales del aprendizaje automático. Luego, presentaremos el algoritmo de aumento de gradiente. A continuación, aplicaremos el aumento de gradiente a la regresión lineal. Finalmente, reflexionaremos sobre la relación entre Gradient Boosting y Gradient Descent.

1. Aprendizaje automático en tres pasos

Para que el aprendizaje automático sea más fácil de aprender, siempre lo separo en tres pasos claros. Apliquemos este marco a la regresión lineal potenciada por gradiente.

Porque, a diferencia del embolsado, cada paso revela algo interesante.

Tres pasos de aprendizaje en Machine Learning: todas las imágenes del autor

1. modelo

Un modelo es algo que toma características de entrada y produce una predicción de salida.

En este artículo, el modelo base será la regresión lineal.

1bis. Modelo de método de conjunto

El aumento de gradiente no es un modelo en sí mismo. Es un método conjunto que agrega varios modelos base en un único metamodelo. Por sí solo, no asigna entradas a salidas. Debe aplicarse a un modelo base.

Aquí, se utilizará el aumento de gradiente para agregar modelos de regresión lineal.

2. Ajuste del modelo

Cada modelo base debe ajustarse a los datos de entrenamiento.

Para la regresión lineal, ajustar significa estimar los coeficientes. Esto se puede hacer numéricamente usando Gradient Descent, pero también analíticamente. En Google Sheets o Excel, podemos usar directamente la función ESTIMACIÓN LINEAL para estimar estos coeficientes.

2bis. Aprendizaje de modelos conjuntos

Al principio, el aumento de gradiente puede parecer una simple agregación de modelos. Pero sigue siendo un proceso de aprendizaje. Como veremos, se basa en una función de pérdida, exactamente como los modelos clásicos que aprenden pesos.

3. Ajuste del modelo

El ajuste del modelo consiste en optimizar los hiperparámetros.

En nuestro caso, el modelo base de Regresión Lineal en sí no tiene hiperparámetros (a menos que usemos variantes regularizadas como Ridge o Lasso).

Sin embargo, Gradient Boosting introduce dos hiperparámetros importantes: el número de pasos de impulso y la tasa de aprendizaje. Esto lo veremos en el siguiente apartado.

En pocas palabras, eso es aprendizaje automático, simplificado, ¡en tres pasos!

2. Algoritmo de regresor de aumento de gradiente

2.1 Principio del algoritmo

Estos son los pasos principales del algoritmo Gradient Boosting, aplicado a la regresión.

Inicialización: comenzamos con un modelo muy simple. Para la regresión, este suele ser el valor promedio de la variable objetivo. Cálculo de errores residuales: Calculamos residuos, definidos como la diferencia entre los valores reales y las predicciones actuales. Ajuste de regresión lineal a residuos: ajustamos un nuevo modelo base (aquí, una regresión lineal) a estos residuos. Actualizar el conjunto: agregamos este nuevo modelo al conjunto, escalado según una tasa de aprendizaje (también llamado contracción). Repitiendo el proceso: Repetimos los pasos 2 a 4 hasta alcanzar el número deseado de iteraciones de impulso o hasta que el error converja.

¡Eso es todo! Este es el procedimiento básico para realizar un aumento de gradiente aplicado a la regresión lineal.

2.2 Algoritmo expresado con fórmulas

Ahora podemos escribir las fórmulas explícitamente, lo que ayuda a que cada paso sea concreto.

Paso 1 – Inicialización
Comenzamos con un modelo constante igual al promedio de la variable objetivo:
f0 = promedio(y)

Paso 2 – Cálculo residual
Calculamos los residuos, definidos como la diferencia entre los valores reales y las predicciones actuales:
r1 = y − f0

Paso 3: ajustar un modelo base a los residuos
Ajustamos un modelo de regresión lineal a estos residuos:
r̂1 = a0 · x + b0

Paso 4: actualiza el conjunto
Actualizamos el modelo agregando la regresión ajustada, escalada por la tasa de aprendizaje:
f1 = f0 − tasa_de_aprendizaje · (a0 · x + b0)

Próxima iteración
Repetimos el mismo procedimiento:
r2 = y − f1
r̂2 = a1 · x + b1
f2 = f1 − tasa_de_aprendizaje · (a1 · x + b1)

Desarrollando esta expresión obtenemos:
f2 = f0 − tasa_de_aprendizaje · (a0 · x + b0) − tasa_de_aprendizaje · (a1 · x + b1)

El mismo proceso continúa en cada iteración. Se vuelven a calcular los residuos, se ajusta un nuevo modelo y el conjunto se actualiza agregando este modelo con una tasa de aprendizaje.

Esta formulación deja claro que Gradient Boosting construye el modelo final como una suma de modelos de corrección sucesivos.

3. Regresión lineal potenciada por gradiente

3.1 Entrenamiento del modelo base

Comenzamos con una regresión lineal simple como modelo base, utilizando un pequeño conjunto de datos de diez observaciones que generé.

Para el ajuste del modelo base usaremos una función en Google Sheet (también funciona en Excel): LINEST para estimar los coeficientes de la regresión lineal.

Regresión lineal potenciada por gradiente \ Conjunto de datos simple con regresión lineal — Imagen del autor

3.2 Algoritmo de aumento de gradiente

La implementación de estas fórmulas es sencilla en Google Sheet o Excel.

La siguiente tabla muestra el conjunto de datos de entrenamiento junto con los diferentes pasos de los pasos de aumento de gradiente:

Regresión lineal potenciada por gradiente con todos los pasos en Excel – Imagen del autor

Para cada paso de adaptación, utilizamos la función de Excel ESTIMACIÓN LINEAL:

Regresión lineal potenciada por gradiente con fórmula para la estimación de coeficientes — Imagen del autor

Solo haremos 2 iteraciones y podemos adivinar cómo va con más iteraciones. A continuación se muestra un gráfico para mostrar los modelos en cada iteración. Los diferentes tonos de rojo ilustran la convergencia del modelo y también mostramos el modelo final que se encuentra directamente con el descenso de gradiente aplicado directamente a y.

Regresión lineal potenciada por gradiente — Imagen del autor

3.3 Por qué impulsar la regresión lineal es puramente pedagógico

Si se analiza detenidamente el algoritmo, surgen dos observaciones importantes.

Primero, en el paso 2, ajustamos una regresión lineal a los residuos, tomará tiempo y pasos algorítmicos lograr los pasos de ajuste del modelo; en lugar de ajustar una regresión lineal a los residuos, podemos ajustar directamente una regresión lineal a los valores reales de y, ¡y ya encontraríamos el modelo óptimo final!

En segundo lugar, cuando se suma una regresión lineal a otra regresión lineal, sigue siendo una regresión lineal.

Por ejemplo, podemos reescribir f2 como:

f2 = f0 – tasa_de_aprendizaje *(b0+b1) – tasa_de_aprendizaje * (a0+a1) x

Esta sigue siendo una función lineal de x.

Esto explica por qué la regresión lineal potenciada por gradiente no aporta ningún beneficio práctico. Su valor es puramente pedagógico: nos ayuda a comprender cómo funciona el algoritmo Gradient Boosting, pero no mejora el rendimiento predictivo.

De hecho, es incluso menos útil que el embolsado aplicado a la regresión lineal. Con el ensacado, la variabilidad entre los modelos bootstrap nos permite estimar la incertidumbre de la predicción y construir intervalos de confianza. La regresión lineal potenciada por gradiente, por otro lado, se colapsa en un único modelo lineal y no proporciona información adicional sobre la incertidumbre.

Como veremos mañana, la situación es muy diferente cuando el modelo base es un árbol de decisión.

3.4 Ajuste de hiperparámetros

Hay dos hiperparámetros que podemos ajustar: el número de iteraciones y la tasa de aprendizaje.

Para el número de iteraciones, solo implementamos dos, pero es fácil imaginar más y podemos detenernos en examinar la magnitud de los residuos.

Para la tasa de aprendizaje, podemos cambiarla en Google Sheet y ver qué sucede. Cuando la tasa de aprendizaje es pequeña, el “proceso de aprendizaje” será lento. Y si la tasa de aprendizaje es 1, podemos ver que la convergencia se logra en la iteración 1.

Regresión lineal potenciada por gradiente con tasa de aprendizaje = 1: imagen del autor

Y los residuos de la iteración 1 ya son ceros.

Regresión lineal potenciada por gradiente con tasa de aprendizaje = 1: imagen del autor

Si la tasa de aprendizaje es superior a 1, entonces el modelo divergirá.

Divergencia de regresión lineal potenciada por gradiente: imagen del autor

4. Impulsar como descenso de gradiente en el espacio funcional

4.1 Comparación con el algoritmo de descenso de gradiente

A primera vista, el papel de la tasa de aprendizaje y el número de iteraciones en Gradient Boosting parece muy similar a lo que vemos en Gradient Descent. Esto naturalmente lleva a la confusión.

Los principiantes suelen notar que ambos algoritmos contienen la palabra “gradiente” y siguen un procedimiento iterativo. Por lo tanto, es tentador suponer que el descenso del gradiente y el aumento del gradiente están estrechamente relacionados, sin saber realmente por qué. Los practicantes experimentados suelen reaccionar de manera diferente. Desde su perspectiva, los dos métodos parecen no estar relacionados. Gradient Descent se utiliza para ajustar modelos basados ​​en peso optimizando sus parámetros, mientras que Gradient Boosting es un método conjunto que combina múltiples modelos ajustados con los residuos. Los casos de uso, las implementaciones y la intuición parecen completamente diferentes. Sin embargo, en un nivel más profundo, los expertos dirán que estos dos algoritmos son en realidad la misma idea de optimización. La diferencia no radica en la regla de aprendizaje, sino en el espacio donde se aplica esta regla. O podemos decir que la variable de interés es diferente.

Gradient Descent realiza actualizaciones basadas en gradientes en el espacio de parámetros. Gradient Boosting realiza actualizaciones basadas en gradientes en el espacio funcional.

Esa es la única diferencia en esta optimización numérica matemática. Veamos las ecuaciones en el caso de regresión y en el caso general a continuación.

4.2 El caso del error cuadrático medio: mismo algoritmo, espacio diferente

Con el error cuadrático medio, el descenso del gradiente y el aumento del gradiente minimizan el mismo objetivo y están impulsados ​​por la misma cantidad: el residual.

En Gradient Descent, los residuales influyen en las actualizaciones de los parámetros del modelo.

En Gradient Boosting, los residuos actualizan directamente la función de predicción.

En ambos casos, la tasa de aprendizaje y el número de iteraciones juegan el mismo papel. La diferencia radica únicamente en dónde se aplica la actualización: espacio de parámetros versus espacio de funciones.

Una vez que esta distinción es clara, resulta evidente que el aumento de gradiente con MSE es simplemente el descenso de gradiente expresado a nivel de funciones.

4.3 Aumento de gradiente con cualquier función de pérdida

La comparación anterior no se limita al error cuadrático medio. Tanto el descenso de gradiente como el aumento de gradiente se pueden definir con respecto a diferentes funciones de pérdida.

En Gradient Descent, la pérdida se define en el espacio de parámetros. Esto requiere que el modelo sea diferenciable con respecto a sus parámetros, lo que naturalmente restringe el método a modelos basados ​​en el peso.

En Gradient Boosting, la pérdida se define en el espacio de predicción. Sólo la pérdida debe ser diferenciable respecto de las predicciones. El modelo base en sí no necesita ser diferenciable y, por supuesto, no necesita tener su propia función de pérdida.

Esto explica por qué Gradient Boosting puede combinar funciones de pérdida arbitrarias con modelos no basados ​​en peso, como los árboles de decisión.

Conclusión

El aumento de gradiente no es sólo una técnica de conjunto ingenua, sino un algoritmo de optimización. Sigue la misma lógica de aprendizaje que Gradient Descent, diferenciándose únicamente en el espacio donde se realiza la optimización: parámetros versus funciones. El uso de la regresión lineal nos permitió aislar este mecanismo en su forma más simple.

En el próximo artículo, veremos cómo este marco se vuelve realmente poderoso cuando el modelo base es un árbol de decisión, lo que lleva a regresores de árbol de decisión potenciados por gradiente.

Todos los archivos de Excel están disponibles a través de este enlace de Kofi. Tu apoyo significa mucho para mí. El precio aumentará durante el mes, por lo que los primeros seguidores obtendrán el mejor valor.

Todos los archivos de hojas de Excel/Google para ML y DL