سری های زمانی و پیش بینی برخی از مشکلات کلیدی در علم آمار و داده ها بوده است. یک داده زمانی به یک سری زمانی تبدیل می شود که از یک ویژگی محدود زمانی مانند روز، ماه و سال نمونه برداری شود که به طور ذاتی به آن نظم ضمنی می دهد. پیشبینی زمانی است که آن دادهها را میگیریم و مقادیر آینده را پیشبینی میکنیم.
ARIMA و SARIMA هر دو الگوریتم هایی برای پیش بینی هستند. ARIMA مقادیر گذشته (خودرگرسیون، میانگین متحرک) را در نظر می گیرد و بر اساس آن مقادیر آینده را پیش بینی می کند. SARIMA به طور مشابه از مقادیر گذشته استفاده می کند اما هر گونه الگوی فصلی را نیز در نظر می گیرد. از آنجایی که SARIMA فصلی بودن را به عنوان پارامتر وارد می کند، در پیش بینی فضاهای داده پیچیده حاوی چرخه ها به طور قابل توجهی قدرتمندتر از ARIMA است.
ممکن است برای شما جالب باشد
در ادامه در وبلاگ، ما قصد داریم به بررسی:
- آریما
- چیست و چگونه پیش بینی می کند
- نمونه ای از پیش بینی تولید ناخالص داخلی ایالات متحده با استفاده از ARIMA
- ساریما
- چیست و چگونه پیش بینی می کند
- نمونه ای از پیش بینی مصرف برق
- مزایا و معایب هر دو مدل
- موارد استفاده در دنیای واقعی از ARIMA و SARIMA
قبل از اینکه به سراغ الگوریتمها برویم، بخش مهمی در مورد پردازش دادهها وجود دارد که باید قبل از شروع سفر پیشبینی خود مراقب آن باشید.
پیش پردازش داده ها برای پیش بینی سری های زمانی
داده های سری زمانی به هم ریخته است. پیشبینی مدلها از میانگینهای غلتشی ساده تا LSTM ها نیازمند پاک بودن دادهها است. بنابراین در اینجا چند تکنیک وجود دارد که می توانید قبل از حرکت به سمت پیش بینی از آنها استفاده کنید.
توجه: این مرحله پیش پردازش داده ها کلی است و هدف آن این است که خوانندگان بر آن تاکید کنند زیرا پروژه های دنیای واقعی شامل تمیز کردن و آماده سازی زیادی است.
- Detrending/Stationarity: قبل از پیش بینی، می خواهیم متغیرهای سری زمانی ما لوازم التحریر میانگین واریانس باشند. این بدان معنی است که ویژگی های آماری یک مدل بسته به زمانی که نمونه گرفته شده است، متفاوت نیست. مدل های ساخته شده بر روی داده های ثابت عموماً قوی تر هستند. این را می توان با استفاده از تفاوت به دست آورد.
- تشخیص ناهنجاری: هر نقطه پرت موجود در دادهها ممکن است نتایج پیشبینی را منحرف کند، بنابراین شناسایی و عادیسازی نقاط پرت قبل از حرکت به سمت پیشبینی، اغلب یک روش خوب در نظر گرفته میشود. شما می توانید این وبلاگ را در اینجا دنبال کنید، جایی که من الگوریتم های تشخیص ناهنجاری را به طور کامل توضیح داده ام.
- بررسی فراوانی نمونه برداری: این یک مرحله مهم برای بررسی منظم بودن نمونه برداری است. دادههای نامنظم باید قبل از اعمال هر تکنیک مدلسازی بهعنوان یکپارچه در نظر گرفته شوند، زیرا نمونهبرداری نامنظم منجر به شکسته شدن یکپارچگی سریهای زمانی میشود و به خوبی با مدلها همخوانی ندارد.
- دادههای گمشده: گاهی اوقات ممکن است دادههای گمشده برای برخی از مقادیر تاریخ وجود داشته باشد و باید قبل از مدلسازی به آن پرداخته شود. به عنوان مثال، یک داده سری زمانی با مقادیر گم شده به صورت زیر است:
داده های از دست رفته در سری های زمانی |منبع
حالا بیایید به سراغ مدل ها برویم.
آریما
مدل ARIMA دسته ای از مدل های خطی است که از مقادیر تاریخی برای پیش بینی مقادیر آینده استفاده می کند. ARIMA مخفف Autoregressive Integrated Moving Average است که هر کدام از این تکنیک ها به پیش بینی نهایی کمک می کند. بیایید یکی یکی آن را بفهمیم.
خود رگرسیون (AR)
در یک مدل خودرگرسیون، متغیر مورد نظر را با استفاده از ترکیب خطی مقادیر گذشته آن متغیر پیشبینی میکنیم. اصطلاح خودرگرسیون نشان می دهد که رگرسیون متغیر در مقابل خودش است. یعنی ما از مقادیر تاخیری متغیر هدف به عنوان متغیرهای ورودی خود برای پیش بینی مقادیر آینده استفاده می کنیم. یک مدل خودرگرسیون از مرتبه p به صورت زیر خواهد بود:
در معادله فوق ، مقدار مشاهده شده در حال حاضر M یک تابع خطی از مقادیر P گذشته آن است.[0 ، P] ضرایب رگرسیون هستند که پس از آموزش تعیین می شوند. برخی از روشهای استاندارد برای تعیین مقادیر بهینه P یکی از آنها ، تجزیه و تحلیل همبستگی و توطئه های عملکرد همبستگی جزئی است.
عملکرد همبستگی (ACF) همبستگی بین مقادیر جریان و گذشته از همان متغیر است. همچنین اثر ترجمه ای را که مقادیر با زمان جدا از یک اثر مستقیم به وجود می آورند ، در نظر می گیرد. به عنوان مثال ، قیمت نفت 2 روز پیش 1 روز پیش و در نهایت ، امروز بر قیمت ها تأثیر می گذارد. اما قیمت نفت 2 روز پیش نیز ممکن است در امروز که ACF را اندازه گیری می کند نیز تأثیر داشته باشد.
همبستگی جزئی (PACF) از طرف دیگر فقط ارتباط مستقیم بین مقادیر گذشته و مقادیر فعلی را اندازه گیری می کند. به عنوان مثال ، PACF تنها 2 روز پیش تأثیر قیمت روغن را در امروز اندازه گیری می کند و هیچ اثر ترجمه ای ندارد.
توطئه های ACF و PACF به ما کمک می کنند تا وابستگی به ارزش گذشته را تعیین کنیم که به نوبه خود به ما کمک می کند تا P را در AR استنباط کنیم. به اینجا بروید تا درک کنید که چگونه مقادیر P (AR) و Q (MA) را در عمق استنباط کنید.
یکپارچه (من)
یکپارچه نمایانگر هرگونه تفاوت است که باید به منظور ثابت سازی داده ها اعمال شود. یک تست دیکی-فولر (کد زیر) می تواند روی داده ها اجرا شود تا برای استیکاری بررسی شود و سپس با عوامل مختلف متفاوت آزمایش کند. یک عامل متفاوت ، D = 1 به معنای تاخیر از I. E. MT-MT-1 است. بیایید به یک طرح از داده های اصلی در مقابل متفاوت نگاه کنیم.
داده های اصلی |منبع: نویسنده
پس از اعمال D = 1 |منبع: نویسنده
تفاوت بین آنها مشهود است. بعد از تفاوت ، می توانیم ببینیم که به طور قابل توجهی ثابت تر از اصل است و میانگین و واریانس تقریباً در طول سالها سازگار است. ما می توانیم از کد زیر برای انجام یک تست دیکی فولر استفاده کنیم.
میانگین در حال حرکت (MA)
مدل های متوسط در حال حرکت از خطاهای پیش بینی گذشته به جای مقادیر گذشته در یک مدل رگرسیون مانند برای پیش بینی مقادیر آینده استفاده می کنند. یک مدل متوسط متحرک را می توان با معادله زیر مشخص کرد:
این به عنوان مدل MA (Q) گفته می شود. در معادله فوق ، E یک خطا نامیده می شود و انحراف باقیمانده تصادفی بین مدل و متغیر هدف را نشان می دهد. از آنجا که E فقط پس از قرار دادن مدل قابل تعیین است و از آنجا که این یک پارامتر نیز هست ، بنابراین در این حالت E یک پارامتر غیرقابل کنترل است. از این رو ، برای حل معادله MA ، از تکنیک های تکراری مانند برآورد حداکثر احتمال به جای OLS استفاده می شود.
از آنجایی که ما بررسی کرده ایم که چگونه ARIMA کار می کند ، بیایید به یک مثال شیرجه بزنیم و ببینیم که چگونه Arima برای داده های سری زمانی اعمال می شود.
اجرای آریما
برای اجرای ، من داده های فروش Catfish را از سال 1996 تا 2008 انتخاب کرده ام. ما قصد داریم تکنیک هایی را که در بالا آموخته ایم به این مجموعه داده استفاده کنیم و آنها را در عمل ببینیم. اگرچه داده ها نیازی به تمیز کردن زیادی ندارند و در حالت تحلیلی خوانده شده قرار دارند ، اما ممکن است مجبور شوید تکنیک های تمیز کردن را در مجموعه داده خود اعمال کنید.
متأسفانه ، ما نمی توانیم هر سناریو را تکرار کنیم زیرا روش های تمیز کردن بسیار ذهنی هستند و به نیازهای تیم نیز بستگی دارند. اما تکنیک های آموخته شده در اینجا می توانند بعد از تمیز کردن مستقیماً در مجموعه داده شما اعمال شوند.
بیایید با وارد کردن ماژول های ضروری شروع کنیم.
وابستگی های وارداتی
اینها ماژول های کاملاً توضیحی هستند که هر دانشمند داده با آن آشنا می شوند. این همیشه یک عمل خوب برای تنظیم تصادفی برای تولید کد با همان نتایج است.
در مرحله بعد ، ما می خواهیم داده های سری زمانی را وارد و ترسیم کنیم
عصاره-ترانسفر-بار (ETL)
برای سادگی، من داده ها را فقط به سال های 1996-2008 محدود کرده ام. نمودار تولید شده توسط کد بالا به صورت زیر است:
فروش گربه ماهی |منبع: نویسنده
برداشت های اولیه نشان می دهد که یک روند مشخص و فصلی در داده ها وجود دارد. بیایید تجزیه STL را برای درک بهتر انجام دهیم.
تجزیه STL
نمودار حاصل به این صورت است:
نکات قابل تامل:
- یک الگوی فصلی 6 ماهه و 12 ماهه قابل مشاهده است
- روند صعودی و نزولی مشهود است
بیایید به نمودارهای ACF و PACF نگاه کنیم تا ایده ای برای مقادیر p و q داشته باشیم
نمودارهای ACF و PACF
خروجی کد بالا ACF و PACF را ترسیم می کند:
نمودار خود همبستگی برای داده های گربه ماهی
نکات قابل تامل:
- افزایش قابل توجهی در ACF در 6 ماهه و 12 ماهه وجود دارد
- PACF تقریباً سینوسی است
ضریب افتراق d باید روی 1 نگه داشته شود زیرا روند واضح و داده های غیر ثابت وجود دارد. P را می توان با مقادیر 6 و 12 آزمایش کرد.
مناسب ARIMA
ما از ماژول statsmodels برای پیاده سازی و استفاده از ARIMA استفاده می کنیم. برای این کار، کلاس ARIMA را از statsmodels وارد کردهایم. حال، بیایید با پارامترهایی که در بخش قبل صحبت کردیم، مطابقت کنیم.
همانطور که در بالا متوجه شدید من با (12, 1, 1) برای (p, d, q) درست از آنچه در نمودارهای ACF و PACF دیدیم شروع کردم.
توجه: استفاده از ماژول ها برای الگوریتم ها (مانند scikit-learn) بسیار مفید است و خوشحال خواهید شد که بدانید statsmodels یکی از کتابخانه هایی است که بسیار مورد استفاده قرار می گیرد.
ابزارهای بیشتر را بررسی کنید
بیایید ببینیم پیشبینیهای ما چگونه با دادههای اصلی مطابقت دارند.
تجسم نتیجه
خروجی کد بالا نمودار مقایسه ای از پیش بینی ها و داده های واقعی را به شما می دهد.
نمودار مقایسه ای از پیش بینی ها و داده های واقعی
در اینجا میتوانید شاهد باشید که این مدل واقعاً با برخی از اوجها مطابقت نداشت، اما ماهیت دادهها را به خوبی دریافت کرد. ما میتوانیم با مقادیر p, d, q بیشتری آزمایش کنیم تا مدل را بهتر تعمیم دهیم و مطمئن شویم که بیش از حد برازنده نیست.
آزمایش و بهینه سازی یک راه است اما می توانید از Auto-ARIMA نیز استفاده کنید. اساساً کارهای سنگین را برای شما انجام می دهد و هایپرپارامترها را برای شما تنظیم می کند. این وبلاگ نقطه شروع خوبی برای Auto-ARIMA است.
به خاطر داشته باشید که توضیح پذیری پارامترها چیزی است که هنگام کار بر روی Auto-ARIMA باید با آن کنار بیایید و مطمئن شوید که به BlackBox تبدیل نمی شود زیرا مدل های پیش بینی باید قبل از استقرار به سمت حاکمیت بروند. بنابراین، تمرین خوبی است که بتوانید مقادیر پارامترها و سهم آنها را توضیح دهید.
ساریما
SARIMA مخفف Seasonal-ARIMA است و شامل سهم فصلی در پیش بینی می شود. اهمیت فصلی بودن کاملاً مشهود است و ARIMA نمی تواند این اطلاعات را به طور ضمنی جمع بندی کند.
بخش های خودرگرسیون (AR)، یکپارچه (I) و میانگین متحرک (MA) مدل مانند ARIMA باقی می مانند. اضافه شدن فصلی بودن به مدل SARIMA استحکام می بخشد. به صورت زیر نمایش داده می شود:
منبع
که m تعداد مشاهدات در سال است. برای قسمت های فصلی مدل از علامت بزرگ و برای قسمت های غیر فصلی مدل از حروف کوچک استفاده می کنیم.
مشابه با ARIMA، مقادیر P، D، Q برای بخش های فصلی مدل را می توان از نمودارهای ACF و PACF داده ها استنتاج کرد. بیایید SARIMA را برای همان مدل فروش گربه ماهی پیاده سازی کنیم.
اجرای ساریما
ETL و وابستگیها مانند ARIMA باقی میمانند، بنابراین مستقیماً به بخش مدلسازی میرویم.
مناسب ساریما
من با گرفتن 1،1،1 برای قطعات غیر فصلی آزمایش کردم و 1،1،0،12 را برای قطعات فصلی گرفتم زیرا ACF یک همبستگی تاخیری 6 ماهه و 12 ماهه را نشان داد. ببینیم چطور شد
تجسم نتیجه
نمودار مقایسه ای از پیش بینی ها و داده های واقعی
همانطور که می بینید، در مدل شروع، احتمالاً به دلیل مقداردهی اولیه خارج از دوره، برای جا افتادن تلاش کرد، اما به سرعت مسیر درست را آموخت. تناسب نسبت به ARIMA بسیار خوب است که نشان می دهد SARIMA می تواند فصلی بودن را بهتر یاد بگیرد و اگر در داده ها وجود داشته باشد، منطقی است که SARIMA را امتحان کنید.
مزایا و معایب مدل های ARIMA و SARIMA
با توجه به ماهیت خطی هر دو الگوریتم، آنها بسیار مفید هستند و در صنعت هنگام آزمایش و درک داده ها مورد استفاده قرار می گیرند و امتیازهای پیش بینی پایه را ایجاد می کنند. اگر درست با مقادیر عقب مانده (p, d, q) تنظیم شوند، می توانند عملکرد قابل توجهی بهتری داشته باشند. ماهیت ساده و قابل توضیح هر دو الگوریتم آنها را به یکی از برترین انتخابهای تحلیلگران و دانشمندان داده تبدیل کرده است. با این حال، هنگام کار با ARIMA و SARIMA در مقیاس، برخی مزایا و معایب وجود دارد. بیایید در مورد هر دو مورد بحث کنیم:
مزایای ARIMA و SARIMA
- درک و تفسیر آسان: تنها چیزی که هم تیمی ها و همکاران شما از آن استقبال می کنند، سادگی و تفسیرپذیری مدل ها است. تمرکز بر هر دوی این موارد و در عین حال حفظ کیفیت نتایج به ارائه با ذینفعان کمک خواهد کرد.
- متغیرهای محدود: هایپرپارامترهای کمتری وجود دارد، بنابراین اگر مدل وارد تولید شود، فایل پیکربندی به راحتی قابل نگهداری خواهد بود.
معایب ARIMA و SARIMA
- پیچیدگی زمانی نمایی: هنگامی که مقدار p و q افزایش مییابد، ضرایب به همان اندازه بیشتر برای تناسب وجود دارد، بنابراین اگر p و q زیاد باشند، چند برابر پیچیدگی زمانی افزایش مییابد. این امر تولید هر دوی این الگوریتمها را سخت میکند و باعث میشود دانشمندان داده به پیامبر و دیگر الگوریتمها نگاه کنند. سپس دوباره، به پیچیدگی مجموعه داده نیز بستگی دارد.
- داده های پیچیده: در جایی که داده های شما بیش از حد پیچیده هستند و هیچ راه حل بهینه ای برای p و q وجود ندارد، ممکن است وجود داشته باشد. اگرچه احتمال شکست ARIMA و SARIMA بسیار کم است، اما اگر این اتفاق بیفتد، متأسفانه ممکن است مجبور شوید جای دیگری را جستجو کنید.
- مقدار داده های مورد نیاز: هر دو الگوریتم به داده های قابل توجهی برای کار کردن نیاز دارند، به خصوص اگر داده ها فصلی باشند. برای مثال، استفاده از تقاضای سه ساله تاریخی احتمالاً برای یک پیشبینی خوب کافی نیست (محصولات چرخه عمر کوتاه).
ممکن است برای شما جالب باشد
موارد استفاده در دنیای واقعی از ARIMA و SARIMA
ARIMA/SARIMA از جمله محبوبترین مدلهای اقتصادسنجی هستند که برای پیشبینی قیمت سهام، پیشبینی تقاضا و حتی شیوع بیماریهای عفونی استفاده میشوند. زمانی که مکانیسم های اساسی شناخته نشده یا بسیار پیچیده هستند، مثلاً بازار سهام، یا کاملاً شناخته شده نیستند، مثلاً خرده فروشی، معمولاً بهتر است از ARIMA یا یک مدل آماری مشابه از الگوریتم های عمیق پیچیده مانند RNN استفاده شود.
با این حال، مواردی وجود دارد که استفاده از ARIMA می تواند نتایج یکسانی را به شما بدهد.
در اینجا برخی از مقالات انتخاب شده که از ARIMA/SARIMA استفاده می کنند آورده شده است:
-
: این مقاله تحقیقاتی از ARIMA برای پیش بینی تعداد موارد COVID-19 در هند استفاده کرد. نقص استفاده از ARIMA، در این مورد، این است که فقط از مقادیر گذشته برای پیشبینی آینده استفاده میکند. اما با COVID-19 با گذشت زمان شکل خود را تغییر میدهد و به عوامل رفتاری زیادی به غیر از مقادیر گذشته بستگی دارد که ARIMA قادر به گرفتن آنها نیست.: این مطالعه ای است که تابش خورشیدی را در کره جنوبی بر اساس داده های تابش ساعتی خورشید که از اداره هواشناسی کره در طول 37 سال به دست آمده است با استفاده از SARIMA پیش بینی می کند.: نمونه دیگری از استفاده از ARIMA در مدیریت بیماری با استفاده از کاربرد گسترده مدل های ARIMA/SARIMA. مقالات تحقیقاتی به برخی از موارد استفاده واقعی برای ARIMA می پردازند. به عنوان مثال، بیمارستانی در سنگاپور تعداد تختهایی را که در 3 روز در طول اپیدمی سارس نیاز خواهند داشت، به دقت پیشبینی کرد.: این مورد استفاده بر مدل سازی و پیش بینی تقاضا در یک شرکت مواد غذایی با استفاده از ARIMA تمرکز دارد.
اغلب اوقات میبینید که ARIMA/SARIMA زمانی استفاده میشود که بیانیه مشکل به مقادیر گذشته محدود میشود، چه در مورد پیشبینی تختهای بیمارستانی، موارد COVID یا پیشبینی تقاضا باشد. با این حال، نقص زمانی به وجود می آید که عوامل دیگری مانند ویژگی هایی که ثابت هستند در پیش بینی در نظر گرفته شوند. به بیان مشکلی که روی آن کار می کنید توجه کنید، اگر این شرایط برای شما اتفاق افتاد، سعی کنید از روش های دیگری مانند تتا، QRF (جنگل های رگرسیون چندکی)، پیامبر، RNN ها استفاده کنید.
نتیجه گیری و نکات پایانی
به آخر رسیدی!در این وبلاگ، ARIMA و SARIMA را به طور مفصل در مورد استفاده و اهمیت آنها برای تحقیق در صنعت مورد بحث قرار دادیم. سادگی و استحکام آنها آنها را به عنوان مدعیان برتر برای مدل سازی و پیش بینی تبدیل می کند. با این حال، مواردی وجود دارد که باید هنگام کار روی آنها در مورد استفاده در دنیای واقعی خود به خاطر داشته باشید: