08 Time Series

Tip

🆕 Նոր գլուխ։ Երկու դասախոսության սլայդերը պատրաստ են (ներքևում)։ Տեսանյութերը դեռ ձայնագրված չեն — TBD։ Դասերն անցնելուց հետո կավելացվեն YouTube-ի հղումները և նշումներով (_notes) PDF-երը։

🎲 Random

Շաբաթվա պատահական հղումը՝ TBD։ (Գլխի պատահական նկարը՝ ../00_random_image/08_*.jpgTBD։)

Ժամանակային շարքեր — այն դեպքը, երբ տողերի հերթականությունը հենց ինքը ինֆորմացիա է 📈

📚 Նյութը

Երկու դասախոսություն․ առաջինը՝ դասական վիճակագրական մեթոդներ, երկրորդը՝ նույն խնդիրը որպես մեքենայական ուսուցում։ Սլայդերը ml/08_time_series/ պանակում։

  • [30] Ժամանակային շարքեր — դասական մեթոդներ — ի՞նչն է ժամանակային շարքը տարբերում մնացած խնդիրներից, տրենդ / սեզոնայնություն / աղմուկ, STL դեկոմպոզիցիա, ստացիոնարություն և դիֆերենցում (ADF և KPSS), ACF/PACF՝ նաև հենց մեր շարքի վրա, AR/MA/ARMA/ARIMA/SARIMA (և ինչու MA-ն նույնը չէ, ինչ rolling mean-ը), էքսպոնենցիալ հարթեցում (Holt-Winters), baseline-ներ և գնահատում՝ MASE-ը ձեռքով հաշված։ 🎞️ Սլայդեր · 📝 Նշումներով TBD · 📺 Տեսանյութ TBD
  • [31] Ժամանակային շարքեր — մեքենայական ուսուցման մոտեցում — կանխատեսումը որպես supervised learning, leakage և ժամանակ-գիտակ բաժանում, lag / rolling / օրացուցային ֆիչերներ, TimeSeriesSplit (gap, max_train_size), gradient boosting և տրենդի էքստրապոլյացիայի թակարդը, ազնիվ համեմատություն նույն հորիզոնի վրա, prediction interval-ներ ML-ի համար (conformal), M4/M5 և հիբրիդները, deep learning ու foundation մոդելներ։ 🎞️ Սլայդեր · 📝 Նշումներով TBD · 📺 Տեսանյութ TBD

📝 Թեմայի վերաբերյալ հարցաշար (Google Form): TBD


Սլայդերը հիմնված են Hyndman & Athanasopoulos, Forecasting: Principles and Practice (3rd ed.) բաց դասագրքի վրա, ինչպես նաև scikit-learn / statsmodels / Nixtla-ի փաստաթղթերի։ Foundation-մոդելների մասը՝ 2025–2026 թթ. աղբյուրներից (TimesFM, Chronos-2, Moirai-2, TimeGPT, Time-MoE)։

🏡 Տնային

Assignment — Build a leakage-safe forecaster 🧀🧀

Take a real seasonal series (suggested: a daily or monthly one you can download once — e.g. energy demand, retail sales, or a currency series). Forecast it end to end and respect the arrow of time at every step.

  1. EDA + decomposition. Plot the series. Run an STL decomposition and describe the trend and seasonality. Is it additive or multiplicative?
  2. Stationarity. Run the ADF test on the raw series and after 1st (and, if needed, seasonal) differencing. Report the p-values.
  3. Baselines first. Implement naive and seasonal-naive forecasts on a time-ordered holdout. These are the numbers everything else must beat.
  4. Classical model. Fit a SARIMA (or Holt-Winters) — use auto_arima / AutoARIMA if you like. Report a forecast with a prediction interval.
  5. ML model. Reframe the series as a supervised table: build lag, (shifted) rolling, and calendar features. Train a gradient-boosting regressor. Remember the extrapolation trap: if the series trends, predict the difference, not the level.
  6. Honest validation. Use TimeSeriesSplit for any tuning. Never shuffle=True. Fit every scaler/encoder on the training part only.
  7. Compare with MASE. Put all models on one table (MAE + MASE vs seasonal naive). Which wins on your series, and why? Tie the answer back to the “when ML vs classical wins” slide.

Additional

  • Try a foundation model (e.g. TimesFM or Chronos via its Python package) zero-shot, and compare it to your tuned baseline.
  • Produce a multi-step forecast (horizon > 1) both recursively and directly; discuss the error growth.

Գլխի նախագիծ — Հայաստանի էլեկտրաէներգիայի արտադրության կանխատեսում 🧀🧀

Վերևի առաջադրանքի ամբողջական worked walkthrough-ը՝ իրական տվյալների վրա։ Դուք ձեր շարքն եք ընտրում, իսկ այս notebook-ը ցույց է տալիս նույն յոթ քայլը սկզբից մինչև վերջ մեկ կոնկրետ շարքի վրա — ուստի սա օրինակ է, ոչ թե պատասխան։

Տվյալները․ ՀՀ վիճակագրական կոմիտեի ամսական շարքը (ArmStatBank, IC-ind-m-01.px, «35. Էլեկտրականություն, գազ, գոլորշի»), 2010-01 – 2026-06, 198 ամիս։ Ներբեռնվում է py_src/fetch_armstat_electricity.py-ով, այնպես որ ամեն բան վերարտադրելի է։

Հարցը․ ունենալով տվյալները մինչև 2024-ի դեկտեմբեր, կանխատեսել 2025-ի ամեն ամիսը (հորիզոնը՝ 12 ամիս)։

Երեք բան, որ արժե նշել․

  • Մոդելավորումից առաջ՝ աուդիտ։ 2011–2013-ին տարեկան աճը +43.8%, +28.7%, +18.3% է, հետո՝ միանիշ։ Էլեկտրաէներգիայի արտադրությունը մեկ տարում 44%-ով չի աճում — շարքը անվանական դրամով է, ուստի սա սակագնի կամ հաշվառման փոփոխություն է, ոչ թե պահանջարկ։ Կտրում ենք մինչև 2014-ը։ Ավելի շատ տվյալը ավելի լավ տվյալ չէ։
  • Baseline-ը հենց ինքը արդյունք է։ Seasonal naive-ը զրո պարամետրով տալիս է MASE 1.16։ Ամեն հաջորդ մոդել պետք է դա հաղթի։
  • Դիագնոստիկան վարկած է, ոչ թե դատավճիռ։ Notebook-ը երկու անգամ անում է նույն բանը՝ դիագնոստիկա, հետո ստուգում held-out տարվա վրա — և արդյունքները հակառակ են․ Part 2b-ի ստուգումը ճիշտ է կանխագուշակում multiplicative սեզոնայնությունը (հաստատվում է), իսկ Part 3-ի ADF/KPSS-ը խորհուրդ է տալիս d=0, և հենց այդ մոդելը վերջին տեղն է զբաղեցնում։ Եզրակացությունը «դիագնոստիկան անօգուտ է» չէ, այլ՝ ստուգելը արժե երկու տող կոդ, չստուգելը՝ notebook-ի ամենավատ մոդելը։

Հաղթում է ամենապարզ մոդելը՝ Holt-Winters (multiplicative), MASE 0.578 ընդդեմ baseline-ի 1.159-ի։ Այն ինքն է իր beta-ն և gamma-ն դնում 0.000 — այսինքն մնում է «դանդաղ շարժվող մակարդակ × ֆիքսված սեզոնային պրոֆիլ», մեկ ակտիվ պարամետրով։

Notebook-ը կատարվում է ամբողջությամբ ~45 վայրկյանում, CPU-ի վրա (104 cell, 13 գրաֆիկ, 0 սխալ)։

Լուծումը (ամբողջական walkthrough): 32_electricity_forecast_solution.ipynb (download) · view on GitHub

🎥 Practical walkthrough: TBD

Flag Counter