File size: 2,748 Bytes
810e63d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""
Central config β€” paths, constants, feature definitions.
"""
from pathlib import Path

# ── Paths ──────────────────────────────────────────────────────────────────
ROOT        = Path(__file__).resolve().parents[1]
DATA_RAW    = ROOT / "data" / "raw"
DATA_PROC   = ROOT / "data" / "processed"
MODELS_DIR  = ROOT / "models"
REPORTS_DIR = ROOT / "reports"
FIGURES_DIR = REPORTS_DIR / "figures"

TRAIN_PARQUET = DATA_PROC / "train.parquet"
TEST_PARQUET  = DATA_PROC / "test.parquet"

# ── Dataset ────────────────────────────────────────────────────────────────
# M5 competition (Walmart sales) loaded via datasetsforecast
# 42,840 series Γ— 1941 daily obs. We use a representative subset.
DATASET_NAME  = "m5"
# We cap the portfolio subset at N_SERIES series (100 per store Γ— 3 stores).
# Full M5 has 30,490 series β€” too large for a portfolio demo.
N_SERIES      = 300     # total series cap (evenly distributed across stores)
TARGET_COL    = "y"
DATE_COL      = "ds"
ID_COL        = "unique_id"

# ── Forecast horizon ───────────────────────────────────────────────────────
HORIZON       = 28      # 28-day ahead forecast (same as M5 competition)
FREQ          = "D"     # Daily

# ── Train / validation split ───────────────────────────────────────────────
# Keep last HORIZON days as validation set (walk-forward style)
VAL_SIZE      = HORIZON

# ── MLflow ─────────────────────────────────────────────────────────────────
MLFLOW_EXPERIMENT = "demand-forecasting"

# ── Random seed ────────────────────────────────────────────────────────────
RANDOM_SEED = 42

# ── Model save paths ───────────────────────────────────────────────────────
LGBM_MODEL_PATH    = MODELS_DIR / "lgbm_model.pkl"
CHRONOS_MODEL_NAME = "amazon/chronos-t5-small"  # ~250MB, good balance speed/accuracy
FORECAST_CACHE     = MODELS_DIR / "forecast_cache.parquet"
MODEL_META_PATH    = MODELS_DIR / "model_meta.json"