Glosario

Ingeniería de variables: convertir datos en bruto en pistas que el modelo entienda

Por , fundador de Arume · · lectura de 5 min

Definición

La ingeniería de variables es el proceso de transformar los datos en bruto de tu programa en variables que un modelo pueda aprovechar. En stock significa calcular cosas como las ventas de las semanas anteriores, medias móviles, la distancia a un festivo, la irregularidad de la venta o si el producto estuvo a cero. Es un paso previo al entrenamiento y suele aportar más acierto que cambiar de modelo.

Un albarán dice «12 unidades el 12 de marzo». Eso, tal cual, enseña poco a un modelo. La ingeniería de variables es el trabajo de transformar ese dato en pistas útiles: cuánto vendía de media el producto, cuánto falta para Semana Santa, cómo de irregular es su venta. En previsión, gran parte del acierto se gana aquí.

Qué es exactamente

La ingeniería de variables es un paso de preparación en el aprendizaje supervisado y en el modelado estadístico: transforma los datos originales en entradas que el modelo puede aprovechar mejor. Según Wikipedia, incluye crear variables nuevas a partir de las que ya hay, transformar o completar valores que faltan o no son válidos, reducir dimensiones y seleccionar las más relevantes.

En una tabla de ventas, las columnas de partida son pocas: fecha, producto, sitio, unidades. La ingeniería de variables las convierte en decenas de columnas con información del contexto: lo vendido en las semanas anteriores, la media de las últimas cuatro, el día de la semana, la cercanía de un festivo o de una campaña. Cada una es una pista que el modelo no podría deducir solo.

También se le llama

Feature engineering en inglés, ingeniería de características, creación de variables o construcción de variables. Una parte de este trabajo es la transformación de las variables ya creadas: escalarlas, codificar categorías o agruparlas en tramos, operaciones que describe la documentación de scikit-learn en su apartado de preprocesamiento.

Un ejemplo

Un fabricante de pinturas sirve a 60 tiendas. Para la semana del 12 de marzo, una tienda tiene estas ventas de un bote de 15 litros en las cuatro semanas anteriores: 12, 18, 9 y 21 unidades. De esos cuatro números salen variables útiles.

La media móvil es (12 + 18 + 9 + 21) ÷ 4 = 15. La desviación típica muestral es √(90 ÷ 3) ≈ 5,5, y el coeficiente de variación, esa desviación entre la media, ≈ 0,37: una venta bastante irregular, que pide más colchón que otra tienda con coeficiente 0,10. El retardo 1 es 21, la última semana. Del calendario salen otras: semanas hasta Semana Santa, si hay festivo en la semana, si el sábado cae a final de mes.

Una variable más interesa por lo que no se ve: si en alguna de esas semanas el producto estuvo a cero, una marca de «hubo rotura» evita que el modelo interprete la caída como menos demanda. Esa marca no existe en el albarán; hay que construirla cruzando ventas con stock.

Al terminar, una fila que tenía cuatro columnas tiene veinte o treinta. No todas ayudan; se prueban en el backtest y se quedan las que mejoran el acierto en fechas no vistas.

Ojo con esto

Los fallos habituales al construir variables:

  • Fuga de información: calcular una media móvil que incluye la semana que se quiere prever. En la prueba el modelo parece perfecto, en la realidad no.
  • Escalar con todos los datos: la documentación de scikit-learn insiste en ajustar el escalado solo con el entrenamiento y aplicar luego esa misma transformación a los datos de prueba.
  • Codificar mal las categorías: convertir tiendas en números del 1 al 40 hace que el modelo crea que la 40 es «más» que la 1. scikit-learn avisa de que los códigos enteros se interpretan como ordenados, y recomienda un indicador por categoría cuando no hay orden.
  • Hacer a mano lo que ya sabe hacer el modelo: no hace falta crear ratios que un árbol obtiene solo, y sobran variables que repiten lo mismo con otro nombre.

Dónde aparece en el sistema

Es el paso entre la lectura de tu programa y el modelo. El sistema lee ventas, stock y calendario con un usuario de solo lectura, calcula las variables con una receta fija que se aplica igual en el entrenamiento y en el día a día, y entrega el resultado a la previsión de demanda.

Cuando conoces algo del negocio que no aparece en los datos, como un cliente que compra por temporadas o una feria del sector, es el momento de decirlo: se convierte en una variable y se prueba en la simulación con tus datos.

Términos relacionados

Variables explicativas, media móvil, coeficiente de variación, limpieza de datos y sobreajuste.

Preguntas frecuentes

¿Qué aporta más: mejores variables o un modelo más complejo?

Casi siempre, mejores variables. Un modelo sencillo con buenas pistas suele superar a uno complejo con datos en bruto, y además se explica mejor.

¿Hay que rehacer las variables cada vez que cambia el modelo?

Se reutilizan. La receta de cálculo es independiente del modelo, de modo que se pueden probar varios modelos con las mismas variables y comparar en igualdad de condiciones.

¿Podemos aportar nosotros variables que conocemos del negocio?

Sí, y es lo más valioso. Cualquier dato que conozcas con antelación y tenga efecto en la venta, como ferias, cierres o cambios de tarifa, se puede añadir, y el backtest dice si mejora la previsión.

Fuentes

  1. Wikipedia: Feature engineering (definición y tareas)
  2. scikit-learn: Preprocessing data (escalado, codificación de categorías, discretización)

¿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