Ide dibalik fbprophet
Saat ini, forecasting sudah bisa dibilang menjadi kebutuhan yang penting terutama untuk perusahaan yang berbasis data-driven. Forecasting membantu suatu organisasi atau perusahaan di dalam set up planning dan goal maupun anomaly detection.
Istilah forecasting ini cukup berbeda dengan prediction. Istilah forecasting merujuk kepada analisis data deret waktu, sedangkan prediction terhadap selain analisis data deret waktu. Hal ini karena pada data deret waktu, nilai yang akan di prediksi berada di luar rentang nilai-nilai observasi (unseen data), sedangkan pada data cross section misalnya, nilai yang akan di prediksi berada di dalam rentang nilai-nilai observasi.
Meskipun keberadaan forecasting mulai makin dibutuhkan di dunia industri, terdapat tantangan yang serius seperti [1]
- Menghasilkan ramalan yang reliabel dan berkualitas tinggi.
- Memilih metode mana yang akan dipakai (karena banyaknya metode forecasting yang ada).
- Analyst yang ahli dalam analisis data deret waktu terbilang masih jarang.
- Permintaan hasil ramalan yang berkualitas tinggi banyak namun proses (pace) nya lama.
Oleh karena itu diciptakanlah fbprophet agar analyst yang tidak ahli time series bisa menggunakannya dan bisa di-tuning parameternya berdasarkan pengetahuan domain expertisenya.
Konsep Dasar
Terdapat beberapa macam jenis analisis time series diantaranya adalah ARIMA, Exponential Smoothing, Dekomposisi, GAM, ARCH, TAR, VAR, dan lainnya, seperti yang ditunjukkan pada gambar di bawah ini
Jika kita lihat di dokumentasi fbprophet, package ini berlandaskan konsep dekomposisi. Metode dekomposisi ini memecah data deret waktu menjadi beberapa pola. Jika kita bandingkan, metode exponential smoothing juga menggunakan konsep yang sama yaitu dekomposisi. Model dasar dekomposisi adalah
# basic decomposition models
Additive: data = trend + seasonality + error
Multiplicative: data = trend * seasonality* error
Sementara itu, model dari fbprophet adalah
# fbprophet models
data = pattern + error
data = trend + seasonality + holiday + error
data = g(t) + s(t) + h(t) + e(t)
Formula estimasi parameter setiap komponen dapat dilihat dari bagan berikut.
Tuning parameter by Analyst
Salah satu hal yang menarik dari package fbprophet ini adalah kita bisa melakukan tuning/adjustment parameter berdasarkan domain expertise yang dimiliki seperti [1]
- Capatities (parameter C) : pengetahuan eksternal mengenai total ukuran pasar dapat diterapkan untuk menetapkan parameter ini.
- Changepoints (parameter S) : pengetahuan mengenai perubahan produk bisa digunakan untuk menetapkan parameter ini.
- Holidays dan seasonality : pengetahuan mengenai impact yang mungkin berbeda-beda tiap bulan dapat diterapkan untuk menyesuaikan parameter ini.
Refference
[1] https://peerj.com/preprints/3190v2/
[2] https://online.stat.psu.edu/stat510/book/export/html/667
[3] https://facebook.github.io/prophet/
[4] https://github.com/arofiqimaulana/Statistics/tree/master/Time%20Series%20Analysis