Proponemos un método novedoso para codificar características categóricas, diseñado específicamente para aplicaciones de predicción. En esencia, este enfoque codifica las características categóricas mediante la modelización de la tendencia de las magnitudes asociadas a cada categoría. En nuestros experimentos, este enfoque muestra ventajas sustanciales en cuanto al rendimiento —tanto en términos de precisión de predicción como de sesgo—, ya que permite a los modelos de conjunto basados en árboles modelizar y extrapolar mejor las tendencias.

Lee nuestro artículo sobre

class="lazyload

.

Introducción

La motivación para este trabajo surgió a raíz de numerosos proyectos de previsión para clientes en Artefact nuestros modelos de refuerzo mostraban un elevado sesgo en el momento de la predicción. Tras una fase de diagnóstico, identificamos que una de las principales fuentes de sesgo en los modelos de aprendizaje por conjuntos se debía a sus dificultades para modelar con precisión las tendencias y los niveles fluctuantes.

A continuación, explicaremospor quéycómohemos utilizado un enfoque novedoso para codificar las características categóricas. A partir de nuestros experimentos, realizados en el marco de un proyecto de previsión de ventas minoristas para un cliente y con diversos conjuntos de datos públicos, demostramos que esta técnica puede mitigar eficazmente el sesgo y mejorar la precisión.

El impulso y las tendencias: ¿por qué es tan complicado?

A los algoritmos de refuerzo les cuesta extrapolar

A los algoritmos de refuerzo les cuesta modelar y extrapolar tendencias, ya que no pueden predecir nuevos valores que no aparecen en el conjunto de entrenamiento o que están ausentes en las hojas. Los modelos de«árbol lineal»intentan paliar este problema; sin embargo, nuestras pruebas no arrojaron resultados concluyentes con este método.

Las codificaciones clásicas tienden a generar predicciones estáticas

Los métodos de codificación más habituales que se emplean en el boosting favorecen las relaciones estáticas entre las variables independientes y las dependientes, lo que a su vez contribuye a aumentar el sesgo cuando hay tendencias. El siguiente diagrama ilustra este fenómeno:

Las codificaciones clásicas tienden a generar predicciones estáticas

Representación visual simplificada que destaca la naturaleza estática de la codificación de características categóricas empleada en los algoritmos de boosting

Reconocemos que la descripción anterior es una simplificación excesiva, ya que los árboles de decisión son más complejos y permiten identificar relaciones no lineales basadas en múltiples factores. De hecho, la condición «el color es negro» podría estar asociada a «el mes es junio». En este caso, el hecho de que el color sea negro no tendría el mismo impacto en todo momento. Pero analicemos el panorama general:

  • Atribuir un único impacto al hecho de que el color sea negro en junio sigue sin ser lo ideal, ya que el impacto en junio de 2021 puede diferir del impacto en junio de 2022. Incluso si incluyéramos el año, el límite de decisión se volvería demasiado complejo de construir e identificar; además, ¿qué pasaría si los data de entrenamiento data en 2022 y hubiera que realizar predicciones para 2023?

  • La ingeniería de características tiene como objetivo ayudar al modelo a identificar relaciones con mayor facilidad. Si logramos que el modelo asocie el impacto del color negro en cualquier momento sin necesidad de identificar relaciones complejas, esto supondría una gran ventaja para el modelo. Por lo tanto…

Nuestro enfoque innovador: codificación dinámica de características categóricas

Fundamentos de la codificación dinámica (v1 sin nivel de elemento)

En pocas palabras, nuestro método para codificar características categóricas podría describirse así:modelamos el componente de tendencia de cada categoría y utilizamos esos valores de tendencia para codificar dicha característica categórica.

El siguiente diagrama ilustra la diferencia entre una codificación media estática y una codificación basada en la tendencia para dos categorías de color: negro y dorado.

class="lazyload

Ilustración que muestra el principio de codificación dinámica, que implica la modelización de tendencias para cada categoría

En nuestros experimentos, decidimos utilizar Prophet para extraer el componente de tendencia. Por supuesto, también es posible considerar otros modelos de predicción de series temporales.

Cabe señalar que la codificación estática implica que las ventas de artículos negros se sitúan en un nivel medio de 100 unidades al mes en cualquier momento dado. La codificación dinámica, por su parte, permite tener en cuenta la tendencia al alza observada en los artículos negros y es capaz de extrapolarla al futuro. Se puede afirmar algo similar en relación con los artículos dorados. Por lo tanto, nuestro enfoque resultará especialmente útil en conjuntos de datos en los que la variable objetivo que se va a pronosticar siga tendencias pronunciadas en las distintas categorías disponibles.

Nuestro objetivo principal es permitir que el modelo se adapte más fácilmente a las relaciones cambiantes entre las variables independientes y la variable dependiente que se va a predecir. Por lo tanto, este método de codificación dinámica también podría aplicarse a las características numéricas. Tomemos como ejemplo el precio. Aunque el precio es numérico y el modelo puede establecer reglas directamente basándose en él, las preferencias de las personas por artículos económicos o costosos pueden seguir evolucionando con el tiempo y seguir una tendencia de ventas específica. En el contexto de una crisis económica, por ejemplo, los productos asequibles podrían seguir una tendencia de ventas al alza, mientras que los caros podrían seguir una tendencia a la baja. Considerando «asequible» como una categoría y «caro» como otra, podríamos proponer una codificación dinámica para la característica del precio, tal y como hicimos con los colores.

Es importante señalar que, en el caso de las características numéricas, en el modelo se pueden utilizar tanto las variables básicas como las codificadas dinámicamente, ya que aportan distintos tipos de información.

Dar mayor importancia a las características dinámicas (v2 con nivel de elemento)

Aunque este nuevo método de codificación supone una mejora, a menudo la importancia de las características categóricas no es lo suficientemente elevada como para influir de manera significativa en las predicciones al analizar la importancia de las características. Para otorgar mayor importancia a las características dinámicas y, de este modo, facilitar un mejor modelado y una mejor extrapolación de las tendencias, adaptamos los valores de codificación a cada serie temporal o elemento de forma individual.

class="lazyload

Fórmula que representa los dos componentes de la codificación dinámica: el nivel de categoría y el nivel de ítem

Volviendo a nuestro ejemplo sobre el color, si tenemos dos artículos negros diferentes, esto permite que la codificación dinámica de la categoría «negro» sea diferente para cada artículo en función de sus ventas anteriores individuales.

Tabla que ilustra el cálculo de la codificación dinámica mediante un ejemplo sencillo

Tabla que ilustra el cálculo de la codificación dinámica mediante un ejemplo sencillo

Experimentos y resultados

Conjunto de datos del cliente

Utilizamos nuestro enfoque para pronosticar las ventas de uno de nuestros clientes del sector minorista. Validamos minuciosamente nuestro método en una amplia variedad de casos para garantizar su eficacia. A continuación se presentan algunos data al contexto experimental:

  • Se llevaron a cabo experimentos en nueve ámbitos de productos diferentes, con un modelo de potenciación (LightGBM) para cada uno de ellos.
  • Para cada intervalo, se llevó a cabo una validación cruzada k-fold con una ventana expansiva (k = 5).

  • Horizonte de previsión: del día siguiente al día 180.

  • El rendimiento se evaluó utilizando dos indicadores:

class="lazyload

En general, el método demostró ser muy eficaz,ya que se obtuvo una disminución absoluta media del sesgo del 9,82 % y un aumento absoluto medio de la precisión de las previsiones del 6,29 %en los nueve ámbitos de productos y las cinco series de validación cruzada.

En la siguiente sección se comprueba la validez de nuestro método aplicándolo a un conjunto de datos público.

Conjunto de datos sobre ventas en tiendas físicas

En este caso práctico simplificado, utilizamos el conjunto de datos«Store Sales — Time Series Forecasting»de Kaggle. Este conjunto de datos muestra una tendencia pronunciada al examinar la serie temporal de ventas medias, lo que hace que nuestro método resulte especialmente relevante. Además, el horizonte de predicción elegido es de tres meses, lo cual es lo suficientemente amplio como para beneficiarse de las capacidades de extrapolación adicionales de la codificación dinámica. A efectos de demostración, limitamos el conjunto de datos al 31 de marzo de 2016, justo antes de que se produjera un terremoto que provocó que la curva de ventas se aplanara.

Antes de cualquier codificación, nuestro conjunto de datos inicial está compuesto por aproximadamente un 75 % de características numéricas, que incluyen retardos, medias móviles, características de calendario y días festivos. El 25 % restante está formado por atributos categóricos, como la familia de productos, el número de tienda, la ciudad y otros.

Se entrenan dos modelos distintos: uno utiliza las características categóricas que se codificaron dinámicamente mediante nuestro método personalizado, mientras que el otro utiliza el manejo nativo de características categóricas de LightGBM.

Al comparar su rendimiento, observamos una mejora significativa en el enfoque de codificación dinámica. La siguiente tabla ofrece un resumen de los resultados:

Comparación del RMSE, el FA y el % de sesgo entre el método de codificación LightGBM y la codificación dinámica

Comparación del RMSE, el FA y el % de sesgo entre el método de codificación LightGBM y la codificación dinámica

class="lazyload

Ventas semanales medias + previsiones para los próximos 3 meses (codificación dinámica frente al método de codificación LightGBM)

Como se muestra en el gráfico anterior, el modelo que incorpora codificaciones dinámicascapta eficazmente la tendencia y la extrapola, mientras que el modelo alternativo tiene dificultades para lograrlo.

Uso y límites

Nuestro método resulta especialmente útil en situaciones en las que la serie temporal muestratendencias marcadasy elhorizonte de predicción es lo suficientemente lejano como para aprovechar la extrapolación de tendencias. Además, a medida que codificamos dinámicamente e incorporamos al modelomás características categóricascon un poderpredictivo significativo,aumenta el efecto que nuestro enfoque tiene sobre las predicciones. Sin embargo, es importante reconocer que otros métodos de codificación tienen sus propias ventajas y pueden resultar más beneficiosos en diferentes contextos. Además, existe la posibilidad de combinar ambos tipos de codificación para obtener resultados potencialmente mejores.

Conclusión

  • Las técnicas de codificación convencionales para las variables categóricas no son ideales para la predicción, especialmente cuando las series temporales presentan tendencias pronunciadas y el horizonte de predicción es lejano.
  • Nuestro método es una variante del «model stacking», ya que utilizamos un modelo Prophet —que destaca por sus capacidades superiores para modelar y extrapolar tendencias— para construir la codificación de las características categóricas.

  • Nuestros experimentos demostraron las ventajas de reducir el sesgo y mejorar la precisión de las previsiones.

Tenemos previsto publicar un artículo en los próximos meses, en el que se detallarán todos los aspectos de nuestro enfoque y su implementación. ¡Estad atentos a las próximas novedades!

class="lazyload

Blog de Medium de Artefact.

Este artículo se publicó inicialmente en Medium.com.
¡Síguenos en nuestro blog de Medium!