Prognoseverzerrungen durch hierarchische Aggregation reduzieren

Auf dieser Seite werden hierarchische Prognosen und Ziele erläutert. Außerdem erfahren Sie, mit welchen Trainingsstrategien Sie Bias in Ihren Prognosemodellen reduzieren können.

Eine ausführliche Anleitung zum Konfigurieren der hierarchischen Prognose beim Trainieren Ihres Prognosemodells mithilfe der API finden Sie unter Prognosemodell trainieren.

Was ist die hierarchische Prognose?

Zeitachsen sind häufig in einer verschachtelten Hierarchie strukturiert. Beispielsweise kann das gesamte Produktinventar, das ein Einzelhändler verkauft, in Produktkategorien unterteilt werden. Die Kategorien können in einzelne Produkte unterteilt werden. Bei der Prognose zukünftiger Verkäufe sollten die Prognosen für die Produkte einer Kategorie zusammen die Prognose für die Kategorie selbst ergeben usw.

Eine Hierarchie aus Produkten und Kategorien.

Ebenso kann die Zeitdimension einer einzelnen Zeitachse eine Hierarchie nutzen. Beispielsweise sollten die prognostizierten Verkäufe für ein einzelnes Produkt auf der Tag-Ebene dem prognostizierten Umsatz des Produkts auf Wochen-Ebene entsprechen. Die folgende Abbildung zeigt diese Gruppen- und Zeithierarchie als Matrix:

Eine Zeitachsenmatrix

Die hierarchische Prognose hat drei Ziele:

  • Reduzieren Sie die Gesamtverzerrung, um die Messwerte über alle Zeitachsen (Gesamtumsatz) zu verbessern.
  • Reduzieren Sie die zeitliche Verzerrung, um Messwerte über den Horizont (Saisonumsatz) zu verbessern.
  • Reduzieren Sie die Verzerrung auf Gruppenebene, um Messwerte über eine Gruppe von Zeitachsen (Artikelverkauf) zu verbessern.

In Vertex AI berücksichtigt die hierarchische Prognose die hierarchische Struktur von Zeitachsen mithilfe von zusätzlichen Verlustbegriffen für aggregierte Vorhersagen.

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)

Beispiel: Wenn die hierarchische Gruppe "Kategorie" ist, sind die Vorhersagen auf der "Kategorie"-Ebene die Summe der Vorhersagen für alle "Produkte" in der Kategorie. Wenn das Ziel des Modells ein durchschnittlicher absoluter Fehler (MAE, Mean Absolute Error) ist, würde der Verlust den MAE für Vorhersagen auf den Ebenen "Produkt" und "Kategorie" enthalten. Dies hilft, die Konsistenz von Prognosen auf verschiedenen Hierarchieebenen zu verbessern. In einigen Fällen können sogar Messwerte auf der untersten Ebene verbessert werden.

Hierarchische Aggregation für das Modelltraining konfigurieren

Sie können beim Trainieren Ihrer Prognosemodelle die hierarchische Aggregation konfigurieren. Konfigurieren Sie dazu AutoMLForecastingTrainingJob im Vertex AI SDK oder hierarchyConfig in der Vertex AI API.

Zu den verfügbaren Parametern für AutoMLForecastingTrainingJob und hierarchyConfig gehören:

  • group_columns
  • group_total_weight
  • temporal_total_weight
  • group_temporal_total_weight

Die Parameter ermöglichen verschiedene Kombinationen aggregierter Gruppen- und Zeitverluste. Sie ermöglichen auch die Zuweisung von Gewichtungen, um die Priorität der Minimierung des aggregierten Verlusts im Verhältnis zum individuellen Verlust zu erhöhen. Beispiel: Wenn die Gewichtung auf 2.0 festgelegt ist, wird sie doppelt so hoch gewichtet wie der einzelne Verlust.

group_columns

Spaltennamen in der Trainingseingabetabelle, die die Gruppierung für die Hierarchieebene identifizieren. Die Spalten müssen time_series_attribute_columns sein. Ist die Gruppenspalte nicht festgelegt, werden alle Zeitachsen als Teil derselben Gruppe behandelt und die Aggregierung erfolgt über alle Zeitachsen.

group_total_weight

Gewichtung der aggregierten Verluste der Gruppe im Verhältnis zum individuellen Verlust. Deaktiviert, wenn 0.0 oder nichts festgelegt ist.

temporal_total_weight

Gewichtung des aggregierten Verlusts über die Zeit relativ zum individuellen Verlust. Deaktiviert, wenn 0.0 oder nichts festgelegt ist.

group_temporal_total_weight

Gewichtung des Gesamtverlusts (Gruppe x Zeit) im Verhältnis zum individuellen Verlust. Deaktiviert, wenn 0.0 oder nichts festgelegt ist. Ist die Gruppenspalte nicht festgelegt, werden alle Zeitachsen als Teil derselben Gruppe behandelt und die Aggregierung erfolgt über alle Zeitachsen.

Strategien zur Reduzierung von Verzerrungen

Sie sollten mit einem Typ von Aggregation (Gruppe oder Zeit) mit einer Gewichtung von 10.0 beginnen und dann den Wert auf der Grundlage der Ergebnisse halbieren oder verdoppeln.

Gesamtverzerrung reduzieren

In detaillierten Prognosen für die Verteilung des Lagerbestands auf Geschäfte, bei denen der gewichtete absolute Prozentfehler (WAPE) auf der Produktebene für den X-Zeitraum des Produkts als Prognosemesswert verwendet wird, werden die Prognosen häufig auf der aggregierten Ebene vorhergesagt. Um diese Gesamtverzerrung auszugleichen, können Sie Folgendes versuchen:

  • Setzen Sie group_total_weight auf 10.0.
  • Bestimmen Sie group_columns nicht.
  • Lassen Sie andere Gewichtungen nicht festgelegt.

Das bedingt eine Zusammenfassung über alle Zeitachsen hinweg und reduziert so die Gesamtverzerrung.

Vorübergehende Verzerrungen reduzieren

Bei der Langzeitplanung können Prognosen auf Produktebene x Region x Wochenebene erstellt werden. Die relevanten Messwerte können jedoch in Bezug auf saisonale Summen gemessen werden. Um diese zeitliche Verzerrung auszugleichen, können Sie Folgendes versuchen:

  • Setzen Sie temporal_total_weight auf 10.0.
  • Bestimmen Sie group_columns nicht.
  • Lassen Sie andere Gewichtungen nicht festgelegt.

Das bedingt eine Zusammenfassung über alle Datumsangaben im Horizont einer Zeitachse und reduziert die zeitliche Verzerrung.

Verzerrungen auf Gruppenebene reduzieren

Bei Prognosen, die im Auffüllprozess mehrere Zwecke umfassen, können detaillierte Prognosen auf der Produkt X Lager X Datum- oder der Wochen-Ebene bis zu den Produkt X Verteilerzentrum X Daten-Ebenen zur Distribution oder auf den Produktkategorie X Daten-Ebenen für Materialbestellungen aggregiert werden. Führen Sie dazu folgende Schritte aus:

  • Setzen Sie group_total_weight auf 10.0.
  • Legen Sie group_columns fest, z. B. ["region"] oder ["region", "category"]. Wenn Sie mehrere Gruppenspalten festlegen, wird die Gruppe anhand ihres kombinierten Werts definiert. Die besten Ergebnisse erzielen Sie, wenn Sie Gruppenspalten mit maximal 100 verschiedenen Werten verwenden.
  • Lassen Sie andere Gewichtungen nicht festgelegt.

Das bedingt eine Zusammenfassung aller Zeitachsen in derselben Gruppe für dasselbe Datum und reduziert Verzerrungen auf Gruppenebene.

Limits

  • Nur eine Ebene der Zeitachsenaggregation wird unterstützt. Wenn mehr als eine Gruppierungsspalte wie "product, store" angegeben ist, befinden sich die Zeitachsen nur in derselben Gruppe, wenn sie dieselben Werte von "product" und "store" haben.
  • Wir empfehlen die Verwendung von maximal 100 Gruppen.

Nächste Schritte