Kembali ke Beranda
Machine Learning
MODUL PERKULIAHAN MINGGU KE-10

Feature Engineering & Machine Learning untuk STLF

Sliding Window Supervised Learning, Fitur Siklis Kalender, XGBoost/LightGBM, dan Time Series CV

Capaian Pembelajaran Khusus (Sub-CPMK)

Sub-CPMK 9: Mampu merumuskan problem deret waktu ke Supervised Learning, rekayasa fitur, dan pelatihan Gradient Boosting.

Transformasi deret waktu sekuensial menjadi format matriks supervised learning, pembuatan fitur lag dekat dan lag musiman, statistik rolling window, encoding kalender siklis (sin/cos), algoritma pohon Gradient Boosting (XGBoost/LightGBM), dan pencegahan data leakage dengan TimeSeriesSplit.

Formulasi Matematis & Persamaan Inti

$$x_{\sin} = \sin\left(\frac{2\pi \cdot \text{jam}}{24}\right), \quad x_{\cos} = \cos\left(\frac{2\pi \cdot \text{jam}}{24}\right), \quad \mathcal{L}^{(t)} = \sum_{i=1}^n l(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) + \Omega(f_t)$$

Pemetaan Taksonomi Bloom (C1–C6)

C1–C2 (Mengingat & Memahami)

Definisi teknik sliding window dan alasan mengapa fitur kalender jam/bulan wajib di-encode secara siklis.

C3–C4 (Menerapkan & Menganalisis)

Kalkulasi manual fitur lag/rolling window dan analisis feature importance pohon keputusan terhadap profil beban puncak.

C5–C6 (Mengevaluasi & Berkreasi)

Evaluasi strategi recursive vs direct multi-step forecasting dan perancangan auto-tuning pipeline XGBoost.

Implementasi Komputasi (Python / Statsmodels)

import xgboost as xgb
from sklearn.model_selection import TimeSeriesSplit

# Rekayasa Fitur Temporal
df['hour_sin'] = np.sin(2 * np.pi * df.index.hour / 24)
df['hour_cos'] = np.cos(2 * np.pi * df.index.hour / 24)
df['lag_24'] = df['load'].shift(24)
df['roll_mean_24'] = df['load'].shift(1).rolling(24).mean()

# TimeSeriesSplit CV
tscv = TimeSeriesSplit(n_splits=5)
model = xgb.XGBRegressor(n_estimators=500, learning_rate=0.03, max_depth=6)