YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

XGBoost Weekly Demand Forecasting Model

Hugging Face

Overview

Model ini dikembangkan untuk meramalkan permintaan produk mingguan menggunakan algoritma XGBoost dengan fitur yang ditingkatkan. Model ini menggunakan pendekatan time series forecasting dengan validasi yang tepat menggunakan TimeSeriesSplit untuk mencegah kebocoran data masa depan.

Performa Model

Model menunjukkan performa yang sangat baik dengan metrik sebagai berikut:

  • R² Score: 0.9677
  • RMSE: 15.06
  • MAE: 1.33
  • MAPE: 1.4%

Performa per Segmen

Model memberikan hasil yang konsisten di semua segmen permintaan:

Segmen Permintaan MAPE
Rendah (≤25%) 0.6%
Sedang (25-75%) 1.4%
Tinggi (>75%) 2.3%

Visualisasi Utama

Aktual vs Prediksi

image/png

image/png

Analisis Residual

image/png

Distribusi Error

image/png

Peningkatan yang Diimplementasikan

  1. Feature Engineering Lanjutan

    • Fitur lag (1, 2, 3, 4 minggu)
    • Fitur rolling window (mean, std, max dengan jendela 2, 4, 8 minggu)
    • Fitur tren (2 minggu, 4 minggu)
    • Fitur musiman (sin/cos transformasi bulan dan minggu)
    • Fitur interaksi (harga, kategori, hari libur)
    • Fitur relatif (permintaan vs rata-rata, harga vs kategori)
    • Fitur level permintaan (permintaan nol, permintaan rendah)
  2. Transformasi Target

    • Transformasi log1p untuk menangani distribusi permintaan yang miring
  3. Optimasi Hyperparameter

    • Parameter terbaik dari RandomizedSearchCV:
      • n_estimators: 300
      • max_depth: 7
      • learning_rate: 0.12
      • subsample: 1.0
      • colsample_bytree: 1.0
      • reg_alpha: 0.1
      • reg_lambda: 1.0
  4. Validasi Time Series

    • Menggunakan TimeSeriesSplit untuk validasi yang sadar waktu
    • 3 pembagian waktu untuk validasi yang kuat

Fitur yang Digunakan

Total 37 fitur digunakan dalam model, termasuk 11 fitur dasar dan 26 fitur lanjutan:

base_features = [
    'Year', 'Month', 'Quarter', 'WeekNumber', 'IsHoliday',
    'UnitPrice', 'ProductCategory_encoded',
    'TotalDemand', 'AvgDemand', 'TotalRevenue', 'UniqueCustomers'
]

lag_features = ['Demand_lag_1', 'Demand_lag_2', 'Demand_lag_3', 'Demand_lag_4']
rolling_features = ['Demand_rolling_mean_2', 'Demand_rolling_mean_4', ...]
trend_features = ['Demand_trend_2w', 'Demand_trend_4w']
seasonal_features = ['Month_sin', 'Month_cos', 'Week_sin', 'Week_cos']
interaction_features = ['Price_Category_Interaction', 'Holiday_Category_Interaction', 'Price_Holiday_Interaction']
relative_features = ['Demand_vs_AvgDemand', 'Price_vs_Category_Mean']
demand_level_features = ['Is_Zero_Demand', 'Is_Low_Demand']

Informasi Dataset

  • Training: 70,954 sampel
  • Validasi: 15,204 sampel
  • Testing: 15,205 sampel
  • Periode Training: 2010-W48 sampai 2011-W49
  • Periode Testing: 2010-W48 sampai 2011-W49

Penggunaan Model

Loading Model

import joblib
import json

# Load model
model_path = 'models/xgboost_weekly_demand_hf'
model = joblib.load(f'{model_path}/xgboost_model.joblib')

# Load feature names
with open(f'{model_path}/feature_names.json', 'r') as f:
    feature_names = json.load(f)
    
# Load model metadata
with open(f'{model_path}/model_metadata.json', 'r') as f:
    model_metadata = json.load(f)

Membuat Prediksi

import numpy as np

def transform_target(y, method='log1p'):
    if method == 'log1p':
        return np.log1p(y)
    elif method == 'sqrt':
        return np.sqrt(y)
    return y

def inverse_transform_target(y_transformed, method='log1p'):
    if method == 'log1p':
        return np.expm1(y_transformed)
    elif method == 'sqrt':
        return np.square(y_transformed)
    return y_transformed

# Prediksi dengan data baru
X_new = df[feature_names].fillna(0)
y_pred_transformed = model.predict(X_new)
y_pred = inverse_transform_target(y_pred_transformed, 'log1p')
y_pred = np.maximum(y_pred, 0)  # Pastikan permintaan non-negatif

Kesimpulan

Model XGBoost yang ditingkatkan ini menunjukkan performa yang sangat baik untuk peramalan permintaan mingguan. Dengan R² score 0.968 dan MAPE hanya 1.4%, model ini memberikan prediksi yang akurat di semua segmen permintaan.

Peningkatan utama dalam model ini meliputi feature engineering lanjutan, transformasi target, dan validasi time series yang tepat. Model siap untuk produksi dengan kemampuan monitoring yang komprehensif.


Dibuat oleh: Tim Katanya Circle
Tanggal: Juli 2025

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support