Baseline Forecasting yang Sering Mengalahkan Model Canggih
Blog/Tips & Trik/Baseline Forecasting yang Sering Mengalahkan Model Canggih

Baseline Forecasting yang Sering Mengalahkan Model Canggih

BimaBima
·2 November 2025·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Baseline forecasting adalah metode peramalan paling sederhana yang dipakai sebagai pembanding, misalnya naive (ramalan besok = nilai hari ini) dan seasonal naive (ramalan Senin depan = nilai Senin lalu). Model rumit baru layak dipakai kalau errornya lebih kecil dari baseline ini. Di data harian toko_berkah, seasonal naive mingguan ngasih MAE Rp 412.000 dan ngalahin rata-rata bergerak 7 hari yang MAE-nya Rp 486.000.

Ramalan penjualan yang paling susah dikalahkan sering kali yang paling malas: angka Senin depan sama dengan angka Senin kemarin.

Namanya baseline forecasting. Metode ini nggak punya parameter, nggak butuh training, dan bisa kamu tulis dalam satu baris kode. Tugas dia bukan jadi ramalan final, tapi jadi garis pembanding yang harus dikalahkan model lain.

Aku pakai data penjualan harian toko_berkah buat nunjukin angkanya. Hasilnya bikin aku nunda pasang model yang lebih rumit.

Apa itu baseline forecasting?

Baseline forecasting adalah metode peramalan paling sederhana yang dipakai sebagai titik nol pembanding. Ramalannya cuma nyalin nilai masa lalu tanpa ngitung apa-apa. Kalau model yang kamu bangun errornya nggak lebih kecil dari baseline ini, model itu nggak nambah nilai apa pun dan mending nggak usah dipakai.

Empat bentuk yang paling sering kepakai:

NamaAturannyaCocok waktu
NaiveRamalan besok = nilai hari iniData yang gerakannya lambat
Seasonal naiveRamalan Senin depan = nilai Senin laluAda pola harian atau bulanan
MeanRamalan = rata-rata seluruh riwayatData yang muter di sekitar satu angka
DriftNaive plus kemiringan rata-rata riwayatAda tren naik atau turun jelas

Definisi lengkap keempatnya ada di buku Forecasting: Principles and Practice karya Hyndman dan Athanasopoulos, yang bisa dibaca gratis.

Kenapa baseline sering ngalahin model yang rumit?

Tiga alasan yang paling sering aku temuin di data bisnis Indonesia.

Datanya pendek. Toko yang buka dua tahun punya sekitar 700 baris data harian. Model dengan puluhan parameter butuh lebih banyak dari itu buat belajar pola beneran, jadi dia sering hafal keributan acak.

Polanya kuat dan gampang. Warung dekat kantor rame Senin sampai Jumat, sepi Sabtu Minggu. Seasonal naive nangkep pola itu tanpa diajarin.

Kejutan besarnya datang dari luar data. Lebaran, banjir, jalan depan toko ditutup proyek. Nggak ada model deret waktu yang bisa nebak itu dari riwayat penjualan doang.

Aku bukan lagi bilang model canggih nggak berguna. Poinnya, kamu perlu tau berapa nilai tambahnya sebelum ngeluarin ongkos ngerawatnya.

Gimana cara bikin baseline forecast di pandas?

Bagian ini butuh satu fungsi doang: shift. Dia geser kolom ke bawah sejumlah baris yang kamu minta.

import pandas as pd

df = pd.read_csv("penjualan_harian.csv", parse_dates=["tanggal"])
df = df.sort_values("tanggal").reset_index(drop=True)

# Baseline 1: naive, ramalan hari ini = penjualan kemarin
df["naive"] = df["omzet"].shift(1)

# Baseline 2: seasonal naive mingguan, ramalan = 7 hari lalu
df["snaive"] = df["omzet"].shift(7)

# Pembanding: rata-rata bergerak 7 hari
df["ma7"] = df["omzet"].shift(1).rolling(7).mean()

Perhatikan shift(1) sebelum rolling di baris terakhir. Tanpa itu, rata-ratanya ikut ngitung penjualan hari yang lagi diramal, dan itu curang. Kesalahan ini namanya kebocoran data, dan dia bikin hasil evaluasimu keliatan bagus padahal nggak.

Kalau kamu lebih sering kerja di database, pola yang sama bisa ditiru pakai window function seperti di artikel rata-rata bergerak 7 hari di SQL.

Gimana cara ngukur mana yang menang?

Pakai satu angka error yang gampang dijelasin. Aku pilih MAE, rata-rata selisih mutlak antara ramalan dan kenyataan, karena satuannya tetap rupiah.

from sklearn.metrics import mean_absolute_error

uji = df.dropna().copy()

for kolom in ["naive", "snaive", "ma7"]:
    mae = mean_absolute_error(uji["omzet"], uji[kolom])
    print(kolom, round(mae))

Tiga catatan waktu ngukur:

  1. Uji di data yang belum kelihatan. Potong data jadi dua bagian secara urut waktu. Latih di bagian awal, ukur di bagian akhir. Jangan acak barisnya.
  2. Bandingin di periode yang sama persis. Baseline dan model harus dinilai di rentang tanggal identik.
  3. Catat juga error terburuknya. Rata-rata bagus tapi sekali meleset Rp 3 juta itu masalah buat orang yang belanja stok.

Kalau kamu perlu penyegaran soal cara milih angka pengukur, baca dulu definisi metric.

Studi kasus: penjualan harian toko_berkah

Datanya 182 hari penjualan sebuah toko kelontong, Mei sampai Oktober. Rata-rata omzet harian Rp 2.740.000. Aku pakai 140 hari pertama sebagai riwayat dan 42 hari terakhir buat pengujian.

Hasilnya:

MetodeMAEError terburukCatatan
Naive (kemarin)Rp 597.000Rp 2.310.000Kacau tiap Sabtu dan Senin
Seasonal naive 7 hariRp 412.000Rp 1.640.000Paling kecil errornya
Rata-rata bergerak 7 hariRp 486.000Rp 1.880.000Ratain pola akhir pekan
Rata-rata seluruh riwayatRp 731.000Rp 2.960.000Buta sama pola mingguan

Seasonal naive menang dengan MAE Rp 412.000, sekitar 15% dari omzet harian rata-rata. Rata-rata bergerak kalah 18% dari seasonal naive, dan alasannya masuk akal: dia ngeratain hari Sabtu yang omzetnya 2,1 kali hari Selasa.

Ada satu hari yang bikin semua metode meleset jauh, yaitu tanggal 17 Agustus. Omzetnya lompat ke Rp 6.100.000 gara-gara lomba di kompleks. Itu bukan kesalahan model, itu outlier yang penyebabnya ada di kalender, bukan di data penjualan.

Kesimpulan praktis buat toko ini: pakai seasonal naive sebagai angka dasar, terus tambahin penyesuaian manual buat tanggal merah. Model deret waktu yang lebih rumit baru dicoba kalau data promo dan jadwal libur udah tercatat rapi.

Kesalahan umum waktu pakai baseline

  • Nggak bikin baseline sama sekali. Model dengan akurasi 82% kedengeran hebat sampai kamu sadar naive dapat 84%.
  • Salah pilih musim. Data harian penjualan ritel biasanya musimnya 7, bukan 30. Salah angka di shift bikin baseline-nya jelek tanpa alasan.
  • Ngukur di data latih. Semua metode kelihatan bagus di data yang udah dilihat. Pisahkan pengujian secara urut waktu.
  • Pakai MAPE di data yang pernah nol. Pembagian sama nol bikin angkanya meledak dan perbandinganmu jadi ngaco.
  • Berhenti di satu kali pengukuran. Baseline bisa berubah kualitasnya waktu pola bisnis geser. Ukur ulang tiap kuartal.

FAQ

Baseline forecasting itu apa sih sebenernya?

Baseline forecasting adalah ramalan paling sederhana yang kamu pakai sebagai garis pembanding. Bentuk paling umum ada dua: naive, yang bilang nilai besok sama dengan nilai hari ini, dan seasonal naive, yang bilang nilai Senin depan sama dengan nilai Senin kemarin. Angka errornya jadi patokan. Model apa pun yang kamu bikin harus lebih kecil errornya dari itu supaya layak dipakai.

Kenapa model canggih bisa kalah sama tebakan sesederhana ini?

Soalnya data penjualan harian punya pola berulang yang kuat dan riwayat yang pendek. Model dengan banyak parameter butuh data banyak buat belajar. Kalau kamu cuma punya 200 hari data, model itu lebih sering hafal keributan acak daripada pola sesungguhnya. Baseline nggak punya parameter buat dihafal, jadi dia lebih tahan waktu datanya sedikit.

Metrik error mana yang sebaiknya aku pakai?

Buat mulai, pakai MAE karena satuannya sama dengan datamu, jadi gampang dijelasin ke atasan: rata-rata meleset Rp 412.000 per hari. RMSE bikin kesalahan besar kena hukuman lebih berat, cocok kalau salah besar itu mahal. MAPE hindari kalau datamu pernah nol atau mendekati nol, soalnya pembagiannya meledak.

Berapa lama data minimal buat bikin baseline mingguan?

Minimal delapan minggu supaya kamu punya cukup hari yang sama buat dibandingkan, dan idealnya enam bulan biar pengaruh musim mulai kelihatan. Kurang dari delapan minggu, satu hari libur nasional aja udah cukup buat bikin angka errornya nggak bisa dipercaya. Kalau datamu memang segitu, sebut aja hasilnya sebagai perkiraan kasar.

Kalau baseline udah bagus, ngapain masih bikin model?

Model tambahan baru masuk akal kalau kamu punya informasi yang nggak dimiliki baseline. Contohnya jadwal promo, kalender libur, harga kompetitor, atau cuaca. Baseline cuma tau riwayat penjualan. Kalau kamu bisa masukin faktor luar itu dan errornya turun jauh di bawah baseline, model itu layak dirawat. Kalau turunnya cuma dua persen, ongkos perawatannya nggak sepadan.

Penutup

Dua hal yang perlu nempel:

  1. Bikin baseline dulu sebelum model apa pun. Satu baris shift(7) udah cukup.
  2. Angka MAE baseline itu syarat lulus. Model yang nggak lewat, nggak usah dipakai.

Ambil data penjualan enam bulan terakhir di tempat kerjamu, hitung MAE seasonal naive-nya, dan simpan angkanya. Itu jadi patokan buat semua percobaan berikutnya.

Kalau kamu lebih nyaman kerja di spreadsheet, cara serupa bisa dijalanin lewat rumus FORECAST di Excel. Buat ngerapihin datanya dulu, fungsi AVERAGE dan MEDIAN biasanya yang pertama kepakai.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Pandas groupby: Agregasi Data ala Pivot di Python (2026)
Tips & Trik
20 Juli 2026•9 menit baca

Pandas groupby: Agregasi Data ala Pivot di Python (2026)

groupby ngelompokin baris berdasarkan kolom, lalu ngitung ringkasan per grup kayak total atau rata-rata. Ini pivot-nya pandas.

BimaBima
Pandas to_excel: Ekspor DataFrame ke Excel (2026)
Tips & Trik
18 Juli 2026•8 menit baca

Pandas to_excel: Ekspor DataFrame ke Excel (2026)

to_excel nyimpen DataFrame pandas jadi file Excel .xlsx. Ini cara pakainya, dari satu sheet sampai banyak sheet, plus setelan yang bikin hasilnya rapi.

BimaBima
Pandas read_excel: Baca File Excel di Python
Tips & Trik
16 Juli 2026•8 menit baca

Pandas read_excel: Baca File Excel di Python

pandas read_excel baca file Excel jadi DataFrame, bisa pilih sheet tertentu dan lompatin baris judul yang berantakan. Ini cara pakai plus parameter penting dengan contoh data toko.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore