Glosario
LightGBM: la librería de gradient boosting pensada para tablas grandes
Definición
LightGBM es una librería de código abierto que implementa gradient boosting con árboles de decisión. Su documentación destaca velocidad de entrenamiento, menor uso de memoria, mejor acierto, aprendizaje paralelo, distribuido y en GPU, y capacidad para datos a gran escala. Agrupa los valores continuos en cajones (histogramas) y hace crecer cada árbol por hojas. Es una opción habitual para prever la venta por producto y sitio, y no la única.
LightGBM no es un método nuevo, es una forma muy eficiente de hacer gradient boosting. Se usa mucho en previsión porque entrena rápido con muchos millones de filas, y una tabla de ventas por producto, sitio y semana crece muy deprisa. Aquí va cómo consigue la velocidad y qué hay que vigilar.
Qué es exactamente
LightGBM es un marco de gradient boosting que usa algoritmos basados en árboles, según su documentación oficial. Su propia web enumera las ventajas: entrenamiento más rápido y más eficiente, menor consumo de memoria, mejor acierto, soporte para aprendizaje paralelo, distribuido y en GPU, y capacidad para manejar datos a gran escala.
Lo que lo distingue del gradient boosting de siempre son dos decisiones de diseño. La primera es el algoritmo basado en histogramas: en lugar de ordenar los valores de cada variable y probar cortes entre filas, agrupa los valores continuos en cajones discretos. La segunda es el crecimiento de los árboles por hojas, en vez de por niveles.
También se le llama
Light Gradient Boosting Machine, o LGBM para abreviar. Hay otras implementaciones con la misma base, como XGBoost y CatBoost, además de HistGradientBoosting dentro de scikit-learn. Para quien usa el modelo, la diferencia entre ellas está sobre todo en velocidad y comodidad, no en una idea distinta.
Un ejemplo
Un mayorista de bricolaje vende 3.000 referencias en 40 puntos y quiere entrenar con dos años de historial semanal. La tabla tiene 3.000 × 40 × 104 = 12.480.000 filas. Con un método que ordena los valores, cada decisión de dónde partir un árbol recorre millones de filas. Con histogramas, según la documentación de LightGBM, una vez construido el histograma el coste de buscar el mejor corte depende del número de cajones, que es muy inferior al número de filas.
Hay además un truco de ahorro: el histograma de una hoja se puede obtener restando el de su hoja hermana al de la hoja padre, así que solo hace falta construir uno de los dos. Entrenar deja de ser un trabajo de horas y pasa a minutos, lo que permite reentrenar cada semana, y probar varias configuraciones en el backtest sin esperar.
El segundo ingrediente es el crecimiento por hojas. LightGBM elige en cada paso la hoja cuya partición reduce más el error, en lugar de ensanchar el árbol nivel a nivel. Con el mismo número de hojas obtiene, por lo general, menos error. A cambio, con pocos datos puede sobreajustar, y para eso existe el parámetro de profundidad máxima.
Ojo con esto
Lo que conviene saber al usar LightGBM en stock:
- Con pocos datos sobreajusta: su propia documentación avisa de que el crecimiento por hojas puede memorizar si hay pocas filas. Para un producto con 30 semanas de historial, mejor un modelo compartido entre muchos productos.
- Categorías sin convertir: el catálogo y la tienda son categorías con muchos valores. La documentación indica que el one-hot es poco óptimo para árboles con muchas categorías y que LightGBM las parte en dos grupos de forma eficiente. Aun así, un código de producto único por fila no aporta nada.
- No es un modelo de series temporales: no sabe de calendarios ni de semanas. Esa información hay que dársela como variables, es decir, ingeniería de variables.
- Una cifra sin margen: por defecto da un valor, no un rango. Para la banda se entrenan modelos de cuantil.
Dónde aparece en el sistema
Es una de las implementaciones candidatas dentro de la previsión de demanda cuando hay muchas series que entrenar a la vez. Se compara en el backtest con métodos clásicos y con otras implementaciones; si no gana en tus datos, no se usa.
La velocidad es lo que permite que la propuesta del lunes se calcule con los datos del domingo, y que la simulación con tus datos repita decenas de fechas pasadas en un tiempo razonable.
Términos relacionados
Gradient boosting, modelo global, ingeniería de variables, sobreajuste y backtest.
Preguntas frecuentes
¿LightGBM es de pago?
Es una librería de código abierto. Lo que cuesta es el trabajo de preparar los datos, validar el modelo y mantenerlo funcionando cada semana, no la librería.
¿Es lo mismo LightGBM que XGBoost?
Comparten el principio del gradient boosting con árboles, pero son implementaciones distintas con decisiones de diseño diferentes. En tablas de ventas suelen dar resultados parecidos, y se elige por el backtest.
¿Hace falta GPU para usarlo?
No. Su documentación indica que admite GPU, pero con las tablas de ventas de una empresa de reposición entrena bien en un procesador normal.