הפחתת הטיה בתחזיות באמצעות צבירה היררכית

בדף הזה מוסבר על תחזיות היררכיות, על המטרות שלהן ועל אסטרטגיות אימון שאפשר להשתמש בהן כדי לצמצם את ההטיה במודלים של התחזיות.

הוראות מפורטות להגדרת תחזית היררכית כשמאמנים את מודל התחזית באמצעות ה-API זמינות במאמר בנושא אימון מודל תחזית.

מהו חיזוי היררכי

סדרות זמן לרוב בנויות בהיררכיה מקוננת. לדוגמה, אפשר לחלק את כל מלאי המוצרים של קמעונאי לקטגוריות של מוצרים. אפשר לחלק את הקטגוריות האלה למוצרים ספציפיים. כשמבצעים תחזית לגבי מכירות עתידיות, סכום התחזיות של מוצרים בקטגוריה מסוימת צריך להיות שווה לתחזית של הקטגוריה עצמה, וכן הלאה בהיררכיה.

היררכיה של מוצרים וקטגוריות.

באופן דומה, גם מאפיין הזמן של סדרת זמן יחידה יכול להציג היררכיה. לדוגמה, סכום המכירות החזויות של מוצר מסוים ברמת היום צריך להיות שווה לסכום המכירות החזויות של המוצר בשבוע. האיור הבא מציג את ההיררכיה הזו של קבוצות וזמנים כמטריצה:

מטריצה של פעולות על ציר הזמן.

לחיזוי היררכי יש שלוש מטרות:

  • צמצום ההטיה הכוללת כדי לשפר את המדדים בכל סדרות הזמן (נפח המכירות הכולל).
  • הפחתת הטיה זמנית כדי לשפר את המדדים לאורך זמן (מכירות עונתיות).
  • הפחתת הטיה ברמת הקבוצה כדי לשפר את המדדים על פני קבוצה של סדרות זמן (מכירות פריטים).

ב-Gemini Enterprise Agent Platform, חיזוי היררכי לוקח בחשבון את המבנה ההיררכי של סדרות זמן על ידי שילוב של מונחי הפסד נוספים למסקנות מצטברות.

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)

לדוגמה, אם הקבוצה ההיררכית היא category, ההסקות ברמה category הן סכום ההסקות של כל המוצרים בקטגוריה. אם היעד של המודל הוא שגיאה ממוצעת מוחלטת (MAE), הפסד כולל את ה-MAE עבור מסקנות ברמות 'מוצר' ו'קטגוריה'. כך אפשר לשפר את העקביות של התחזיות ברמות שונות בהיררכיה, ובמקרים מסוימים, אפילו לשפר את המדדים ברמה הנמוכה ביותר.

הגדרת צבירה היררכית לאימון המודל

כדי להגדיר צבירה היררכית כשמבצעים אימון של מודלים לתחזיות, צריך להגדיר את AutoMLForecastingTrainingJob ב-Agent Platform SDK או להגדיר את hierarchyConfig ב-Agent Platform API.

הפרמטרים שזמינים ל-AutoMLForecastingTrainingJob ול-hierarchyConfig כוללים:

  • group_columns
  • group_total_weight
  • temporal_total_weight
  • group_temporal_total_weight

הפרמטרים מאפשרים שילובים שונים של הפסדים מצטברים לפי קבוצה וזמן. בנוסף, אפשר להקצות משקלים כדי להגדיל את העדיפות של מזעור ההפסד המצטבר ביחס להפסד האישי. לדוגמה, אם המשקל הוא 2.0, הוא משוקלל פי שניים מההפסד האישי.

group_columns

שמות העמודות בטבלת נתוני האימון מציינים את הקיבוץ של רמת ההיררכיה. העמודות צריכות להיות time_series_attribute_columns. אם לא מגדירים את עמודת הקבוצה, כל סדרות הזמן נחשבות לחלק מאותה קבוצה ומצטברות על פני כל סדרות הזמן.

group_total_weight

משקל ההפסד המצטבר של הקבוצה ביחס להפסד האישי. מושבתת אם המדיניות מוגדרת לערך 0.0 או לא מוגדרת.

temporal_total_weight

המשקל של ההפסד המצטבר לאורך זמן ביחס להפסד האישי. מושבתת אם המדיניות מוגדרת לערך 0.0 או לא מוגדרת.

group_temporal_total_weight

המשקל של ההפסד המצטבר הכולל (קבוצה x זמן) ביחס להפסד האישי. התכונה מושבתת אם המדיניות מוגדרת לערך 0.0 או לא מוגדרת. אם לא מגדירים את עמודת הקבוצה, כל סדרות הזמן נחשבות לחלק מאותה קבוצה ומצטברות על פני כל סדרות הזמן.

אסטרטגיות לצמצום הטיה

מתחילים עם סוג אחד של צבירה (קבוצה או זמן) עם משקל של 10.0, ואז מחלקים את הערך בחצי או מכפילים אותו בהתאם לתוצאות.

הפחתת הטיה כוללת

בתחזיות מפורטות לחלוקת מלאי בין חנויות, שבהן נעשה שימוש בשגיאת אחוז מוחלט משוקלל (WAPE) ברמת המוצר x חנות x תאריך כמדד תחזיתי, התחזיות לרוב נמוכות מדי ברמות המצטברות. כדי לפצות על ההטיה הכוללת הזו, אפשר לנסות את הפתרונות הבאים:

  • מגדירים את group_total_weight להיות 10.0.
  • לא מגדירים את group_columns.
  • משאירים את המשקלים האחרים ללא הגדרה.

הוא מסכם את כל סדרות הזמן ומפחית את ההטיה הכוללת.

הפחתת הטיה זמנית

בתכנון לטווח ארוך, יכול להיות שהתחזיות יתבצעו ברמה של מוצר x אזור x שבוע, אבל המדדים הרלוונטיים יימדדו ביחס לסיכומים עונתיים. כדי לפצות על ההטיה הזמנית הזו, אפשר לנסות את הפעולות הבאות:

  • מגדירים את temporal_total_weight להיות 10.0.
  • לא מגדירים את group_columns.
  • משאירים את המשקלים האחרים ללא הגדרה.

החישוב הזה מתבצע על כל התאריכים בטווח של סדרת זמן, ומצמצם את ההטיה הזמנית.

הפחתת הטיה ברמת הקבוצה

תחזיות שמשמשות למטרות שונות בתהליך החידוש של המלאי, כמו תחזיות מפורטות ברמת המוצר x החנות x התאריך או השבוע, עשויות להצטבר לרמות של מוצר x מרכז הפצה x תאריך לצורך הפצה, או לרמות של קטגוריית מוצר x תאריך לצורך הזמנות של חומרים. כדי לעשות זאת:

  • מגדירים את group_total_weight להיות 10.0.
  • מגדירים את group_columns, למשל ["region"] או ["region", "category"]. אם מגדירים כמה עמודות לקבוצה, המערכת משתמשת בערך המשולב שלהן כדי להגדיר את הקבוצה. כדי לקבל את התוצאות הטובות ביותר, כדאי להשתמש בעמודות לקבוצה עם 100 ערכים משולבים ייחודיים או פחות.
  • משאירים את המשקלים האחרים ללא הגדרה.

הערך הזה הוא סכום של כל הסדרות העיתיות באותה קבוצה לאותו תאריך, והוא מפחית את ההטיה ברמת הקבוצה.

מגבלות

  • יש תמיכה רק ברמה אחת של צבירת נתונים בסדרת זמן. אם מציינים יותר מעמודת קיבוץ אחת, כמו 'product, store', סדרת הזמן תהיה באותה קבוצה רק אם יש לה את אותם ערכים של 'product' ושל 'store'.
  • מומלץ להשתמש ב-100 קבוצות או פחות.

המאמרים הבאים