まとめ
- MAPE menyatakan galat sebagai persentase terhadap nilai aktual.
- Bandingkan MAPE dan sMAPE pada contoh ramalan penjualan dan lihat ketidakstabilan dekat nol.
- Pelajari cara menangani data dengan nol, nilai kecil, atau negatif.
1. Definisi #
$$ \mathrm{MAPE} = \frac{100}{n} \sum_{i=1}^n \left| \frac{y_i - \hat{y}_i}{y_i} \right| $$
- Rata-rata galat persentase terhadap nilai aktual.
- Semakin kecil semakin baik.
- Tidak stabil ketika \(y_i\) bernilai nol atau sangat kecil.
2. Menghitung di Python #
import numpy as np
from sklearn.metrics import mean_absolute_percentage_error
y_true = np.array([120, 150, 80, 200])
y_pred = np.array([110, 160, 75, 210])
mape = mean_absolute_percentage_error(y_true, y_pred)
print(f"MAPE = {mape * 100:.2f}%")
Fungsi mengembalikan nilai dalam fraksi; kalikan 100 untuk bentuk persentase.
3. sMAPE (MAPE simetris) #
Untuk meredam masalah di sekitar nol, sMAPE menyertakan prediksi pada penyebut:
$$ \mathrm{sMAPE} = \frac{100}{n} \sum_{i=1}^n \frac{|y_i - \hat{y}_i|}{(|y_i| + |\hat{y}_i|)/2} $$
import numpy as np
def smape(y_true: np.ndarray, y_pred: np.ndarray) -> float:
numerator = np.abs(y_true - y_pred)
denominator = (np.abs(y_true) + np.abs(y_pred)) / 2
return float(np.mean(numerator / np.maximum(denominator, 1e-8)))
y_true = np.array([120, 150, 80, 200])
y_pred = np.array([110, 160, 75, 210])
print(f"sMAPE = {smape(y_true, y_pred) * 100:.2f}%")
Tambahkan epsilon kecil untuk menghindari pembagian nol.
4. Hal yang perlu diperhatikan #
- Nilai nol/negatif: MAPE akan meledak; gunakan sMAPE atau batasi perhitungan pada periode dengan permintaan positif.
- Bias ke nilai kecil: persentase memberi bobot lebih besar pada item volume kecil; jelaskan efek ini kepada pemangku kepentingan.
- Outlier: metrik relatif mengecilkan dampak volume besar; sertakan metrik absolut.
- Interpretasi: “rata-rata meleset ±X%” mudah dipahami, namun lengkapi dengan implikasi nilai uang.
5. Metrik pendamping #
- MAE / RMSE: menunjukkan galat absolut sehingga dampak bisnis terlihat.
- RMSLE: menekankan penalti terhadap underestimation pada peramalan permintaan/pertumbuhan.
- Pinball loss: mengevaluasi interval/kantil untuk analisis risiko.
Ringkasan #
- MAPE memberikan gambaran persentase yang intuitif, tetapi perlu kehati-hatian saat nilai mendekati nol.
- sMAPE mengatasi ketidakstabilan dengan menormalkan terhadap jumlah nilai aktual dan prediksi.
- Gabungkan metrik relatif dan absolut untuk memprioritaskan perbaikan serta mengomunikasikan dampak bisnis.