דוד משיח

רשימה · שרשרת אספקה · מדידה

שיטת קרוסטון הפסידה בדיוק על הפריטים שבשבילם נבנתה

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

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

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

המערך

הנתונים הם מאגר M5 הציבורי של מכירות יומיות ביחידות בוולמארט: חנות CA_1, מחלקה FOODS_3, ‏823 פריטים, 730 הימים האחרונים. כל תחזית מכסה 28 ימים, ו־StatsForecast.cross_validation חוזרת עליה בעשר נקודות חיזוי במרווח של 28 ימים, כך שחלונות התחזית לא חופפים וכל השוואה נשענת על עשר תוצאות נפרדות.

רצו שמונה מודלים: AutoETS עם עונתיות שבועית, הנאיבי העונתי, שיטת קרוסטון (בגרסה המותאמת), ADIDA,‏ IMAPA,‏ TSB, התחזית הנאיבית, וממוצע נע של 28 ימים, שהוא קו הבסיס. כל פריט מסווג לפי כלל סינטטוס־בוילן על ההיסטוריה שלו לפני הנקודה הראשונה: יציב, לא סדיר, לסירוגין או מקוטע. הסקריפט נמצא במאגר של forelint.

בסך הכול

בשגיאה מוחלטת על פני כל הפריטים:

מודלMAEערך מוסף מול הממוצע הנעפריטים שבהם הוא גרוע יותרהטיה
AutoETS1.649+1.6%45%−0.2%
ADIDA1.6760.0%56%+4.3%
ממוצע נע של 28 ימים1.676קו בסיסקו בסיס−0.7%
IMAPA1.681−0.3%58%+4.9%
TSB1.702−1.5%64%+6.9%
נאיבי עונתי1.927−14.9%86%+0.7%
קרוסטון (מותאם)1.960−16.9%84%+17.2%
נאיבי2.398−43.0%86%+35.0%

רק AutoETS גבר על הממוצע הנע בפער שמבחן מסוגל לראות: 1.6 אחוז, עם מבחן Diebold-Mariano שנתן p = 0.02 על פני עשר הנקודות. ADIDA השתווה אליו בדיוק (p = 0.97). TSB היה גרוע יותר (p = 0.03), ושיטת קרוסטון הייתה גרועה ב־17 אחוז (p < 0.001). קבוצת ביטחון של מודלים ברמה של 10 אחוז השאירה רק את AutoETS; הממוצע הנע, ADIDA ו־IMAPA נפלו ממש מחוץ לה, ב־p = 0.09.

לפי סוג ביקוש

ערך מוסף מעל הממוצע הנע, בשגיאה מוחלטת, לכל סוג:

סוג ביקושפריטיםAutoETSADIDATSBקרוסטון
יציב145+5.2%−1.3%−3.3%−6.2%
לא סדיר36+1.1%−0.4%−0.2%−6.1%
לסירוגין4630.0%+0.6%−0.9%−24.6%
מקוטע175−1.1%+1.5%0.0%−24.8%

על 463 הפריטים לסירוגין, הסוג ששיטת קרוסטון קיימת בשבילו, היא הייתה גרועה ב־24.6 אחוז מהממוצע הנע, וגרועה יותר ב־83 אחוז מהם. על הפריטים המקוטעים היא הייתה גרועה ב־24.8 אחוז. ADIDA, שגם היא נבנתה לביקוש לסירוגין, הייתה מעט טובה מהממוצע הנע בשני הסוגים. AutoETS הרוויח 5.2 אחוז על הפריטים היציבים ולא הרוויח כלום על הפריטים לסירוגין.

למה קרוסטון הפסיד כאן

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

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

מה הייתי לוקח מזה

forelint קוראת את הפלט של cross_validation כפי ש־statsforecast מחזירה אותו, כך שכל הבדיקה שלמעלה היא קריאה אחת אחרי הבדיקה לאחור. היא מותקנת עם pip install forelint.

מקורות

  1. Croston, J. D. Forecasting and stock control for intermittent demands. Operational Research Quarterly 23(3), 1972.
  2. Syntetos, A. A. and Boylan, J. E. On the bias of intermittent demand estimates. International Journal of Production Economics 71(1-3), 2001.
  3. Teunter, R. H., Syntetos, A. A. and Babai, M. Z. Intermittent demand: Linking forecasting to inventory obsolescence. European Journal of Operational Research 214(3), 2011.
  4. Nikolopoulos, K., Syntetos, A. A., Boylan, J. E., Petropoulos, F. and Assimakopoulos, V. An aggregate-disaggregation intermittent demand approach (ADIDA) to forecasting. Journal of the Operational Research Society 62(3), 2011.