به عنوان یک مهندس یادگیری ماشین یا دانشمند داده، احتمالاً باید با داده های سری زمانی کار کنید. تجزیه و تحلیل سری های زمانی بر داده های شاخص زمانی مانند قیمت سهام، دما و غیره متمرکز است.
اگر از قبل با اصول یادگیری ماشینی راحت هستید، اما در سری های زمانی تازه کار هستید، این راهنما پنج نکته عملی را برای شروع به شما ارائه می دهد.
این نکات به شما کمک میکند تا جنبههای دادههای سری زمانی را درک کنید، آنها را به طور موثر پیش پردازش کنید، دادهها را به اجزای اصلی آن تجزیه کنید، ویژگیهای معنادار طراحی کنید و الگوریتمهای کلیدی را برای تحلیل و پیشبینی دقیق اعمال کنید. بیایید شروع کنیم.
1. اصول اولیه داده های سری زمانی را درک کنید
همانطور که قبلا ذکر شد، دادههای سری زمانی دنبالهای از نقاط دادهای هستند که در زمان نمایه میشوند، برخلاف سایر دادههایی که مشاهدات مستقل هستند. بنابراین قبل از شروع تجزیه و تحلیل سری های زمانی، درک اصول اولیه داده های سری زمانی مهم است.
ابتدا باید با اجزای کلیدی داده های سری زمانی آشنا شوید:
- خود را جهت دهی کنید:پیشرفت طولانی مدت سریال
- فصلی بودن: تکرار الگوی منظم در یک دوره خاص
- مدل های چرخه ای: نوسانات نامنظم تحت تأثیر چرخه های اقتصادی یا تجاری
- سر و صدا: تغییرات تصادفی که نمی توان آن را به روند، فصلی یا چرخه نسبت داد.
برای اینکه ایده خوبی از داده های خود داشته باشید، با ترسیم نمودار شروع کنید. تجسم اغلب به شناسایی این مؤلفه ها و درک بهتر الگوهای اساسی کمک می کند.
در عمل، می توانید مجموعه ای از داده های سری زمانی، مانند خوانش دمای روزانه یا داده های فروش ماهانه را برای شناسایی این اجزا مشاهده کنید.
2. نحوه پیش پردازش داده های سری زمانی را بیاموزید
بدون توجه به اینکه با چه مجموعه داده ای کار می کنید، پیش پردازش یک مرحله مهم است. و هنگام کار با داده های سری زمانی، با مقادیر از دست رفته مواجه خواهید شد. همچنین باید نمونه برداری مجدد و بررسی ثابت بودن را انجام دهید.
مدیریت مقادیر از دست رفته:داده های سری زمانی اغلب حاوی مقادیر گم شده هستند. اینها را می توان با استفاده از تکنیک هایی مانند رو به جلو، لایه پشتی یا درون یابی پردازش کرد.
رو به جلو آخرین مقدار مشاهده شده را به جلو منتشر می کند تا زمانی که با مقدار جدیدی مواجه شود، در حالی که padding به عقب برعکس عمل می کند. درون یابی مقادیر گمشده را بر اساس نقاط داده اطراف تخمین می زند.
در اینجا یک مثال سریع آورده شده است:
df[‘value’].fillna(method=’ffill’, inplace=True)
df[‘value’].پر کردن(روش=پر کردن، در محل=درست است) |
نمونه گیری مجدد:یکی دیگر از کارهای مهم پیش پردازش، نمونه برداری مجدد است که شامل تنظیم فرکانس داده های سری زمانی شما می شود. برای مثال، میتوانید دادههای روزانه را به دادههای هفتگی یا ماهانه تبدیل کنید تا نوسانات کوتاهمدت را هموار کنید و روندهای بلندمدت را برجسته کنید.
در اینجا نمونهای از نمونهگیری مجدد دادههای سری زمانی به فواصل ماهانه و محاسبه میانگین مقدار برای هر ماه آورده شده است:
df_resampled = df.resample(‘M’).mean()
df_resampled = df.نمونه گیری مجدد(‘M’).معنی() |
ثابت بودن را بررسی کنید: همچنین، شما باید ثابت بودن را بررسی کنید. این مهم است زیرا بسیاری از مدلهای سری زمانی فرض میکنند که دادههای اساسی ثابت هستند، یعنی دادهها دارای میانگین و واریانس ثابت در طول زمان هستند.
می توانید از تست هایی مانند تست دیکی-فولر افزوده (ADF) برای بررسی ثابت بودن اگر داده ها ثابت نیستند، می توانید تبدیل هایی مانند تفاضل یا لگاریتم را برای تثبیت میانگین و واریانس اعمال کنید.
3. تجزیه سری های زمانی را یاد بگیرید
هنگامی که با اصول اولیه داده های سری زمانی آشنا شدید و نحوه پاک کردن آن داده ها را می دانید، دانستن چگونگی تجزیه یک سری زمانی به اجزای آن مفید است.
تجزیه سری زمانی شامل تجزیه یک سری زمانی به اجزای تشکیل دهنده آن است: روند، فصلی و باقیماندهاین به شما امکان می دهد الگوهای اساسی را بهتر درک کنید و پیش بینی های دقیق تری انجام دهید.
دو نوع اصلی تجزیه وجود دارد: افزایشی و ضربی. در تجزیه افزایشی، اجزا با هم جمع می شوند، در حالی که در تجزیه ضربی، اجزاء ضرب می شوند.
در اینجا نحوه استفاده از آن آورده شده است کتابخانه مدل آماری برای انجام تجزیه افزودنی:
وارد کردن matplotlib.pyplot به عنوان plt از statsmodels.tsa. نتیجه تجزیه فصلی واردات فصلی = تجزیه فصلی (df)[‘value’]model=”additive”) result.plot() plt.show()
واردات matplotlib.پای طرح به عنوان plt از آنجایی که مدل های آماری.TSA.فصلی واردات فصلی_تجزیه نتیجه = فصلی_تجزیه(df[‘value’]، مدل=“افزودنی”) نتیجه.طرح() plt.برای نشان دادن() |
در این کد، سری زمانی به اجزای روند، فصلی و باقیمانده تجزیه می شود.
4. مهندسی ویژگی برای سری های زمانی را کاوش کنید
مهندسی ویژگی برای بهبود عملکرد مدل ضروری است. با دادههای سری زمانی، این شامل ایجاد ویژگیهای تاخیر، آمار چرخشی و استخراج ویژگیهای تاریخ و زمان و غیره است.
ویژگی های Shift:از مقادیر گذشته سری های زمانی به عنوان ویژگی های پیش بینی استفاده کنید. که از مقادیر گذشته سری های زمانی به عنوان پیش بینی کننده مقادیر آینده استفاده می کنند.
به مثال زیر توجه کنید:
df[‘lag_1’] =df[‘value’].shift(1) df[‘lag_2’] =df[‘value’].shift(2)
df[‘lag_1’] = df[‘value’].تغییر دهید(1) df[‘lag_2’] = df[‘value’].تغییر دهید(2) |
این دو ستون جدید در DataFrame ایجاد می کند df
برای ویژگی های تاخیری df[‘lag_1’] ستون حاوی مقادیر df[‘value’] ستون با یک گام زمانی جابجا شد و df[‘lag_2’] ستون حاوی مقادیری است که با دو مرحله زمانی جابجا شده اند.
آمار مستمر:همچنین میتوانید آمار متحرک مانند میانگین متحرک و انحراف معیار متحرک را برای گرفتن زمینه محاسبه کنید.
این مثال را در نظر بگیرید:
df[‘rolling_mean’] =df[‘value’].rolling(window=3).mean() df[‘rolling_std’] =df[‘value’].rolling(window=3).std()
df[‘rolling_mean’] = df[‘value’].بلبرینگ(پنجره=3).معنی() df[‘rolling_std’] = df[‘value’].بلبرینگ(پنجره=3).استاندارد() |
THE df[‘rolling_mean’] ستون میانگین متحرک (میانگین) است df[‘value’] ستون بر روی یک پنجره از 3 گام زمانی، و df[‘rolling_std’] ستون انحراف استاندارد لغزشی را در همان پنجره محاسبه می کند.
ویژگی های تاریخ و زمان: برای ثبت الگوهای زمانی، ویژگی هایی مانند زمان، روز، ماه و سال را از شاخص تاریخ-زمان استخراج کنید.
این کد اجزای مختلف تاریخ و زمان را استخراج می کند:
پانداها را بهعنوان pd وارد کنید # ایجاد نمونه DataFrame date_rng = pd.date_range(start=”2023-01-01″, end=’2023-01-10′, freq=’H’) df = pd.DataFrame( date_rng، ستونها =[‘date’]) df[‘value’] = range(len(date_rng)) # فقط چند مثال مقدار df.set_index(‘date’, inplace=True) # استخراج ویژگی های تاریخ-زمان از df[‘hour’] = df.index.time df[‘day’] = df.index.day df[‘month’] = df.index.month df[‘year’] = df.index.year
واردات پانداها به عنوان p.d. # یک نمونه DataFrame ایجاد کنید date_rng = p.d..محدوده_تاریخ(برای شروع=’01-01-2023′، پایان=’10-01-2023′، فرکانس=‘H’) df = p.d..چارچوب داده(date_rng، ستون ها=[‘date’]) df[‘value’] = محدوده(طول(date_rng)) # فقط چند نمونه از ارزش ها df.define_index(“تاریخ”، در محل=درست است) # ویژگی های تاریخ و زمان را استخراج کنید df[‘hour’] = df.اشاره.ساعت df[‘day’] = df.اشاره.روز df[‘month’] = df.اشاره.ماه df[‘year’] = df.اشاره.سال |
5. با الگوریتم های سری زمانی اصلی آشنا شوید
هنگام مطالعه تحلیل سری های زمانی، ضروری است که با الگوریتم های کلیدی که برای مدل سازی و پیش بینی داده های سری زمانی اساسی هستند آشنا شوید. درک این الگوریتم ها به شما این امکان را می دهد که الگوهای مختلفی مانند روند و فصلی بودن را ضبط و پیش بینی کنید.
ARIMA (Autoregressive Integrated Moving Average): ARIMA یکی از پرکاربردترین روش ها در تحلیل سری های زمانی است. این مولفههای خودرگرسیون و میانگین متحرک و همچنین تمایز را برای کنترل غیرایستایی ترکیب میکند.
مدل های ARIMA به ویژه برای مجموعه داده هایی با روند اما بدون الگوهای فصلی قوی موثر هستند.
ساریما (آریما فصلی):SARIMA ARIMA را با ترکیب عناصر فصلی گسترش می دهد. بنابراین SARIMA برای مجموعه داده هایی با الگوهای فصلی تکرارشونده مناسب است. این مدل شامل شرایط فصلی اضافی برای گرفتن نوسانات دوره ای است.
هموارسازی نمایی:روش های هموارسازی نمایی، مانند Holt-Winters، برای ثبت هر دو روند و اثرات فصلی در داده های سری زمانی عالی هستند. این روشها از میانگینهای وزنی استفاده میکنند و مشاهدات اخیر وزن بیشتری دارند. Holt-Winters، به ویژه، می تواند داده ها را با فصلی افزایشی و ضربی مدل کند.
علاوه بر این، می توانید نحوه استفاده را یاد بگیرید پیامبریک ابزار پیشبینی کاربر پسند که برای سادهسازی پیشبینی سریهای زمانی طراحی شده است. اگر با یادگیری عمیق آشنایی دارید، می توانید از شبکه های حافظه کوتاه مدت (LSTM) برای یادگیری وابستگی های بلند مدت در داده های سری زمانی استفاده کنید. برخلاف روشهای سنتی، LSTMها قادر به یادگیری از توالی دادهها هستند و میتوانند الگوهای پیچیده را مدلسازی کنند.
با درک این الگوریتم های کلیدی، می توانید مناسب ترین روش را برای وظایف تحلیل سری های زمانی خاص خود انتخاب کنید.
برای نتیجه گیری
امیدوارم این راهنما برای شروع تحلیل سری های زمانی مفید بوده باشد.
همانطور که در این مقاله دیدیم، تجزیه و تحلیل سری های زمانی نیاز به درک اصول اولیه سری های زمانی و همچنین یادگیری چند الگوریتم برای افزودن به جعبه ابزار شما دارد. علاوه بر این، برای ایجاد مدلهای مفید و کارآمد، باید روی پیشپردازش دادهها و مهندسی ویژگیها تمرکز کنید.
اگر میخواهید درباره سریهای زمانی بیشتر بدانید، سریهای زمانی را بررسی کنید مینی دوره 7 روزه پیش بینی سری های زمانی با پایتونیادگیری مبارک!