Reduce el sesgo de previsión con la agregación jerárquica

En esta página, se explica qué es la previsión jerárquica, cuáles son sus objetivos y se muestran algunas estrategias de entrenamiento que puedes usar para reducir el sesgo en tus modelos de previsión.

Para obtener instrucciones detalladas sobre cómo configurar la previsión jerárquica cuando entrenas tu modelo de previsión con la API, consulta Entrena un modelo de previsión.

¿Qué es la previsión jerárquica?

Las series temporales a menudo se estructuran en una jerarquía anidada. Por ejemplo, todo el inventario de productos que un minorista vende se puede dividir en categorías de productos. Las categorías se pueden dividir aún más en productos individuales. Cuando se prevén las ventas futuras, las previsiones de los productos de una categoría se deben sumar a la previsión de la categoría en sí y así sucesivamente, en la jerarquía.

Una jerarquía de productos y categorías.

De manera similar, la dimensión de tiempo de una sola serie temporal también puede exhibir una jerarquía. Por ejemplo, las ventas previstas de un producto individual a nivel del día deben sumar las ventas previstas semanales del producto. En la siguiente figura, se muestra este grupo y esta jerarquía temporal como una matriz:

Una matriz de series temporales.

La previsión jerárquica tiene tres objetivos:

  • Reduce el sesgo general para mejorar las métricas en todas las series temporales (ventas totales).
  • Reduce el sesgo temporal para mejorar las métricas con el horizonte (ventas de temporada).
  • Reduce el sesgo a nivel del grupo para mejorar las métricas en un grupo de series temporales (ventas de artículos).

En Vertex AI, la previsión jerárquica tiene en cuenta la estructura jerárquica de las series temporales mediante la incorporación de términos adicionales de pérdida para predicciones agregadas.

Hierarchical loss = (1 x loss) +
                    (temporal total weight x temporal total loss) +
                    (group total weight x group total loss) +
                    (group temporal total weight x group temporal total loss)

Por ejemplo, si el grupo jerárquico es "categoría", las predicciones a nivel de "categoría" son la suma de las predicciones para todos los "productos" de la categoría. Si el objetivo del modelo es un error absoluto medio (MAE), la pérdida incluirá el MAE para las predicciones en los niveles de “producto” y “categoría”. Esto ayuda a mejorar la coherencia de las previsiones en diferentes niveles de la jerarquía y, en algunos casos, puede mejorar las métricas en el nivel más bajo.

Configura la agregación jerárquica para el entrenamiento de modelos

Puedes configurar la agregación jerárquica cuando entrenas tus modelos de previsión si configuras AutoMLForecastingTrainingJob en el SDK de Vertex AI o si configuras hierarchyConfig en la API de Vertex AI.

Los parámetros disponibles para AutoMLForecastingTrainingJob y hierarchyConfig incluyen los siguientes:

  • group_columns
  • group_total_weight
  • temporal_total_weight
  • group_temporal_total_weight

Los parámetros permiten diferentes combinaciones de pérdidas agregadas de tiempo y grupos. También te permiten asignar ponderaciones para aumentar la prioridad de minimizar la pérdida agregada en relación con la pérdida individual. Por ejemplo, si la ponderación se establece en 2.0, se ponderará el doble que la pérdida individual.

group_columns

Nombres de columnas en tu tabla de entrada de entrenamiento que identifican la agrupación para el nivel de jerarquía. Las columnas deben ser time_series_attribute_columns. Si no se configura la columna de grupo, todas las series temporales se tratarán como parte del mismo grupo y se agregarán a todas las series temporales.

group_total_weight

Peso de la pérdida agregada del grupo en relación con la pérdida individual. Se inhabilita si se establece en 0.0 o si no se establece.

temporal_total_weight

Peso del tiempo agregado de pérdida relacionado con la pérdida individual. Se inhabilita si se establece en 0.0 o si no se establece.

group_temporal_total_weight

Peso de la pérdida total (grupo x tiempo) relativa a la pérdida individual. Se inhabilita si se establece en 0.0 o si no se establece. Si no se configura la columna de grupo, todas las series temporales se tratarán como parte del mismo grupo y se agregarán a todas las series temporales.

Estrategias para reducir sesgos

Considera comenzar con un tipo de agregación (grupo o tiempo) con una ponderación de 10.0 y, luego, reducir a la mitad o duplicar el valor según los resultados.

Reduce el sesgo general

En las previsiones detalladas para la distribución de existencias en las tiendas en las que el error porcentual absoluto ponderado (WAPE) a nivel de producto x tienda x fecha se usa como una métrica de previsión, las previsiones suelen arrojar predicciones menores en el nivel agregado. Para compensar este sesgo general, puedes probar lo siguiente:

  • Establece group_total_weight en 10.0.
  • Deja group_columns sin configurar.
  • Deja las otras ponderaciones sin configurar.

Esto se agrega en todas las series temporales y reduce el sesgo general.

Reduce el sesgo temporal

A largo plazo, las previsiones pueden realizarse a nivel de región x producto x semana, pero las métricas relevantes pueden medirse con respecto a los totales de temporada. Para compensar este sesgo temporal, puedes intentar lo siguiente:

  • Establece temporal_total_weight en 10.0.
  • Deja group_columns sin configurar.
  • Deja las otras ponderaciones sin configurar.

Esto agrega todas las fechas en el horizonte de una serie temporal y reduce el sesgo temporal.

Reduce el sesgo a nivel del grupo

Para las previsiones que son multipropósito del proceso de reposición, las previsiones detalladas a nivel de producto x tienda x fecha o semana se pueden agregar hasta el nivel de producto x centro de distribución x fecha para la distribución o el nivel de categoría x fecha para los pedidos de materiales. Para hacerlo, sigue estos pasos:

  • Establece group_total_weight en 10.0.
  • Configura group_columns, por ejemplo, [“región”] o [“región”, “categoría”]. Si configuras varias columnas de grupo, se usa su valor combinado para definir el grupo. Para obtener mejores resultados, usa columnas de grupo con 100 valores combinados distintos o menos.
  • Deja las otras ponderaciones sin configurar.

Esto se agrega en todas las series temporales del mismo grupo para la misma fecha y reduce el sesgo a nivel del grupo.

Límites

  • Solo se admite un nivel de agregación de series temporales. Si se especifica más de una columna de agrupación, como “producto, tienda”, la serie temporal se encuentra en el mismo grupo solo si comparten los mismos valores de “producto” y “tienda”.
  • Recomendamos usar 100 grupos o menos.

¿Qué sigue?