Framework Komprehensif untuk Forecasting Time Series menggunakan Moirai Universal Transformer, LSTM, dan ARIMA pada multi-domain datasets (Weather, Finance, Environmental).
Repository ini mengimplementasikan sistem forecasting lengkap dengan perbandingan fair antar berbagai metode state-of-the-art:
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]
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
# 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
# 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
python run_zeroshot_all.py
python run_fewshot_moe.py
# LSTM baseline
python baseline_lstm.py
# ARIMA baseline
python baseline_arima.py
Untuk perbandingan fair dengan konfigurasi seragam:
# Jalankan semua model (zeroshot, fewshot, lstm, arima) dengan config yang sama
python run_all_standardized.py
# Analisis dan visualisasi hasil semua model
python analysis_standardized_results.py
Output: Grafik perbandingan, ranking model, dan statistik di standardized_results/ dan standardized_comparison/
| Dataset | Domain | Frequency | Periode | Deskripsi | Pred_len | Context_len |
|---|---|---|---|---|---|---|
| Weather Melbourne | Climate | Daily | ~10 years | Daily minimum temperatures | 7 days | 120 days |
| AAPL Stock | Finance | Daily | 10+ years | Apple stock closing prices | 5 days | 120 days |
| CO2 Mauna Loa | Environmental | Monthly | ~67 years | Atmospheric CO2 concentration | 6 months | 120 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).
| File | Dibuat oleh | Digunakan oleh | Status |
|---|---|---|---|
*_full.csv | prepare_dataset.py | β Semua model | AKTIF |
*_train.csv | prepare_dataset.py | β Reference only | TIDAK DIGUNAKAN |
*_val.csv | prepare_dataset.py | β Reference only | TIDAK DIGUNAKAN |
*_test.csv | prepare_dataset.py | β Reference only | TIDAK DIGUNAKAN |
Zero-Shot Forecasting (Moirai v2):
run_zeroshot_all.pyFew-Shot Learning (Moirai-MoE):
run_fewshot_moe.pybaseline_lstm.pybaseline_arima.py| Metric | Formula | Deskripsi |
|---|---|---|
| MAE | mean(|y_true - y_pred|) | Mean Absolute Error |
| RMSE | sqrt(mean((y_true - y_pred)Β²)) | Root Mean Square Error |
| sMAPE | mean(|y_pred - y_true| / (|y_true| + |y_pred|)) * 100 | Symmetric MAPE (%) |
Note: Metrik dihitung dengan rolling window evaluation untuk fairness
Setiap model menghasilkan visualisasi hasil forecasting:
Output disimpan dalam folder results_<model_name>/ untuk setiap dataset.
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
}
}
Semua dependencies sudah terdaftar di requirements.txt. Install dengan:
pip install -r requirements.txt
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
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:
lookback / context_len diambil dari historical data sebelum setiap windowPer-Dataset Configuration (dari light_config.py):
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 modelstandardized_results/ranking_summary.csv - Ranking model per datasetstandardized_comparison/ - Grafik & visualisasi perbandingan# Install dependencies
pip install -r requirements.txt
# Persiapkan data
python prepare_dataset.py
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
# Generate comparison analysis
python analysis_standardized_results.py
# Output: standardized_results/ dan standardized_comparison/
| Script | Tujuan | Output |
|---|---|---|
prepare_dataset.py | Download & prepare 3 datasets | data/ |
run_zeroshot_all.py | Moirai v2 forecasting | results_zeroshot/ |
run_fewshot_moe.py | Moirai-MoE forecasting | results_fewshot_moe/ |
baseline_lstm.py | LSTM forecasting | results_baseline_lstm/ |
baseline_arima.py | ARIMA forecasting | results_baseline_arima/ |
run_all_standardized.py | Jalankan semua model | Semua results folders |
analysis_standardized_results.py | Analisis & banding hasil | standardized_results/ + standardized_comparison/ |
light_config.py | Centralized configuration | N/A |
Untuk perbandingan yang fair, run_all_standardized.py menjalankan semua model dengan:
light_config.py)Hasil comparison disimpan dengan struktur:
standardized_results/complete_comparison.csv - Metrics semua modelstandardized_results/ranking_summary.csv - Ranking berdasarkan MAEstandardized_comparison/ - Visualization plotsJika ingin berkontribusi:
git checkout -b feature/new-feature)git commit -m 'Add new feature')git push origin feature/new-feature)Project ini menggunakan framework uni2ts dari Salesforce Research. Lihat LICENSE.txt untuk detail lengkap.
Last Updated: January 2, 2026
Framework Komprehensif untuk Forecasting Time Series menggunakan Moirai Universal Transformer, LSTM, dan ARIMA pada multi-domain datasets (Weather, Finance, Environmental).
Repository ini mengimplementasikan sistem forecasting lengkap dengan perbandingan fair antar berbagai metode state-of-the-art:
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]
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
# 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
# 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
python run_zeroshot_all.py
python run_fewshot_moe.py
# LSTM baseline
python baseline_lstm.py
# ARIMA baseline
python baseline_arima.py
Untuk perbandingan fair dengan konfigurasi seragam:
# Jalankan semua model (zeroshot, fewshot, lstm, arima) dengan config yang sama
python run_all_standardized.py
# Analisis dan visualisasi hasil semua model
python analysis_standardized_results.py
Output: Grafik perbandingan, ranking model, dan statistik di standardized_results/ dan standardized_comparison/
| Dataset | Domain | Frequency | Periode | Deskripsi | Pred_len | Context_len |
|---|---|---|---|---|---|---|
| Weather Melbourne | Climate | Daily | ~10 years | Daily minimum temperatures | 7 days | 120 days |
| AAPL Stock | Finance | Daily | 10+ years | Apple stock closing prices | 5 days | 120 days |
| CO2 Mauna Loa | Environmental | Monthly | ~67 years | Atmospheric CO2 concentration | 6 months | 120 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).
| File | Dibuat oleh | Digunakan oleh | Status |
|---|---|---|---|
*_full.csv | prepare_dataset.py | β Semua model | AKTIF |
*_train.csv | prepare_dataset.py | β Reference only | TIDAK DIGUNAKAN |
*_val.csv | prepare_dataset.py | β Reference only | TIDAK DIGUNAKAN |
*_test.csv | prepare_dataset.py | β Reference only | TIDAK DIGUNAKAN |
Zero-Shot Forecasting (Moirai v2):
run_zeroshot_all.pyFew-Shot Learning (Moirai-MoE):
run_fewshot_moe.pybaseline_lstm.pybaseline_arima.py| Metric | Formula | Deskripsi |
|---|---|---|
| MAE | mean(|y_true - y_pred|) | Mean Absolute Error |
| RMSE | sqrt(mean((y_true - y_pred)Β²)) | Root Mean Square Error |
| sMAPE | mean(|y_pred - y_true| / (|y_true| + |y_pred|)) * 100 | Symmetric MAPE (%) |
Note: Metrik dihitung dengan rolling window evaluation untuk fairness
Setiap model menghasilkan visualisasi hasil forecasting:
Output disimpan dalam folder results_<model_name>/ untuk setiap dataset.
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
}
}
Semua dependencies sudah terdaftar di requirements.txt. Install dengan:
pip install -r requirements.txt
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
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:
lookback / context_len diambil dari historical data sebelum setiap windowPer-Dataset Configuration (dari light_config.py):
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 modelstandardized_results/ranking_summary.csv - Ranking model per datasetstandardized_comparison/ - Grafik & visualisasi perbandingan# Install dependencies
pip install -r requirements.txt
# Persiapkan data
python prepare_dataset.py
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
# Generate comparison analysis
python analysis_standardized_results.py
# Output: standardized_results/ dan standardized_comparison/
| Script | Tujuan | Output |
|---|---|---|
prepare_dataset.py | Download & prepare 3 datasets | data/ |
run_zeroshot_all.py | Moirai v2 forecasting | results_zeroshot/ |
run_fewshot_moe.py | Moirai-MoE forecasting | results_fewshot_moe/ |
baseline_lstm.py | LSTM forecasting | results_baseline_lstm/ |
baseline_arima.py | ARIMA forecasting | results_baseline_arima/ |
run_all_standardized.py | Jalankan semua model | Semua results folders |
analysis_standardized_results.py | Analisis & banding hasil | standardized_results/ + standardized_comparison/ |
light_config.py | Centralized configuration | N/A |
Untuk perbandingan yang fair, run_all_standardized.py menjalankan semua model dengan:
light_config.py)Hasil comparison disimpan dengan struktur:
standardized_results/complete_comparison.csv - Metrics semua modelstandardized_results/ranking_summary.csv - Ranking berdasarkan MAEstandardized_comparison/ - Visualization plotsJika ingin berkontribusi:
git checkout -b feature/new-feature)git commit -m 'Add new feature')git push origin feature/new-feature)Project ini menggunakan framework uni2ts dari Salesforce Research. Lihat LICENSE.txt untuk detail lengkap.
Last Updated: January 2, 2026