Lewati ke konten utama

Facebook Prophet: Pendekatan Modern untuk Peramalan Deret Waktu

Pahami bagaimana Facebook Prophet memodelkan tren, musiman, dan peristiwa khusus untuk ramalan yang akurat dan mudah ditafsirkan.
· 10 mnt Baca

Jelajahi bersama AI

Perusahaan bergantung pada prediksi tren masa depan untuk mengambil keputusan strategis, seperti meramalkan penjualan produk atau menilai variabilitas permintaan. Salah satu cara membuat prediksi yang efektif adalah peramalan deret waktu. Prinsip utama peramalan deret waktu adalah ketergantungannya pada nilai data historis untuk memprediksi hasil di masa depan. Ini menuntut perhatian terhadap data karena data praktis sering kali bising atau hilang, sehingga sulit diprediksi.

Meskipun ada banyak alat untuk peramalan deret waktu, Facebook Prophet dirancang khusus untuk menangani kompleksitas dunia nyata, mulai dari tren nonlinier dan musiman hingga dampak peristiwa khusus seperti hari libur dan kampanye pemasaran atau lonjakan trafik. Jika Anda benar-benar belum familiar dengan peramalan deret waktu, saya merekomendasikan mengikuti kursus Time Series Analysis in Python dan/atau kursus Forecasting in R kami.

Apa Itu Facebook Prophet?

Prophet adalah pustaka peramalan open-source yang dikembangkan oleh tim Core Data Science Facebook. Tersedia dalam Python dan R. Salah satu alasan analis data dan data scientist senang menggunakannya adalah karena ia mengotomatisasi banyak langkah rutin dalam metode peramalan tradisional. Dengan fleksibilitas tersebut, Prophet membantu pengguna menghasilkan ramalan yang dapat ditafsirkan dan baik dengan cepat.

Kerangka Pemodelan Inti Facebook Prophet

Pendekatan pemodelan Facebook Prophet terstruktur namun fleksibel. Ini mendekomposisi deret waktu menjadi empat komponen utama, yaitu tren, musiman, hari libur, dan galat. Komponen ketiga, yang saya sebut hari libur, tidak terlalu standar. Dekomposisi klasik dan STL menentukan tiga bagian: tren, musiman, dan galat.

Dengan memperjelas bagaimana tren, musiman, dan hari libur semuanya berkontribusi pada ramalan akhir, dekomposisi membantu memvalidasi penalaran model saat kita mencoba membuat keputusan yang tepat.

Dekomposisi deret waktu

Prophet menggunakan model aditif di mana deret waktu y(t) dinyatakan sebagai:

Persamaan dekomposisi deret waktu Facebook Prophet

Di mana,

  • Tren (g(t)) untuk pertumbuhan atau penurunan jangka panjang.

  • Musiman (s(t)) mencakup pola berulang seperti fluktuasi mingguan, bulanan, atau tahunan.

  • Dampak hari libur (h(t)) memperhitungkan peristiwa yang tidak teratur tetapi dapat diprediksi, seperti Black Friday atau hari libur nasional.

  • Galat (et) adalah noise residual yang tidak dijelaskan oleh komponen lain.

Selain memberikan interpretabilitas dengan menunjukkan faktor-faktor yang mendorong prediksi, Prophet juga mengotomatisasi sebagian besar proses peramalan deret waktu, seperti deteksi musiman dan penanganan nilai hilang.

Dengan menangani operasi prapemrosesan yang kompleks ini, Prophet mengurangi kebutuhan akan keahlian statistik yang ekstensif, seperti yang sering dibutuhkan dalam metode statistik konvensional. ARIMA, misalnya, memerlukan asumsi stasioneritas terpenuhi dan secara resmi tidak memperhitungkan faktor eksternal, sedangkan Prophet memodelkan musiman dan dampak hari libur secara eksplisit, sehingga dianggap lebih mudah untuk peramalan bisnis.

Spesifikasi komponen tren

Prophet memiliki dua model tren:

  1. Model pertumbuhan logistik berguna ketika deret waktu mencapai saturasi pada kapasitas maksimum, mirip dengan adopsi pengguna terhadap aplikasi baru.
  2. Model linear bertahap (piecewise linear) memecah tren menjadi segmen dengan titik perubahan (changepoint), sehingga memudahkan pemodelan perubahan pertumbuhan yang mendadak.

Pemodelan musiman

Musiman dimodelkan menggunakan deret Fourier yang memungkinkan fungsi periodik halus dalam data deret waktu. Ada dua bentuk utama perilaku musiman:

  • Musiman aditif diperlukan ketika variasi musiman tetap konsisten besarnya dari waktu ke waktu.
  • Musiman multiplikatif tepat ketika fluktuasi musiman tumbuh bersama tren, seperti volume penjualan yang meningkat seiring pertumbuhan pasar secara keseluruhan.

Selain itu, pengguna juga dapat mendefinisikan musiman kustom untuk merepresentasikan pola unik spesifik domain, misalnya promosi triwulanan.

Integrasi hari libur dan peristiwa

Prophet juga menyediakan kemampuan untuk memasukkan hari libur yang telah ditentukan maupun daftar peristiwa arbitrer. Ini sangat menguntungkan saat memodelkan siklus bisnis, hari libur budaya, atau peristiwa satu kali seperti peluncuran produk. Seseorang juga dapat menambahkan peristiwa tak terduga seperti COVID-19 sebagai regresor tambahan untuk memperbarui ramalan secara dinamis. Pemodelan eksplisit terhadap peristiwa semacam itu meningkatkan akurasi dan memberikan wawasan tentang dampak tanggal-tanggal khusus terhadap tren yang mendasarinya.

Menangani noise dan pencilan

Data dunia nyata sering mengandung noise dan pencilan, yang dapat mengakibatkan prediksi model yang terdistorsi. Prophet memiliki fungsi loss yang robust dan komponen tren nonparametrik yang membuat prediksi lebih tahan terhadap pencilan pada data.

Untuk semakin meningkatkan stabilitas ramalan, akan membantu menganalisis plot residual dan melakukan prapemrosesan data dengan winsorizing atau menghapus anomali. Langkah-langkah ini memastikan model mempelajari tren sebenarnya, bukan noise acak.

Kapan Menggunakan Facebook Prophet (dan Kapan Tidak)

Seperti kebanyakan model dan teknik machine learning, Prophet bukan solusi yang cocok untuk semua kasus. Memahami di mana ia unggul dan di mana tidak adalah kunci untuk menggunakannya secara efektif.

Kekuatan dan skenario ideal

Prophet sangat efektif ketika:

  • Saat data memiliki musiman harian, mingguan, atau tahunan yang jelas.
  • Dataset tidak lengkap dan memerlukan penanganan otomatis terhadap nilai hilang dan pencilan.
  • Pengguna membutuhkan analisis eksploratori cepat dan pengembangan model awal.

Kesederhanaannya membuatnya mudah diakses oleh pengguna dengan keahlian statistik terbatas, sementara interpretabilitasnya membantu analis dan data scientist mengomunikasikan hasil secara efektif kepada pemangku kepentingan nonteknis.

Keterbatasan dan potensi jebakan

Prophet mungkin kurang tepat dalam skenario berikut:

  • Data yang sangat volatil atau tidak musiman, di mana tidak ada pola periodik yang teratur.
  • Peramalan jangka panjang ketika tren tidak dapat diprediksi.
  • Tren nonlinier yang tidak tertangkap oleh model linear bertahap atau logistik.

Aturan emas saat menggunakan Prophet, atau model peramalan apa pun, adalah menghindari mengadopsinya secara membabi buta. Tanpa validasi yang tepat, model dapat dengan mudah menghasilkan ramalan yang terlalu percaya diri atau menyesatkan, sebagaimana terlihat dalam beberapa diskusi komunitas dan kegagalan peramalan profil tinggi.

Bekerja dengan Prophet di Python

Langkah 1: Impor pustaka

Pertama, muat semua paket Python yang diperlukan:

  • pandas untuk manipulasi data

  • prophet untuk membangun model peramalan

  • matplotlib untuk visualisasi

  • sklearn.metrics – untuk menghitung MAPE, metrik galat

import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_percentage_error

Langkah 2: Muat dataset

Selanjutnya, kita membaca file CSV yang berisi harga berjangka emas harian. Di sini ada tautan ke dataset Kaggle yang saya gunakan.

file_path = "future-gc00-daily-prices.csv"
gold_ts = pd.read_csv(file_path)

Langkah 3: Bersihkan data

Sekarang, kita harus membersihkan data. Ini berarti kita:

  • Menghapus koma dari kolom numerik dan mengonversinya ke float.

  • Mengonversi kolom Date dari format string ke datetime.

Ini memastikan Prophet dapat memahami dan mengurutkan tanggal dengan benar.

for col in ["Open", "High", "Low", "Close"]:
    gold_ts[col] = gold_ts[col].str.replace(",", "").astype(float)
gold_ts["Date"] = pd.to_datetime(gold_ts["Date"], format="%m/%d/%Y")

Langkah 4: Urutkan data berdasarkan tanggal

Kita menyusun data dalam urutan kronologis. Ini adalah langkah penting yang bisa terlewat.

gold_ts = gold_ts.sort_values("Date")

Langkah 5: Siapkan data untuk Prophet

Kita juga harus menyiapkan data untuk Prophet, yang mengharapkan kolom masukan diberi nama:

  • ds → stempel tanggal

  • y → nilai yang akan diramalkan (di sini, harga Close)

gold_ts = gold_ts[["Date", "Close"]].rename(columns={"Date": "ds", "Close": "y"})

Langkah 6: Bagi menjadi set pelatihan dan uji

Sekarang kita membagi data menjadi versi pelatihan dan pengujian.

  • Simpan sebagian besar data untuk pelatihan.
  • Sisihkan 180 baris terakhir (atau 10% jika lebih kecil) untuk menguji akurasi model.
test_size = min(180, len(gold_ts) // 10)
train = gold_ts.iloc[:-test_size]
test = gold_ts.iloc[-test_size:]

Langkah 7: Latih model Prophet

Latih Prophet pada data historis dengan komponen musiman harian dan tahunan diaktifkan.

model = Prophet(daily_seasonality=True, yearly_seasonality=True)
model.fit(train)

Langkah 8: Ramalkan nilai masa depan

Kita memprediksi untuk sebanyak hari seperti pada set uji.

Ramalan memuat kolom seperti yhat (terprediksi), yhat_lower, dan yhat_upper.

future = model.make_future_dataframe(periods=test_size)
forecast = model.predict(future)

Langkah 9: Selaraskan prediksi dengan nilai aktual

Gabungkan harga penutupan aktual dengan prediksi model pada tanggal yang cocok untuk dibandingkan secara langsung.

merged = pd.merge(test, forecast[["ds", "yhat"]], on="ds", how="inner")

Langkah 10: Hitung MAPE

Sekarang kita mengukur seberapa akurat ramalannya. Jika tidak ada tumpang tindih tanggal, kode akan memberi peringatan bukan crash.

if merged.empty:
    print("No overlapping dates between forecast and test set.")
else:
    mape = mean_absolute_percentage_error(merged["y"], merged["yhat"]) * 100
    print(f"Mean Absolute Percentage Error (MAPE): {mape:.2f}%")

Di sini, mean absolute percentage error (MAPE): 5,83%

Persamaan MAPE

Langkah 11: Plot ramalan

Kita memvisualisasikan ramalan, interval keyakinan, dan riwayat aktual.

fig1 = model.plot(forecast)
plt.title("Gold Futures (GC00) - Close Price Forecast")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()

Hasil ramalan Facebook Prophet

Langkah 12: Plot komponen musiman

Akan membantu untuk menunjukkan bagaimana pola tren, musiman harian, dan tahunan berkontribusi pada ramalan.

fig2 = model.plot_components(forecast)
plt.show()

Dekomposisi musiman Facebook Prophet

Langkah 13: Tinjau sampel ramalan

Tampilkan beberapa nilai prediksi terakhir dan rentang ketidakpastiannya.

print(forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail(10))

Contoh nilai yang diprediksi:

             ds         yhat   yhat_lower   yhat_upper
3714 2023-11-09  1834.568081  1743.127873  1922.791205
3715 2023-11-10  1833.323500  1749.265678  1937.246093
3716 2023-11-11  1832.818196  1740.941278  1921.772611
3717 2023-11-12  1832.370884  1745.285047  1925.012684
3718 2023-11-13  1832.644350  1736.792708  1919.057042
3719 2023-11-14  1832.017761  1736.229502  1929.786669
3720 2023-11-15  1831.650906  1743.190077  1924.851936
3721 2023-11-16  1831.566521  1738.181184  1933.026740
3722 2023-11-17  1830.427713  1736.038529  1919.505155
3723 2023-11-18  1830.029816  1737.022754  1922.118728

Memvalidasi dan Menguji Facebook Prophet

Metodologi validasi

Cross-validation deret waktu diperlukan untuk mensimulasikan skenario peramalan dunia nyata. Penting untuk mengevaluasi kinerja model pada beberapa set validasi yang berurutan. Tidak hanya membantu menghindari bias lookahead, tetapi juga memberikan kemampuan generalisasi ke data tak terlihat di masa depan.

Beberapa metrik evaluasi standar meliputi:

  • Mean absolute error (MAE) mengukur rata-rata besaran galat, mengabaikan arah.
  • Mean absolute percentage error (MAPE) mengukur rata-rata perbedaan persentase absolut. Ini mudah ditafsirkan di berbagai skala. Inilah yang kita lihat pada contoh Python kita.

Analisis komparatif

Dibandingkan dengan ARIMA atau LSTM, Prophet unggul dalam:

  • Menangani musiman tidak teratur dan dampak hari libur
  • Menunjukkan ketangguhan terhadap data hilang, pencilan, dan ketidakteraturan bisnis

Namun, Prophet mungkin berkinerja kurang baik dalam skenario yang melibatkan pola yang sangat nonlinier atau dataset dengan musiman yang lemah.

Aplikasi Praktis dan Keterbatasan

Studi kasus dunia nyata

Prophet telah banyak diadopsi di berbagai industri untuk kasus penggunaan seperti:

  • Peramalan penjualan ritel, mengukur permintaan, dan mengelola persediaan
  • Prediksi trafik web untuk memahami keterlibatan pengguna
  • Peramalan permintaan energi untuk menyeimbangkan pasokan dan konsumsi secara efisien.

Terlepas dari manfaatnya, ada kalanya pola historis gagal karena gangguan tak terduga, seperti yang terjadi selama pandemi.

Kendala skalabilitas

Prophet dapat menangani dataset berukuran sedang, yang sesuai untuk sebagian besar tugas peramalan bisnis dan operasional. Namun, penggunaannya pada dataset yang sangat besar atau deret waktu frekuensi tinggi mahal secara komputasi karena kerangka pemodelan Bayesian yang mendasarinya. Untuk mengatasinya, disarankan meramalkan beberapa deret waktu secara paralel. Pendekatan praktis lainnya adalah mengagregasi atau melakukan downsampling data. Ini mengurangi biaya memori dan waktu proses tanpa kehilangan pola temporal yang berharga.

Keterbatasan utama

Prophet mengasumsikan satu variabel target dan memodelkan tren menggunakan kurva pertumbuhan linear bertahap atau logistik. Asumsi semacam ini dapat membatasi fleksibilitasnya untuk masalah multivariat atau yang tidak didominasi tren. Oleh karena itu, pengguna perlu menambahkan pengetahuan domain ke ramalan Prophet bersama validasi eksternal untuk memastikan keandalan.

Kegagalan dan kritik di dunia nyata

Kegagalan ramalan profil tinggi, seperti keruntuhan pasar perumahan Zillow, menyoroti risiko ketergantungan berlebihan pada perangkat lunak peramalan otomatis. Terlalu mempercayai keluaran model tanpa tinjauan manusia dapat menimbulkan kesalahan yang mahal. Oleh karena itu, disarankan melakukan validasi menyeluruh dan perencanaan skenario saat menafsirkan hasil ramalan.

Jangan ragu untuk mempertanyakan setiap model dan tren. Bangun budaya yang mendorong pemikiran kritis dan memungkinkan tim menantang status quo. Saya telah melihat tim seperti itu secara konsisten membangun solusi peramalan yang tangguh.

Terakhir, saya sangat merekomendasikan mengadopsi pola pikir "percaya tapi verifikasi" dan menambahkan lapisan pengetahuan domain Anda untuk melakukan pemeriksaan kewajaran pada hasilnya.

Lintasan Pengembangan ke Depan

Prophet masih terus berkembang melalui riset dan kontribusi komunitas. Peningkatan berkelanjutan pada Prophet mencakup:

  • Dukungan multivariat
  • Skalabilitas yang ditingkatkan untuk dataset besar
  • Ekstensi yang digerakkan komunitas

Riset aktif melibatkan integrasi metode statistik baru dan peningkatan kinerja pada dataset kompleks dengan frekuensi tinggi.

Kesimpulan

Facebook Prophet adalah alat yang kuat untuk peramalan deret waktu, menawarkan otomasi, interpretabilitas, dan fleksibilitas. Ia berkinerja baik untuk peramalan eksploratori dalam bisnis dan domain lain dengan musiman kuat atau peristiwa khusus.

Namun, ini bukan solusi siap pakai. Untuk membuat prediksi yang tepercaya, pengguna harus memastikan validasi yang cermat, penyetelan parameter, dan pengetahuan domain. Dengan menyeimbangkan otomasi Prophet dengan penilaian manusia yang matang, analis dapat mengembangkan wawasan yang dapat ditindaklanjuti dan menghindari jebakan umum.

Untuk pembelajaran praktis, lihat kursus dan jalur keterampilan kami:

Vidhi Chugh

Penulis

Vidhi Chugh

Saya adalah Penasihat dan Etikus AI yang bekerja di persimpangan ilmu data, produk, dan rekayasa untuk membangun sistem pembelajaran mesin yang dapat diskalakan. Masuk dalam daftar "200 Inovator Bisnis dan Teknologi Teratas" di dunia, saya memiliki misi untuk mendemokratisasi pembelajaran mesin dan menyederhanakan jargon agar semua orang dapat menjadi bagian dari transformasi ini.

FAQ

Untuk apa Facebook Prophet digunakan?

Facebook Prophet digunakan untuk peramalan deret waktu, membantu memprediksi tren, musiman, dan dampak peristiwa dalam data seperti penjualan, permintaan, atau trafik web.

Bagaimana Prophet menangani hari libur dan peristiwa khusus?

Prophet memungkinkan penambahan peristiwa yang telah ditentukan atau kustom ke dalam model, yang memperhitungkan lonjakan atau penurunan tidak teratur pada deret waktu.

Mengapa Prophet populer untuk peramalan bisnis?

Prophet bersifat otomatis, dapat ditafsirkan, dan tangguh terhadap data hilang serta pencilan, sehingga ideal untuk ramalan yang cepat dan andal.

Kapan sebaiknya menghindari penggunaan Facebook Prophet?

Seseorang dapat menghindari Prophet untuk data yang sangat volatil atau tidak musiman atau ketika tren terlalu tidak dapat diprediksi.

Apa keunggulan utama Prophet dibanding ARIMA?

Tidak seperti ARIMA, Prophet tidak memerlukan stasioneritas yang ketat, menangani data hilang, dan secara otomatis mendeteksi titik perubahan.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026