luckedenn/Moirai_forecasting

Python

0

18 commits

updated Jan 2, 2026

See the code

README

πŸš€ Time Series Forecasting dengan Moirai, LSTM, dan ARIMA

Framework Model

Framework Komprehensif untuk Forecasting Time Series menggunakan Moirai Universal Transformer, LSTM, dan ARIMA pada multi-domain datasets (Weather, Finance, Environmental).

πŸ“Š Overview

Repository ini mengimplementasikan sistem forecasting lengkap dengan perbandingan fair antar berbagai metode state-of-the-art:

  • 🎯 Zero-Shot Forecasting: Moirai v2 - prediksi tanpa training
  • πŸŽͺ Few-Shot Forecasting: Moirai-MoE - adaptasi model dengan data minimal (6 examples)
  • πŸ€– Deep Learning Baseline: LSTM multi-layer dengan autoregressive forecasting
  • πŸ“ˆ Statistical Baseline: ARIMA dengan automatic parameter selection
  • πŸ“Š Standardized Evaluation: Perbandingan fair dengan konfigurasi seragam untuk semua model

πŸ—οΈ Architecture

graph LR
    A[Raw Data] --> B[Preprocessing]
    B --> C{Model Selection}
    C -->|Zero-Shot| D[Moirai v2]
    C -->|Few-Shot| E[Moirai-MoE]
    C -->|Deep Learning| F[LSTM Baseline]
    C -->|Statistical| G[ARIMA Baseline]
    D --> H[Standardized Evaluation]
    E --> H
    F --> H
    G --> H
    H --> I[Comparison & Analysis]

πŸ“ Project Structure

forecast/
β”œβ”€β”€ πŸ“Š data/                              # Datasets
β”‚   β”œβ”€β”€ weather_melbourne/                # Daily temperature (10 years)
β”‚   β”œβ”€β”€ finance_aapl/                    # AAPL stock prices (10+ years)
β”‚   └── co2_maunaloa_monthly/             # CO2 concentration (67 years)
β”œβ”€β”€ 🎯 Model Scripts/
β”‚   β”œβ”€β”€ run_zeroshot_all.py              # Zero-shot Moirai v2
β”‚   └── run_fewshot_moe.py               # Few-shot Moirai-MoE
β”œβ”€β”€ πŸ“ˆ Baseline Scripts/
β”‚   β”œβ”€β”€ baseline_lstm.py                 # LSTM implementation
β”‚   └── baseline_arima.py                # ARIMA implementation
β”œβ”€β”€ πŸ“Š Analysis & Comparison/
β”‚   β”œβ”€β”€ run_all_standardized.py          # Jalankan semua model dengan config seragam
β”‚   └── analysis_standardized_results.py # Analisis & visualisasi hasil perbandingan
β”œβ”€β”€ πŸ”§ Configuration/
β”‚   └── light_config.py                  # Config standardized untuk semua dataset
β”œβ”€β”€ πŸ› οΈ Utilities/
β”‚   └── prepare_dataset.py               # Download & prepare datasets
β”œβ”€β”€ πŸ“‹ Results/
β”‚   β”œβ”€β”€ results_zeroshot/                # Hasil Moirai v2
β”‚   β”œβ”€β”€ results_fewshot_moe/             # Hasil Moirai-MoE
β”‚   β”œβ”€β”€ results_baseline_lstm/           # Hasil LSTM
β”‚   β”œβ”€β”€ results_baseline_arima/          # Hasil ARIMA
β”‚   └── standardized_results/            # Hasil perbandingan standardized
└── πŸ“š uni2ts/                           # Moirai model framework

πŸš€ Quick Start

1) Instalasi (Windows PowerShell)

# Clone repository
cd C:\Skripsi\forecast

# Buat virtual environment dan aktifkan
python -m venv venv
.\venv\Scripts\Activate.ps1

# Install dependencies
pip install -r requirements.txt

# (Opsional) Install uni2ts dari folder lokal jika belum
pip install -e ./uni2ts

2) Persiapan Data

# Download dan persiapkan datasets (weather_melbourne, finance_aapl, co2_maunaloa_monthly)
python prepare_dataset.py

Output: data/ folder berisi full/train/val/test splits untuk setiap dataset

3) Menjalankan Model Individual

Zero-Shot Forecasting (Moirai v2)

python run_zeroshot_all.py

Few-Shot Forecasting (Moirai-MoE)

python run_fewshot_moe.py

Baseline Methods

# LSTM baseline
python baseline_lstm.py

# ARIMA baseline
python baseline_arima.py

4) Menjalankan Semua Model dengan Konfigurasi Standardized

Untuk perbandingan fair dengan konfigurasi seragam:

# Jalankan semua model (zeroshot, fewshot, lstm, arima) dengan config yang sama
python run_all_standardized.py

5) Analisis Hasil Perbandingan

# Analisis dan visualisasi hasil semua model
python analysis_standardized_results.py

Output: Grafik perbandingan, ranking model, dan statistik di standardized_results/ dan standardized_comparison/

πŸ“Š Datasets

DatasetDomainFrequencyPeriodeDeskripsiPred_lenContext_len
Weather MelbourneClimateDaily~10 yearsDaily minimum temperatures7 days120 days
AAPL StockFinanceDaily10+ yearsApple stock closing prices5 days120 days
CO2 Mauna LoaEnvironmentalMonthly~67 yearsAtmospheric CO2 concentration6 months120 months

Note: Semua datasets disimpan dalam 4 file (full/train/val/test) dengan split ratio 70/15/15, namun model hanya menggunakan *_full.csv dan melakukan split internal (85% training : 15% testing).

Dataset Files vs Model Usage

FileDibuat olehDigunakan olehStatus
*_full.csvprepare_dataset.pyβœ… Semua modelAKTIF
*_train.csvprepare_dataset.py❌ Reference onlyTIDAK DIGUNAKAN
*_val.csvprepare_dataset.py❌ Reference onlyTIDAK DIGUNAKAN
*_test.csvprepare_dataset.py❌ Reference onlyTIDAK DIGUNAKAN

🎯 Models & Methods

🌟 Moirai Universal Transformer

Zero-Shot Forecasting (Moirai v2):

  • Pre-trained pada 100K+ time series dari berbagai domain
  • Universal architecture yang bisa langsung inference tanpa training
  • File: run_zeroshot_all.py

Few-Shot Learning (Moirai-MoE):

  • Mixture of Experts variant untuk domain-specific adaptation
  • Training dengan minimal examples (n_shots=6)
  • File: run_fewshot_moe.py

πŸ€– Deep Learning Baseline (LSTM)

  • Architecture: Multi-layer LSTM (1 layer, hidden_size=32)
  • Training: Supervised learning pada historical data
  • Features: Sequence-to-sequence autoregressive forecasting
  • Epochs: 10, Batch size: 64
  • File: baseline_lstm.py

πŸ“ˆ Statistical Baseline (ARIMA)

  • Method: Auto-ARIMA dengan automatic parameter selection
  • Seasonality: Adaptive seasonal detection
  • Optimization: Fast mode dengan reduced search space (max_windows=6)
  • File: baseline_arima.py

πŸ“‹ Evaluation Metrics

MetricFormulaDeskripsi
MAEmean(|y_true - y_pred|)Mean Absolute Error
RMSEsqrt(mean((y_true - y_pred)Β²))Root Mean Square Error
sMAPEmean(|y_pred - y_true| / (|y_true| + |y_pred|)) * 100Symmetric MAPE (%)

Note: Metrik dihitung dengan rolling window evaluation untuk fairness

🎨 Visualization

Setiap model menghasilkan visualisasi hasil forecasting:

  • πŸ“ˆ Time Series Plots: Ground truth vs predictions untuk setiap window
  • πŸ“Š Metrics Summary: CSV files dengan MAE, RMSE, sMAPE per dataset
  • πŸ“‹ JSON Metrics: Detailed metrics untuk setiap hasil forecasting
  • 🎯 Best Windows: Identifikasi window dengan error terkecil

Output disimpan dalam folder results_<model_name>/ untuk setiap dataset.

πŸ”§ Configuration

Hyperparameters per Dataset (dari light_config.py)

STANDARD_CONFIG = {
    "weather_melbourne": {
        "csv": "data/weather_melbourne/weather_melbourne_full.csv",
        "pred_len": 7,              # Forecast 7 hari ke depan
        "context_len": 120,         # Gunakan 120 hari history
        "freq": "D",                # Daily frequency
        "lookback": 120,            # LSTM context window
        "n_shots": 6,               # Few-shot examples
        "max_windows": 6            # Max rolling windows
    },

    "finance_aapl": {
        "csv": "data/finance_aapl/finance_aapl_full.csv",
        "pred_len": 5,              # Forecast 5 hari ke depan
        "context_len": 120,
        "freq": "D",
        "lookback": 120,
        "n_shots": 6,
        "max_windows": 6
    },

    "co2_maunaloa_monthly": {
        "csv": "data/co2_maunaloa_monthly/co2_maunaloa_monthly_full.csv",
        "pred_len": 6,              # Forecast 6 bulan ke depan
        "context_len": 120,
        "freq": "M",                # Monthly frequency
        "lookback": 120,
        "n_shots": 6,
        "max_windows": 6
    },
}

LIGHT_TRAINING_CONFIG = {
    "lstm": {
        "epochs": 10,
        "batch_size": 64,
        "hidden_size": 32,
        "num_layers": 1,
        "learning_rate": 0.001
    },
    "arima": {
        "max_windows": 6,           # Batasi untuk kecepatan
        "max_p": 3,
        "max_q": 3,
        "seasonal": True
    }
}

πŸ“š Dependencies

Semua dependencies sudah terdaftar di requirements.txt. Install dengan:

pip install -r requirements.txt

Core Requirements

  • torch >= 1.12.0 - Deep learning framework
  • pandas >= 1.5.0 - Data manipulation
  • numpy >= 1.21.0 - Numerical computing
  • matplotlib >= 3.5.0 - Visualization
  • gluonts >= 0.13.0 - Time series framework

Model-Specific

  • transformers >= 4.20.0 - Transformer models
  • huggingface-hub >= 0.10.0 - Hugging Face integration
  • pmdarima >= 2.0.0 - ARIMA implementation
  • scikit-learn >= 1.1.0 - Preprocessing & scaling
  • seaborn >= 0.11.0 - Statistical visualization
  • plotly >= 5.10.0 - Interactive plots

πŸ”„ Data Processing Pipeline

Phase 1: Dataset Preparation (prepare_dataset.py)

graph TD
    A["Raw Data"] --> B["Download & Parse"]
    B --> C["Standardize Columns"]
    C --> D["Remove NaN/Duplicates"]
    D --> E["Sort by Timestamp"]
    E --> F["Time-based Split"]
    F --> G["Save 4 Files"]
    G --> G1["*_full.csv 100%"]
    G --> G2["*_train.csv 70%"]
    G --> G3["*_val.csv 15%"]
    G --> G4["*_test.csv 15%"]

Output: 4 CSV files per dataset

  • *_full.csv - Complete dataset
  • *_train.csv - 70% for reference
  • *_val.csv - 15% for reference
  • *_test.csv - 15% for reference

⚠️ Note: *_train.csv, *_val.csv, *_test.csv are created for reference but NOT used by models

Phase 2: Model Processing (Internal Split)

Semua model membaca *_full.csv dan melakukan split internal:

graph TD
    A["*_full.csv"] --> B["Parse & Preprocess"]
    B --> C["Calculate Test Length"]
    C --> D["Internal Split"]
    D --> D1["85% Training Data"]
    D --> D2["15% Test Data<br/>for Rolling Windows"]
    D1 --> E{Model Type}
    D2 --> E
    E -->|Moirai| F["PandasDataset<br/>No Scaling"]
    E -->|LSTM| G["MinMax Scaling<br/>fit on train only"]
    E -->|ARIMA| H["Raw Series<br/>No Scaling"]
    F --> I["Rolling Window<br/>Evaluation"]
    G --> I
    H --> I
    I --> J["Generate Metrics<br/>per Window"]

Key Details:

  • Training split: 85% dari total data (digunakan untuk training)
  • Test split: 15% dari total data (untuk rolling window evaluation)
  • Context length: lookback / context_len diambil dari historical data sebelum setiap window
  • Scaling: Hanya fit pada training data (tidak leak test data)
  • Rolling windows: Multiple forecast windows untuk robust evaluation

Per-Dataset Configuration (dari light_config.py):

  • Weather Melbourne: 7-day forecast, 120-day context, max 6 windows
  • AAPL Stock: 5-day forecast, 120-day context, max 6 windows
  • CO2 Mauna Loa: 6-month forecast, 120-month context, max 6 windows

πŸ“ˆ Results Output

Setiap model menghasilkan hasil dalam folder results_<model_name>/:

results_<model_name>/
β”œβ”€β”€ summary_<model>.csv              # Summary metrics per dataset
└── <dataset_name>/
    β”œβ”€β”€ <dataset>_<model>_metrics.json    # Detailed metrics
    └── <dataset>_<model>_forecasts.csv   # Predictions

Standardized Comparison (hasil dari run_all_standardized.py):

  • standardized_results/complete_comparison.csv - Perbandingan semua model
  • standardized_results/ranking_summary.csv - Ranking model per dataset
  • standardized_comparison/ - Grafik & visualisasi perbandingan

πŸ“ Workflow Eksperimen

1️⃣ Setup Awal

# Install dependencies
pip install -r requirements.txt

# Persiapkan data
python prepare_dataset.py

2️⃣ Jalankan Model Individual (Opsional)

python run_zeroshot_all.py      # ~30 menit
python run_fewshot_moe.py       # ~40 menit
python baseline_lstm.py          # ~20 menit
python baseline_arima.py         # ~15 menit
# Jalankan semua model dengan config yang sama
python run_all_standardized.py

4️⃣ Analisis Hasil

# Generate comparison analysis
python analysis_standardized_results.py

# Output: standardized_results/ dan standardized_comparison/

🎯 File Mapping

ScriptTujuanOutput
prepare_dataset.pyDownload & prepare 3 datasetsdata/
run_zeroshot_all.pyMoirai v2 forecastingresults_zeroshot/
run_fewshot_moe.pyMoirai-MoE forecastingresults_fewshot_moe/
baseline_lstm.pyLSTM forecastingresults_baseline_lstm/
baseline_arima.pyARIMA forecastingresults_baseline_arima/
run_all_standardized.pyJalankan semua modelSemua results folders
analysis_standardized_results.pyAnalisis & banding hasilstandardized_results/ + standardized_comparison/
light_config.pyCentralized configurationN/A

πŸ† Standardized Evaluation

Untuk perbandingan yang fair, run_all_standardized.py menjalankan semua model dengan:

  • Konfigurasi identical untuk setiap dataset (dari light_config.py)
  • Prediction length yang sama untuk forecasting
  • Context length yang sama untuk historical data
  • Rolling window evaluation dengan jumlah windows yang sama

Hasil comparison disimpan dengan struktur:

  • standardized_results/complete_comparison.csv - Metrics semua model
  • standardized_results/ranking_summary.csv - Ranking berdasarkan MAE
  • standardized_comparison/ - Visualization plots

🀝 Contributing

Jika ingin berkontribusi:

  1. Buat feature branch (git checkout -b feature/new-feature)
  2. Commit changes (git commit -m 'Add new feature')
  3. Push to branch (git push origin feature/new-feature)
  4. Buka Pull Request

πŸ“„ License

Project ini menggunakan framework uni2ts dari Salesforce Research. Lihat LICENSE.txt untuk detail lengkap.

πŸ™ Acknowledgments


Last Updated: January 2, 2026

luckedenn/Moirai_forecasting

Python

0

18 commits

updated Jan 2, 2026

See the code

README

πŸš€ Time Series Forecasting dengan Moirai, LSTM, dan ARIMA

Framework Model

Framework Komprehensif untuk Forecasting Time Series menggunakan Moirai Universal Transformer, LSTM, dan ARIMA pada multi-domain datasets (Weather, Finance, Environmental).

πŸ“Š Overview

Repository ini mengimplementasikan sistem forecasting lengkap dengan perbandingan fair antar berbagai metode state-of-the-art:

  • 🎯 Zero-Shot Forecasting: Moirai v2 - prediksi tanpa training
  • πŸŽͺ Few-Shot Forecasting: Moirai-MoE - adaptasi model dengan data minimal (6 examples)
  • πŸ€– Deep Learning Baseline: LSTM multi-layer dengan autoregressive forecasting
  • πŸ“ˆ Statistical Baseline: ARIMA dengan automatic parameter selection
  • πŸ“Š Standardized Evaluation: Perbandingan fair dengan konfigurasi seragam untuk semua model

πŸ—οΈ Architecture

graph LR
    A[Raw Data] --> B[Preprocessing]
    B --> C{Model Selection}
    C -->|Zero-Shot| D[Moirai v2]
    C -->|Few-Shot| E[Moirai-MoE]
    C -->|Deep Learning| F[LSTM Baseline]
    C -->|Statistical| G[ARIMA Baseline]
    D --> H[Standardized Evaluation]
    E --> H
    F --> H
    G --> H
    H --> I[Comparison & Analysis]

πŸ“ Project Structure

forecast/
β”œβ”€β”€ πŸ“Š data/                              # Datasets
β”‚   β”œβ”€β”€ weather_melbourne/                # Daily temperature (10 years)
β”‚   β”œβ”€β”€ finance_aapl/                    # AAPL stock prices (10+ years)
β”‚   └── co2_maunaloa_monthly/             # CO2 concentration (67 years)
β”œβ”€β”€ 🎯 Model Scripts/
β”‚   β”œβ”€β”€ run_zeroshot_all.py              # Zero-shot Moirai v2
β”‚   └── run_fewshot_moe.py               # Few-shot Moirai-MoE
β”œβ”€β”€ πŸ“ˆ Baseline Scripts/
β”‚   β”œβ”€β”€ baseline_lstm.py                 # LSTM implementation
β”‚   └── baseline_arima.py                # ARIMA implementation
β”œβ”€β”€ πŸ“Š Analysis & Comparison/
β”‚   β”œβ”€β”€ run_all_standardized.py          # Jalankan semua model dengan config seragam
β”‚   └── analysis_standardized_results.py # Analisis & visualisasi hasil perbandingan
β”œβ”€β”€ πŸ”§ Configuration/
β”‚   └── light_config.py                  # Config standardized untuk semua dataset
β”œβ”€β”€ πŸ› οΈ Utilities/
β”‚   └── prepare_dataset.py               # Download & prepare datasets
β”œβ”€β”€ πŸ“‹ Results/
β”‚   β”œβ”€β”€ results_zeroshot/                # Hasil Moirai v2
β”‚   β”œβ”€β”€ results_fewshot_moe/             # Hasil Moirai-MoE
β”‚   β”œβ”€β”€ results_baseline_lstm/           # Hasil LSTM
β”‚   β”œβ”€β”€ results_baseline_arima/          # Hasil ARIMA
β”‚   └── standardized_results/            # Hasil perbandingan standardized
└── πŸ“š uni2ts/                           # Moirai model framework

πŸš€ Quick Start

1) Instalasi (Windows PowerShell)

# Clone repository
cd C:\Skripsi\forecast

# Buat virtual environment dan aktifkan
python -m venv venv
.\venv\Scripts\Activate.ps1

# Install dependencies
pip install -r requirements.txt

# (Opsional) Install uni2ts dari folder lokal jika belum
pip install -e ./uni2ts

2) Persiapan Data

# Download dan persiapkan datasets (weather_melbourne, finance_aapl, co2_maunaloa_monthly)
python prepare_dataset.py

Output: data/ folder berisi full/train/val/test splits untuk setiap dataset

3) Menjalankan Model Individual

Zero-Shot Forecasting (Moirai v2)

python run_zeroshot_all.py

Few-Shot Forecasting (Moirai-MoE)

python run_fewshot_moe.py

Baseline Methods

# LSTM baseline
python baseline_lstm.py

# ARIMA baseline
python baseline_arima.py

4) Menjalankan Semua Model dengan Konfigurasi Standardized

Untuk perbandingan fair dengan konfigurasi seragam:

# Jalankan semua model (zeroshot, fewshot, lstm, arima) dengan config yang sama
python run_all_standardized.py

5) Analisis Hasil Perbandingan

# Analisis dan visualisasi hasil semua model
python analysis_standardized_results.py

Output: Grafik perbandingan, ranking model, dan statistik di standardized_results/ dan standardized_comparison/

πŸ“Š Datasets

DatasetDomainFrequencyPeriodeDeskripsiPred_lenContext_len
Weather MelbourneClimateDaily~10 yearsDaily minimum temperatures7 days120 days
AAPL StockFinanceDaily10+ yearsApple stock closing prices5 days120 days
CO2 Mauna LoaEnvironmentalMonthly~67 yearsAtmospheric CO2 concentration6 months120 months

Note: Semua datasets disimpan dalam 4 file (full/train/val/test) dengan split ratio 70/15/15, namun model hanya menggunakan *_full.csv dan melakukan split internal (85% training : 15% testing).

Dataset Files vs Model Usage

FileDibuat olehDigunakan olehStatus
*_full.csvprepare_dataset.pyβœ… Semua modelAKTIF
*_train.csvprepare_dataset.py❌ Reference onlyTIDAK DIGUNAKAN
*_val.csvprepare_dataset.py❌ Reference onlyTIDAK DIGUNAKAN
*_test.csvprepare_dataset.py❌ Reference onlyTIDAK DIGUNAKAN

🎯 Models & Methods

🌟 Moirai Universal Transformer

Zero-Shot Forecasting (Moirai v2):

  • Pre-trained pada 100K+ time series dari berbagai domain
  • Universal architecture yang bisa langsung inference tanpa training
  • File: run_zeroshot_all.py

Few-Shot Learning (Moirai-MoE):

  • Mixture of Experts variant untuk domain-specific adaptation
  • Training dengan minimal examples (n_shots=6)
  • File: run_fewshot_moe.py

πŸ€– Deep Learning Baseline (LSTM)

  • Architecture: Multi-layer LSTM (1 layer, hidden_size=32)
  • Training: Supervised learning pada historical data
  • Features: Sequence-to-sequence autoregressive forecasting
  • Epochs: 10, Batch size: 64
  • File: baseline_lstm.py

πŸ“ˆ Statistical Baseline (ARIMA)

  • Method: Auto-ARIMA dengan automatic parameter selection
  • Seasonality: Adaptive seasonal detection
  • Optimization: Fast mode dengan reduced search space (max_windows=6)
  • File: baseline_arima.py

πŸ“‹ Evaluation Metrics

MetricFormulaDeskripsi
MAEmean(|y_true - y_pred|)Mean Absolute Error
RMSEsqrt(mean((y_true - y_pred)Β²))Root Mean Square Error
sMAPEmean(|y_pred - y_true| / (|y_true| + |y_pred|)) * 100Symmetric MAPE (%)

Note: Metrik dihitung dengan rolling window evaluation untuk fairness

🎨 Visualization

Setiap model menghasilkan visualisasi hasil forecasting:

  • πŸ“ˆ Time Series Plots: Ground truth vs predictions untuk setiap window
  • πŸ“Š Metrics Summary: CSV files dengan MAE, RMSE, sMAPE per dataset
  • πŸ“‹ JSON Metrics: Detailed metrics untuk setiap hasil forecasting
  • 🎯 Best Windows: Identifikasi window dengan error terkecil

Output disimpan dalam folder results_<model_name>/ untuk setiap dataset.

πŸ”§ Configuration

Hyperparameters per Dataset (dari light_config.py)

STANDARD_CONFIG = {
    "weather_melbourne": {
        "csv": "data/weather_melbourne/weather_melbourne_full.csv",
        "pred_len": 7,              # Forecast 7 hari ke depan
        "context_len": 120,         # Gunakan 120 hari history
        "freq": "D",                # Daily frequency
        "lookback": 120,            # LSTM context window
        "n_shots": 6,               # Few-shot examples
        "max_windows": 6            # Max rolling windows
    },

    "finance_aapl": {
        "csv": "data/finance_aapl/finance_aapl_full.csv",
        "pred_len": 5,              # Forecast 5 hari ke depan
        "context_len": 120,
        "freq": "D",
        "lookback": 120,
        "n_shots": 6,
        "max_windows": 6
    },

    "co2_maunaloa_monthly": {
        "csv": "data/co2_maunaloa_monthly/co2_maunaloa_monthly_full.csv",
        "pred_len": 6,              # Forecast 6 bulan ke depan
        "context_len": 120,
        "freq": "M",                # Monthly frequency
        "lookback": 120,
        "n_shots": 6,
        "max_windows": 6
    },
}

LIGHT_TRAINING_CONFIG = {
    "lstm": {
        "epochs": 10,
        "batch_size": 64,
        "hidden_size": 32,
        "num_layers": 1,
        "learning_rate": 0.001
    },
    "arima": {
        "max_windows": 6,           # Batasi untuk kecepatan
        "max_p": 3,
        "max_q": 3,
        "seasonal": True
    }
}

πŸ“š Dependencies

Semua dependencies sudah terdaftar di requirements.txt. Install dengan:

pip install -r requirements.txt

Core Requirements

  • torch >= 1.12.0 - Deep learning framework
  • pandas >= 1.5.0 - Data manipulation
  • numpy >= 1.21.0 - Numerical computing
  • matplotlib >= 3.5.0 - Visualization
  • gluonts >= 0.13.0 - Time series framework

Model-Specific

  • transformers >= 4.20.0 - Transformer models
  • huggingface-hub >= 0.10.0 - Hugging Face integration
  • pmdarima >= 2.0.0 - ARIMA implementation
  • scikit-learn >= 1.1.0 - Preprocessing & scaling
  • seaborn >= 0.11.0 - Statistical visualization
  • plotly >= 5.10.0 - Interactive plots

πŸ”„ Data Processing Pipeline

Phase 1: Dataset Preparation (prepare_dataset.py)

graph TD
    A["Raw Data"] --> B["Download & Parse"]
    B --> C["Standardize Columns"]
    C --> D["Remove NaN/Duplicates"]
    D --> E["Sort by Timestamp"]
    E --> F["Time-based Split"]
    F --> G["Save 4 Files"]
    G --> G1["*_full.csv 100%"]
    G --> G2["*_train.csv 70%"]
    G --> G3["*_val.csv 15%"]
    G --> G4["*_test.csv 15%"]

Output: 4 CSV files per dataset

  • *_full.csv - Complete dataset
  • *_train.csv - 70% for reference
  • *_val.csv - 15% for reference
  • *_test.csv - 15% for reference

⚠️ Note: *_train.csv, *_val.csv, *_test.csv are created for reference but NOT used by models

Phase 2: Model Processing (Internal Split)

Semua model membaca *_full.csv dan melakukan split internal:

graph TD
    A["*_full.csv"] --> B["Parse & Preprocess"]
    B --> C["Calculate Test Length"]
    C --> D["Internal Split"]
    D --> D1["85% Training Data"]
    D --> D2["15% Test Data<br/>for Rolling Windows"]
    D1 --> E{Model Type}
    D2 --> E
    E -->|Moirai| F["PandasDataset<br/>No Scaling"]
    E -->|LSTM| G["MinMax Scaling<br/>fit on train only"]
    E -->|ARIMA| H["Raw Series<br/>No Scaling"]
    F --> I["Rolling Window<br/>Evaluation"]
    G --> I
    H --> I
    I --> J["Generate Metrics<br/>per Window"]

Key Details:

  • Training split: 85% dari total data (digunakan untuk training)
  • Test split: 15% dari total data (untuk rolling window evaluation)
  • Context length: lookback / context_len diambil dari historical data sebelum setiap window
  • Scaling: Hanya fit pada training data (tidak leak test data)
  • Rolling windows: Multiple forecast windows untuk robust evaluation

Per-Dataset Configuration (dari light_config.py):

  • Weather Melbourne: 7-day forecast, 120-day context, max 6 windows
  • AAPL Stock: 5-day forecast, 120-day context, max 6 windows
  • CO2 Mauna Loa: 6-month forecast, 120-month context, max 6 windows

πŸ“ˆ Results Output

Setiap model menghasilkan hasil dalam folder results_<model_name>/:

results_<model_name>/
β”œβ”€β”€ summary_<model>.csv              # Summary metrics per dataset
└── <dataset_name>/
    β”œβ”€β”€ <dataset>_<model>_metrics.json    # Detailed metrics
    └── <dataset>_<model>_forecasts.csv   # Predictions

Standardized Comparison (hasil dari run_all_standardized.py):

  • standardized_results/complete_comparison.csv - Perbandingan semua model
  • standardized_results/ranking_summary.csv - Ranking model per dataset
  • standardized_comparison/ - Grafik & visualisasi perbandingan

πŸ“ Workflow Eksperimen

1️⃣ Setup Awal

# Install dependencies
pip install -r requirements.txt

# Persiapkan data
python prepare_dataset.py

2️⃣ Jalankan Model Individual (Opsional)

python run_zeroshot_all.py      # ~30 menit
python run_fewshot_moe.py       # ~40 menit
python baseline_lstm.py          # ~20 menit
python baseline_arima.py         # ~15 menit
# Jalankan semua model dengan config yang sama
python run_all_standardized.py

4️⃣ Analisis Hasil

# Generate comparison analysis
python analysis_standardized_results.py

# Output: standardized_results/ dan standardized_comparison/

🎯 File Mapping

ScriptTujuanOutput
prepare_dataset.pyDownload & prepare 3 datasetsdata/
run_zeroshot_all.pyMoirai v2 forecastingresults_zeroshot/
run_fewshot_moe.pyMoirai-MoE forecastingresults_fewshot_moe/
baseline_lstm.pyLSTM forecastingresults_baseline_lstm/
baseline_arima.pyARIMA forecastingresults_baseline_arima/
run_all_standardized.pyJalankan semua modelSemua results folders
analysis_standardized_results.pyAnalisis & banding hasilstandardized_results/ + standardized_comparison/
light_config.pyCentralized configurationN/A

πŸ† Standardized Evaluation

Untuk perbandingan yang fair, run_all_standardized.py menjalankan semua model dengan:

  • Konfigurasi identical untuk setiap dataset (dari light_config.py)
  • Prediction length yang sama untuk forecasting
  • Context length yang sama untuk historical data
  • Rolling window evaluation dengan jumlah windows yang sama

Hasil comparison disimpan dengan struktur:

  • standardized_results/complete_comparison.csv - Metrics semua model
  • standardized_results/ranking_summary.csv - Ranking berdasarkan MAE
  • standardized_comparison/ - Visualization plots

🀝 Contributing

Jika ingin berkontribusi:

  1. Buat feature branch (git checkout -b feature/new-feature)
  2. Commit changes (git commit -m 'Add new feature')
  3. Push to branch (git push origin feature/new-feature)
  4. Buka Pull Request

πŸ“„ License

Project ini menggunakan framework uni2ts dari Salesforce Research. Lihat LICENSE.txt untuk detail lengkap.

πŸ™ Acknowledgments


Last Updated: January 2, 2026