Glosario

Gradient boosting: cómo muchos árboles pequeños acaban acertando

Por , fundador de Arume · · lectura de 6 min

Definición

El gradient boosting es un método de aprendizaje automático que suma muchos árboles de decisión pequeños, de forma que cada uno corrige los errores acumulados por los anteriores. Una tasa de aprendizaje baja hace que cada árbol aporte poco y el conjunto se ajuste con cuidado. Rinde muy bien con datos en forma de tabla, como ventas por producto, sitio y semana, y admite predecir cuantiles para dar un margen de error.

Es el método que más se usa hoy para prever sobre tablas de datos, y el de las ventas por producto y sitio es una tabla. La idea cabe en una frase: se construye un árbol sencillo, se mira dónde se ha equivocado y se añade otro árbol que corrija justo eso, y así muchas veces.

Qué es exactamente

El gradient boosting construye un modelo por etapas. Según la documentación de scikit-learn, la predicción final es la suma de las salidas de muchos «aprendices débiles», que aquí son árboles de decisión de tamaño fijo. El primero parte de una constante, que con el error cuadrático es la media de lo que se quiere prever. Cada árbol siguiente se ajusta a lo que aún falta: se entrena para predecir los errores del modelo hasta ese momento. En términos técnicos, cada árbol sigue el gradiente negativo de la función de pérdida, una especie de descenso de gradiente en el espacio de funciones.

La documentación lo califica de excelente modelo tanto para regresión como para clasificación, en particular con datos tabulares. Ese «en particular» es la razón de que aparezca en previsión de stock: la entrada es una tabla con una fila por producto, sitio y semana, justo donde los árboles potenciados rinden mejor que otras familias.

También se le llama

Boosting de gradiente, gradient tree boosting, GBDT (Gradient Boosted Decision Trees) o árboles potenciados. Hay varias implementaciones con el mismo principio, entre ellas HistGradientBoosting de scikit-learn y LightGBM. Con árboles aleatorios independientes que se promedian se habla de bosque aleatorio (random forest), que es otra cosa: allí los árboles no se corrigen entre sí.

Un ejemplo

Una pieza vende de verdad 40 unidades a la semana en una tienda de Valencia, y el modelo arranca con la media de todas las tiendas: 25. El error es 15. El primer árbol aprende a predecir ese error. Para simplificar, imagina que lo predice exacto: 15. Pero la tasa de aprendizaje (learning_rate) es 0,1, así que solo se añade el 10 %: la previsión pasa a 26,5. Quedan 13,5 de error.

El segundo árbol aprende los 13,5 y añade el 10 %: 27,85. Al cabo de 20 árboles el error que queda es 15 × 0,9^20, unos 1,8, y la previsión ronda 38,2. Cada paso es pequeño a propósito. La documentación recomienda una tasa de aprendizaje baja, por ejemplo 0,1 o menos, con suficientes árboles, porque valores bajos exigen más árboles pero generalizan mejor.

En la práctica los árboles no predicen el error exacto, sino una versión aproximada que depende de variables como la semana, el producto o la promoción. Por eso el método capta, sin que nadie se lo diga, que Valencia vende más en Fallas y que cierto producto sube con la oferta del proveedor.

Ojo con esto

Lo que conviene saber antes de fiarse de un gradient boosting:

  • Se ajusta demasiado con facilidad: demasiados árboles o árboles muy profundos memorizan el pasado. Se frena con tasa baja, profundidad limitada y parada anticipada.
  • No extrapola: un árbol solo conoce rangos vistos. Si un producto vende de golpe tres veces más que su máximo histórico, el modelo se queda corto.
  • Necesita buenas variables: acierta con lo que le das, y las ventas pasadas, el calendario y las promociones son su alimento.
  • Cada predicción es un solo número: para saber cuánto fiarse hay que pedirle también cuantiles. La documentación de scikit-learn incluye una pérdida de cuantil que sirve para obtener intervalos de predicción.

Dónde aparece en el sistema

Es una de las familias de modelos que se prueban en la previsión de demanda, junto con métodos más sencillos. Con ella se prevé la venta de cada producto en cada sitio y, con la pérdida de cuantil, se saca la banda que acompaña a la cifra y alimenta el riesgo de rotura.

No imponemos un modelo: en la simulación con tus datos se comparan varios sobre tu historial y se queda el que mejor acierta en fechas que no ha visto.

Términos relacionados

LightGBM, variables explicativas, sobreajuste, previsión por cuantiles y red neuronal.

Preguntas frecuentes

¿Es mejor el gradient boosting que Holt-Winters o ARIMA?

Depende. Para pocas series muy regulares, los métodos clásicos aciertan igual y se explican más fácil. Con miles de series, promociones y variables externas, el boosting suele ganar. Se decide con backtest sobre tus datos.

¿Hay que escalar los datos antes?

Con árboles no hace falta: dividen por umbrales y no les afecta la escala de las variables. Con redes neuronales sí, por eso la documentación de scikit-learn lo recomienda para ellas.

¿Se puede saber por qué propone una cifra?

Sí, con técnicas de explicabilidad que muestran qué variables han empujado la previsión hacia arriba o hacia abajo. Esa explicación es la que aparece al preguntar al asistente «¿por qué mandas 15?».

Fuentes

  1. scikit-learn: Ensembles, gradient tree boosting (suma de árboles, learning_rate, HistGradientBoosting, pérdida de cuantil)
  2. Wikipedia: Supervised learning (generalización y sobreajuste)

¿Quieres saber qué pasa con tu stock?

Mándanos un export de ventas y stock y te devolvemos un informe corto: roturas, dinero parado y qué cambiaríamos primero. Sin compromiso.

hello@arume.io

Escríbenos por WhatsApp

Cuéntanos tu proyecto

Te contesta Manuel en menos de 48 horas laborables. Sin compromiso.

O por WhatsApp