السلاسل الزمنية2018مبتدئ10 دقيقة قراءة

التنبؤ على نطاق واسع

Forecasting at Scale

Taylor, S. J. · Letham, B. — The American Statistician

المشكلة

بحلول عام 2017 أصبحت المؤسسات بحاجة لآلاف التنبؤات الموثوقة — لتخطيط الموارد وتحديد الأهداف واكتشاف الحالات الشاذة — لكنها كانت تصطدم بمشكلتين. الأساليب الآلية مثل ARIMA هشّة وصعبة التعديل، ولا تسمح بإدخال معرفة تخصصية كمواعيد الأعياد أو إطلاق المنتجات. وفي المقابل، المحللون القادرون على بناء تنبؤات جيدة يدوياً قلّة، لأن العمل مع السلاسل الزمنية يتطلب خبرة إحصائية عميقة. الهوّة بين حجم الطلب على التنبؤات والقدرة الفعلية على إنتاجها كانت تتّسع بسرعة.

الإسهام

نموذج Prophet لتحليل السلاسل الزمنية، مبنيّ كنموذج جمعي معمَّم (GAM) يُفكّك الإشارة إلى ثلاثة مكوّنات واضحة: نمو مُجزَّأ (خطي أو لوجستي)، متعددة الدورات باستخدام ، وتأثيرات الأعياد والمناسبات. يُدرَّب النموذج بسرعة عبر L-BFGS أو الكامل في Stan، ومعاملاته مُصمَّمة بحيث يستطيع محلل بلا خلفية إحصائية ضبطها اعتماداً على خبرته بالمجال. تُقدّم الورقة أيضاً أسلوب التنبؤات التاريخية المُحاكاة (SHFs) لتقييم طرق ومقارنتها آلياً وعلى نطاق واسع.

الأثر

أصبح Prophet من أوسع أدوات التنبؤ انتشاراً في الصناعة، حيث يُشغّل آلاف التنبؤات داخل فيسبوك ولدى مؤسسات حول العالم. إتاحته مفتوح المصدر بلغتي Python وR جعلت التنبؤ عالي الجودة في متناول غير المتخصصين. فلسفته في جعل المحلل جزءاً من الحلقة غيّرت نظرة الفرق لعملية التنبؤ — لم تعد صندوقاً أسود، بل شراكة بين الخبرة البشرية والنماذج الإحصائية. كما رسّخ Prophet منهج الجمعي أسلوباً معتمداً في التعامل مع السلاسل الزمنية للأعمال.

تخيّل أنك تريد توقّع حركة المرور على طريق سريع مزدحم. لن تحاول تتبّع كل سيارة على حدة — بل ستُعدّ ثلاث خرائط شفافة: الأولى ترسم كيف تنمو المدينة على المدى الطويل، والثانية تُظهر أنماط الذروة الأسبوعية التي تتكرّر بانتظام، والثالثة تُحدّد أيام الأعياد التي يخفّ فيها المرور. ضع الخرائط فوق بعضها وستحصل على تنبؤ دقيق بشكل مدهش — دون أن تكون مهندس مرور.

هذه هي فكرة Prophet بالضبط مع أي مقياس تجاري: يفصل الإشارة إلى طبقة اتجاه، وطبقة موسمية، وطبقة أعياد، ثم يجمعها في تنبؤ واحد.

المشكلة: التنبؤ على نطاق واسع مشكلة بشرية بالدرجة الأولى

حين يتحدّث تايلور وليثام عن «التنبؤ على نطاق واسع»، لا يعنيان التحدّي الحوسبي — فتدريب آلاف النماذج بالتوازي أمر مباشر تقنياً. ما يعنيانه هو ثلاثة تحدّيات بشرية:

  1. أشخاص كُثر يحتاجون لإنتاج تنبؤات، وأغلبهم ليس لديه خلفية في تحليل .
  2. تنوّع هائل في طبيعة السلاسل: كل واحدة لها خصوصيات مثل إطلاق منتجات أو أعياد محلية.
  3. كمّ ضخم من التنبؤات يجب مراقبتها ومقارنتها وتصحيحها بكفاءة.

الطريقة التقليدية — أن يجلس خبير يدرس سلسلة زمنية واحدة لعدة أيام — تنهار تماماً حين تحتاج مؤسسة لمئات التنبؤات أسبوعياً. الحلّ الذي يطرحه المؤلفان هو نظام المحلل ضمن الحلقة (): نموذج واضح البنية يستطيع المحلل ضبط معاملاته بناءً على خبرته بالمجال، مع أدوات تقييم آلية تُنبّه تلقائياً إلى التنبؤات التي تحتاج تدخّلاً بشرياً.

افتح في المختبر
دورة عمل المحلل ضمن الحلقة: النموذج يُنتج التنبؤات، ونظام التقييم الآلي يُشير إلى المشكلات، والمحلل يتدخّل لضبط المعاملات بخبرته في المجال.
تستيقظ التجربة عند وصولك…

الفكرة الجوهرية: فكِّك السلسلة الزمنية إلى طبقات قابلة للتفسير

الفكرة المحورية في Prophet هي أنه يتعامل مع السلسلة الزمنية بوصفها مجموع ثلاث طبقات مستقلة، بالإضافة إلى ضجيج عشوائي. تخيّل أنك وضعت ثلاث أوراق شفافة فوق بعضها، كل ورقة ترسم نمطاً مختلفاً. طبقة النمو g(t)g(t) تصف المسار العام — هل المقياس في صعود أم استقرار أم تراجع؟ طبقة الموسمية s(t)s(t) ترصد الدورات المتكررة — أنماط أسبوعية أو سنوية أو الاثنتين معاً. وطبقة الأعياد h(t)h(t) تلتقط القفزات والانخفاضات المفاجئة الناتجة عن المناسبات والأعياد. أما ما يتبقّى فيذهب إلى حدّ الضجيج ϵt\epsilon_t.

هذا هو سرّ قوة النموذج: تستطيع فحص كل طبقة بمفردها وتفهم بالضبط ما الذي يقود التنبؤ.

y(t)=g(t)+s(t)+h(t)+ϵty(t) = g(t) + s(t) + h(t) + \epsilon_t
تفكيك Prophet — المعادلة الرئيسيةالقيمة المُلاحَظة y(t)y(t) عند الزمن tt تساوي مجموع دالة النمو g(t)g(t) ودالة الموسمية s(t)s(t) ودالة الأعياد h(t)h(t) وحدّ ضجيج ϵt\epsilon_t يُفترض أنه طبيعي التوزيع. النموذج هنا هو نموذج جمعي معمَّم (GAM) متغيّره المستقل الوحيد هو الزمن.
افتح في المختبر
فعِّل أو أوقف كل مكوّن لتشاهد كيف تتراكب طبقات الاتجاه والموسمية والأعياد لتُشكّل التنبؤ النهائي.
تستيقظ التجربة عند وصولك…

النمو: نمذجة المسار طويل المدى

مكوّن النمو g(t)g(t) يرسم الاتجاه العام — الصورة الكبرى لمسار المقياس بعيداً عن التذبذبات الدورية. يُقدّم Prophet طريقتين لنمذجة هذا النمو حسب طبيعة البيانات.

النمو اللوجستي مناسب حين يكون هناك سقف طبيعي لا يمكن تجاوزه — ما نُسمّيه . مثلاً: عدد مستخدمي فيسبوك في بلدٍ ما محكوم بعدد من لديهم اتصال بالإنترنت. المنحنى اللوجستي له الشكل S المألوف: بداية بطيئة، ثم تسارع حادّ، ثم تشبُّع تدريجي.

النمو الخطي مناسب حين لا يوجد سقف واضح — كالإيرادات أو مشاهدات الصفحات التي يمكنها نظرياً أن تنمو بلا حدود. هو ببساطة خط مستقيم مُجزَّأ يتغيّر ميله عند لحظات مفصلية.

في الحالتين، يسمح Prophet لمعدل النمو بأن يتغيّر عند نقاط تُسمّى . إطلاق منتج جديد قد يُسرّع النمو، ودخول منافس قوي قد يُبطئه. بدلاً من فرض منحنى جامد لا ينثني، يُلائم Prophet منحنى مرناً مُجزَّأً يتكيّف مع التحوّلات الحقيقية في سلوك البيانات.

g(t)=C(t)1+exp ⁣((k+a(t)δ)(t(b+a(t)γ)))g(t) = \frac{C(t)}{1 + \exp\!\bigl(-(k + \mathbf{a}(t)^\top \boldsymbol{\delta})\,(t - (b + \mathbf{a}(t)^\top \boldsymbol{\gamma}))\bigr)}
النمو اللوجستي المُجزَّأ مع نقاط التحوّلC(t)C(t) تمثّل سعة الاستيعاب المتغيّرة زمنياً. kk هو معدل النمو الأساسي، وδ\boldsymbol{\delta} متّجه يحتوي تعديل المعدل عند كل نقطة تحوّل. المتّجه المُؤشِّر a(t)\mathbf{a}(t) يُفعّل التعديلات التي تنطبق حتى اللحظة tt، والإزاحة γ\boldsymbol{\gamma} تضمن أن تتّصل القطع ببعضها بسلاسة. بوضع توزيع لابلاس مسبق على δ\boldsymbol{\delta}، تُدفع أغلب التعديلات تلقائياً إلى الصفر فلا تبقى إلا التحوّلات الحقيقية.
افتح في المختبر
غيّر قيمة مرونة نقاط التحوّل τ وراقب كيف يُوازن النموذج بين اتجاه عام مستقر وتتبّع محلّي مرن للتغيّرات.
تستيقظ التجربة عند وصولك…

الموسمية: التقاط الإيقاعات المتكررة بمتسلسلة فورييه

المقاييس التجارية انعكاس لسلوك الناس، والناس كائنات ذات عادات ثابتة. نتصفّح مواقع التواصل أكثر في أيام العمل، ونتسوّق أكثر قبل الأعياد، ونسافر أكثر صيفاً. هذه الأنماط المتكررة هي ما يُمثّله مكوّن الموسمية s(t)s(t).

يُقرّب Prophet هذه الموسمية بمتسلسلة فورييه — أي مجموع موجات جيبية وجيب تمامية بترددات مختلفة. الفكرة أشبه بضبط محطات الراديو: كل تردد يلتقط إيقاعاً دورياً مختلفاً. للموسمية الأسبوعية يكفي عادةً N=3N=3 حدود فورييه لرسم الفارق بين أيام العمل وعطلة نهاية الأسبوع. أما الموسمية السنوية فتحتاج N=10N=10 حدود لالتقاط تفاصيل أدقّ كالعطلات الصيفية وموسم العودة للمدارس.

الميزة الكبرى هنا: لا تحتاج لوصف تأثير كل يوم يدوياً. أساس فورييه يكتشف الشكل الموسمي وحده من البيانات.

s(t)=n=1N(ancos ⁣(2πntP)+bnsin ⁣(2πntP))s(t) = \sum_{n=1}^{N} \Bigl( a_n \cos\!\Bigl(\frac{2\pi n t}{P}\Bigr) + b_n \sin\!\Bigl(\frac{2\pi n t}{P}\Bigr) \Bigr)
موسمية فورييه — الأنماط الدورية كمجموع موجاتPP طول الدورة (مثلاً 365.25 يوماً للسنوية أو 7 للأسبوعية). NN يُحدّد مدى تعقيد النمط الموسمي المسموح به. كل زوج (an,bn)(a_n, b_n) يرصد تردداً واحداً. توزيع طبيعي مسبق βNormal(0,σ)\beta \sim \text{Normal}(0, \sigma) على المعاملات يمنع الإفراط في الملاءمة عبر تنعيم المنحنى الموسمي.
افتح في المختبر
أضف أو احذف حدود فورييه وراقب كيف يتغيّر شكل النمط الموسمي. حدود قليلة جداً تُضيّع التفاصيل، وكثيرة جداً تُسبّب إفراطاً في الملاءمة.
تستيقظ التجربة عند وصولك…

الأعياد: التعامل مع الصدمات التقويمية غير الدورية

أعياد مثل عيد الشكر (الخميس الرابع من نوفمبر) أو نهائي السوبر بول لا تقع في التاريخ نفسه كل سنة، وبالتالي لا تستطيع منحنيات الموسمية الملساء التقاطها. لذلك يُخصّص Prophet مكوّناً منفصلاً للأعياد.

كل ما على المحلل فعله هو تزويد النموذج بجدول فيه أسماء الأعياد وتواريخها — ماضيها ومستقبلها. النموذج يُعطي كل عيد ii معاملاً خاصاً κi\kappa_i يقيس حجم أثره على المقياس. ويمكن أيضاً تحديد نافذة أيام حول العيد، لأن سلوك الناس يتغيّر في الأيام التي تسبق الكريسماس مثلاً وتليه.

هذه من أكثر ميزات Prophet عمليّةً: تُدرج قائمة الأعياد المهمّة لبلدك أو نشاطك التجاري، والنموذج يتكفّل بتعلّم أثر كل عيد تلقائياً دون أي تدخّل إحصائي.

h(t)=i=1Lκi1(tDi)h(t) = \sum_{i=1}^{L} \kappa_i \cdot \mathbf{1}(t \in D_i)
تأثيرات الأعياد — صدمات قائمة على المؤشراتلكل عيد ii، تمثّل DiD_i مجموعة تواريخ وقوعه عبر كل السنوات. الدالة المُؤشِّرة 1(tDi)\mathbf{1}(t \in D_i) تُعطي 1 في أيام العيد و0 في غيرها. كل معامل κi\kappa_i يُقدَّر من البيانات بتوزيع مسبق κNormal(0,ν)\kappa \sim \text{Normal}(0, \nu)، حيث ν\nu يتحكّم بمدى قدرة النموذج على استيعاب أثر الأعياد.

الملاءمة: تقدير سريع بمعاملات صديقة للمحلل

Prophet يتعامل مع التنبؤ بوصفه مسألة ملاءمة منحنيات، وليس نموذجاً توليدياً لـالسلاسل الزمنية. هذا خيار تصميمي واعٍ: يتخلّى عن نمذجة الارتباط الزمني التي يتميّز بها ARIMA (حيث كل قيمة تعتمد على سابقاتها) ويكسب في المقابل السرعة والمرونة ووضوح التفسير.

النموذج مبنيّ في Stan ويُدرَّب بطريقتين. الطريقة الافتراضية هي تقدير MAP عبر L-BFGS — المُحسِّن نفسه المستخدم في الانحدار اللوجستي — ولا يستغرق سوى ثوانٍ حتى مع بيانات يومية تمتدّ لسنوات. وإذا احتجت تقديراً كاملاً لعدم اليقين، يدعم Prophet الاستدلال البايزي الكامل عبر عيّنات هاملتون مونت كارلو في Stan.

أما القرار التصميمي الأهمّ فهو أن النموذج لا يملك إلا عدداً صغيراً من المعاملات المفهومة بشرياً. المحلل لا يحتاج لمعرفة ما هي متسلسلة فورييه أو توزيع لابلاس — يكفيه أن يُحرّك مقبضاً يقول «كم أريد الاتجاه مرناً؟» أو «ما مدى قوة الموسمية؟»

شيفرة شبه برمجية بأسلوب Stan لنموذج Prophetpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

# البادئات k ~ Normal(0, 5)           # معدل النمو الأساسي b ~ Normal(0, 5)           # الإزاحة delta ~ Laplace(0, tau)    # تعديلات المعدل عند نقاط التحوّل beta ~ Normal(0, sigma)    # معاملات الموسمية
# دالة الإمكان (نسخة النمو اللوجستي) y ~ Normal(
    C / (1 + exp(-(k + A*delta) * (t - (b + A*gamma))))
    + X*beta,              # الموسمية + الأعياد
    epsilon
)

التقييم: التنبؤات التاريخية المُحاكاة

كيف تتأكّد أن نموذج التنبؤ يعمل فعلاً؟ لا يمكنك اللجوء إلى التقليدي، لأن نقاط السلسلة الزمنية مرتبطة بترتيبها الزمني — لا يصحّ خلط التواريخ عشوائياً.

الحلّ الذي يطرحه Prophet هو التنبؤات التاريخية المُحاكاة (SHFs): تختار عدة نقاط زمنية في الماضي، وتتظاهر أنك لا تملك إلا البيانات حتى تلك اللحظة، ثم تُنتج تنبؤاً لـHH يوماً قادماً وتُقارنه بما حصل فعلاً. بهذا تُحاكي الأخطاء التي كنت سترتكبها لو استخدمت هذه الطريقة حينها.

بتكرار هذه العملية عند تواريخ متعددة ومقارنة النتائج بطرق مرجعية (التنبؤ الساذج، الساذج الموسمي، ARIMA، التنعيم الأسّي)، يستطيع النظام رصد التنبؤات الضعيفة تلقائياً والتنبيه إليها. هنا تتّضح قيمة نظام المحلل ضمن الحلقة على نطاق واسع: بدلاً من فحص كل تنبؤ بنفسك، تُركّز على الحالات التي أشار النظام إلى أنها تحتاج مراجعة.

افتح في المختبر
التنبؤات التاريخية المُحاكاة: جرّب تواريخ فاصلة مختلفة ولاحظ كيف يتصاعد خطأ التنبؤ كلما ابتعدت عن نقطة القطع.
تستيقظ التجربة عند وصولك…

Prophet مقابل ARIMA: فلسفتان مختلفتان

ARIMA وProphet يُمثّلان فلسفتين مختلفتين تماماً في التنبؤ بـالسلاسل الزمنية. ARIMA توليدي يُنمذج صراحةً بنية الارتباط الزمني — كل قيمة تعتمد على القيم التي سبقتها. هو أنيق رياضياً وله ضمانات استدلالية قوية، لكنه يشترط بيانات منتظمة الفواصل، وتفاضلاً دقيقاً لتحقيق الاستقرارية، وخبرة في اختيار الرُّتب (p,d,q)(p, d, q).

Prophet يأخذ مساراً مختلفاً كلياً: يتعامل مع التنبؤ بوصفه ملاءمة منحنيات. لا يُنمذج الارتباط الذاتي أصلاً، بل يرصد مباشرةً الأنماط التي يهتمّ بها البشر — الاتجاه والمواسم والأعياد — ويترك المتبقيات ضجيجاً عشوائياً. هذا يجعله أقلّ صرامة من الناحية النظرية، لكنه أنسب بكثير لبيئة المحلل ضمن الحلقة حيث السرعة ووضوح التفسير والمرونة أهمّ من الضمانات الرياضية.

ميزة عملية إضافية: Prophet يتقبّل البيانات الناقصة بلا حاجة لاستكمالها، ويتعامل مع الفواصل غير المنتظمة ودورات موسمية متعددة — وكلها مشكلات مؤلمة مع ARIMA.

الخط الزمني: من Prophet إلى التنبؤ الحديث

  1. 2017

    إطلاق Prophet

    تايلور وليثام يُطلقان Prophet كبرنامج مفتوح المصدر بلغتي Python وR. تُنشر الورقة على PeerJ Preprints.

  2. 2018

    النشر في The American Statistician

    تُنشر الورقة بصيغتها النهائية. Prophet يُستخدم بالفعل على نطاق واسع في فيسبوك لتخطيط السعة وتحديد الأهداف عبر آلاف السلاسل الزمنية.

  3. 2019

    DeepAR والتنبؤ العصبي

    DeepAR من أمازون يستخدم شبكات RNN ذاتية الانحدار لإنتاج تنبؤات احتمالية، مُشيراً إلى بداية تحوّل نحو التعلم العميق في مجال السلاسل الزمنية.

  4. 2020

    N-BEATS

    بنية تعلم عميق صرفة للتنبؤ بالسلاسل الزمنية، تغلّبت على الأساليب الإحصائية في مسابقة M4 دون الاعتماد على أي افتراضات مسبقة خاصة بالسلاسل الزمنية.

  5. 2023

    النماذج التأسيسية للسلاسل الزمنية

    TimesFM ونماذج تأسيسية أخرى تنقل نموذج «التدريب المسبق ثم الضبط» إلى عالم السلاسل الزمنية، حيث تُدرَّب على ملايين السلاسل المتنوعة وتُحقّق تنبؤاً فورياً دون أمثلة سابقة.

المرجعTaylor, S. J. and Letham, B.. Forecasting at Scale. The American Statistician, 2018.

مصطلحات هذه الورقة