چیتشیت
مفاهیم پایهای سریهای زمانی
Time Series Fundamentals
بررسی مانایی، ساخت ویژگیهای تأخیری، اعتبارسنجی پیشرونده، شکستدادن خطوط مبنای ساده. گشتهای تصادفی و زنجیرههای مارکوف.
فهرست مطالب
از سری زمانی تا پیشبینی معتبر
معماریاعتبارسنجی پیشرونده
گامبهگام- آموزشبرازش روی دادهها تا زمان t.
- پیشبینیپیشبینی t+1، یا t+1 تا t+k برای حالت چندگامی.
- لغزشپنجره را رو به جلو حرکت دهید.
- تکرارهر فولد آزمون بعد از تمام دادههای آموزشی خودش قرار میگیرد.
- پنجرهی افزایشیمجموعهی آموزش رشد میکند. وقتی دادههای قدیمی معتبر میمانند استفاده کنید.
- پنجرهی لغزاناندازهی ثابت. وقتی دنیا تغییر میکند و دادههای قدیمی آسیب میزنند استفاده کنید.
وظایف در قالب کد
کار و کد| وظیفه | کد |
|---|---|
| حذف یک روند | difference(series, order=1) |
| آمارههای متحرک و یک حکم ارزیابی | check_stationarity(series, window=50) |
| ACF تا یک تأخیر مشخص | autocorrelation(series, max_lag=20) |
| تبدیل سری به X و y | make_lag_features(series, n_lags) |
| فولدهای دارای ترتیب زمانی | walk_forward_split(n_samples, n_splits=5, min_train=50) |
| مدل AR روی ویژگیهای تأخیری | SimpleAR(n_lags=5).fit_series(series) |
| چندگامی بازگشتی | forecast(last_values, n_steps) |
| درصد خطا، با رد کردن صفرها | mape(y_true, y_pred) |
نسخههای کتابخانه
کدpython
X, y = make_lag_features(series, n_lags=10)
for train_idx, test_idx in walk_forward_split(len(X)):
model = Ridge(alpha=1.0)
model.fit(X[train_idx], y[train_idx])
predictions = model.predict(X[test_idx])
model = ARIMA(train_series, order=(5, 1, 2)) # p, d, q
fitted = model.fit()
forecast = fitted.forecast(steps=30) # 30 گام جلوتر
tscv = TimeSeriesSplit(n_splits=5) # اعتبارسنجی پیشرونده با sklearn
scores = cross_val_score(model, X, y, cv=TimeSeriesSplit(n_splits=5))
تعاریف بنیادین
مفهومها- مؤلفهها
- روند، فصلیبودن و پسماند. پسماند نوفه سفید نشاندهنده تجزیه موفق است.
- مانا
- میانگین، واریانس و خودهمبستگی در طول زمان تغییر نمیکنند.
- تفاضلگیری
- $\text{diff}[t] = \text{value}[t] - \text{value}[t-1]$
- ACF
- همبستگی سری با نسخهی دارای تأخیر خود. از تأخیرها تا جایی که مقدارشان ناچیز شود استفاده کنید.
- PACF
- خودهمبستگی در تأخیر k بعد از حذف اثر تأخیرهای کوتاهتر.
- ARIMA(p, d, q)
- p مقدار گذشته، d مرحله تفاضلگیری، q خطای گذشته.
- MAE / RMSE / MAPE
- میانگین قدر مطلق خطا، جذر میانگین مربعات خطا، درصد خطا.
- همترازی هدف
- مقدار هدف در زمان t. تمام ویژگیها از t-1 یا قبلتر استفاده میکنند.
انتخاب یک رویکرد
دستورها| دستور | کارکرد |
|---|---|
Lag features + ML | چندین ویژگی خارجی. قویترین نقطه شروع با الگوریتمهای تقویتکننده (boosting) |
ARIMA | یک سری تکمتغیره، کوتاهمدت. SARIMA برای فصول |
Exponential smoothing | روند ساده + فصلیبودن با Holt-Winters |
Neural networks | توالیهای طولانی، سریهای چندگانه |
Recursive forecast | بازخورد دادن پیشبینیها به ورودی. مناسب برای 1 تا 5 گام |
Direct forecast | یک مدل بهازای هر افق زمانی. مناسب برای افقهای طولانی |
Multi-output | یک مدل که تمام افقها را خروجی میدهد |
پیشفرضها و اعداد
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
`check_stationarity` window | 50 | اندازهی پنجرهی لغزان |
Mean shift limit | 0.5 | برحسب انحراف معیار سری، مقایسه دو نیمه با هم |
Variance ratio limit | 2.0 | بالاتر از آن، نشانهگذاری بهعنوان نامانا |
ADF p-value | 0.05 | پایینتر از آن، رد نامانایی |
max_lag | 20 | پیشفرض خودهمبستگی |
`n_splits`, `min_train` | 5 | حداقل 50 ردیف آموزشی (min_train=50) قبل از اولین آزمون |
Rolling windows | 7 and 14 | میانگین، انحراف معیار، حداقل، حداکثر برحسب روز |
Weekly seasonality | lag 7 | احتمالاً 14 نیز |
اشتباهات و راهحلها
عیبیابیMSE کمتر در تفکیک تصادفی
- علت
- نشت داده از آینده
- راهحل
- اعتبارسنجی پیشرونده یا تفکیک زمانی
بکتست تقریباً بینقص
- علت
- لحاظ شدن ویژگی زمان t
- راهحل
- بازبینی دقیق همترازی تمام ویژگیها
از دست رفتن الگوی فصلی
- علت
- کوتاهتر بودن مجموعه آزمون از یک چرخه کامل
- راهحل
- نگهداشتن یک چرخهی فصلی کامل برای ارزیابی
دو برابر شدن درآمد، عقب ماندن مدل
- علت
- تغییر مقیاس مطلق
- راهحل
- مدلسازی درصد تغییرات
بیشبرازش با تأخیرهای زیاد
- علت
- تصور «تاریخچه بیشتر، بهتر است»
- راهحل
- انتخاب تأخیرها بر اساس ACF
دریفت مدل خطی
- علت
- حذف نشدن روند
- راهحل
- ابتدا تفاضلگیری، سپس مدلسازی
شکست در برابر روش ساده فصلی
- علت
- نشت داده، ارزیابی اشتباه، یا سری کاملاً تصادفی
- راهحل
- رفع باگ قبل از شروع تنظیم هایپرپارامترها
افزایش خطاها در محیط عملیاتی
- علت
- تغییر شرایط دنیای واقعی
- راهحل
- آموزش مجدد روی دادههای اخیر
فرایندهای تصادفی در قالب کد
کدpython
positions = random_walk_1d(n_steps, seed=None) # رشد انحراف معیار بهصورت sqrt(n)
mc = MarkovChain(P, state_names=names) # مجموع ردیفهای P برابر 1 است
pi = mc.stationary_distribution() # بردار ویژه چپ، مقدار ویژه 1
states = mc.simulate(start_state=0, n_steps=100000, seed=42)
traj = langevin_dynamics(grad_U, x0, dt, temperature, n_steps)
samples, acc_rate = metropolis_hastings(
target_log_prob=bimodal_log_prob,
proposal_std=2.0, x0=np.array([0.0]), n_samples=100000, seed=42)
samples_flat = samples[10000:, 0] # دادههای اولیه (burn-in) دور ریخته شدند
گشتهای تصادفی و زنجیرههای مارکوف
مفهومها- گشت تصادفی
- میانگین 0، انحراف معیار $\sqrt{n}$. 10000 گام مقداری حدود 100 میدهد.
- خاصیت مارکوف
- حالت بعدی تنها به حالت فعلی وابسته است.
- توزیع ایستا
- $\pi P = \pi$. زنجیره آبوهوا خروجی [0.55, 0.18, 0.27] میدهد.
- همگرایی
- نیازمند یک زنجیره تحویلناپذیر و نامتناوب است.
- شکاف طیفی
- 1 منهای دومین مقدار ویژه. شکاف 0.2 در حدود 5 گام به تعادل میرسد.
- گام براونی
- $B(t + dt) = B(t) + \sqrt{dt} \, z$
- لانژون
- $x_{t+1} = x_t - dt \, \nabla U(x_t) + \sqrt{2 T \, dt} \, z_t$
- متروپولیس-هستینگز
- پذیرش با $\min(1, a)$. نرخ پذیرش هدف حدود 23٪.
ناهنجاریها در زمان
نکتهها- دمای 90 درجه در تابستان طبیعی و در زمستان ناهنجار است. ناهنجاریهای زمینهای به ویژگیهای زمانی نیاز دارند.
- ناهنجاریهای جمعی به روشهای آگاه از توالی نیاز دارند. پنجاه ورود ناموفق پشت سر هم نشاندهنده حمله است.
- افزودن آمارههای متحرک، نسبتها و ویژگیهای زمانسپریشدهازآخرینرویداد.
- آمارههای متحرک 30 روزه در زمان امتیازدهی نیازمند 30 روز تاریخچه در حافظه موقت هستند.
- ردیابی توزیع امتیاز ناهنجاری؛ یک آستانه ثابت با گذشت زمان دچار دریفت میشود.
پرسشها
پرسش و پاسخ- چرا k-fold استفاده نشود؟
- نمونهها مستقل نیستند. فولدهای تصادفی آینده را به دادههای آموزشی نشت میدهند.
- چند مرحله تفاضلگیری؟
- اکثر سریهای واقعی حداکثر به دو مرحله نیاز دارند.
- چند تأخیر؟
- از ACF استفاده کنید. قلهها در تأخیر 12 در دادههای ماهانه نشاندهنده فصلیبودن سالانه است.
- آیا مدلهای درختی نیاز به تفاضلگیری دارند؟
- مدلهای درختی روندها را مدیریت میکنند. مدلهای خطی به مانایی نیاز دارند.
- درآمد چوله؟
- پیشبینی در فضای لگاریتمی و سپس تبدیل معکوس با تابع نمایی.
- اول کدام خط مبنا؟
- آخرین مقدار، سپس ساده فصلی، و بعد میانگین متحرک.