Time Series Forecasting — Semoga Datang Kembali

Benny William Pardede
PPL D7 — Fasilkom UI
4 min readMay 2, 2019
Hanya di Giaaaant, tempat belanja termurah~ wooh ooohh~

“Terimakasih sudah berbelanja, semoga datang kembali!”

Kalimat tersebut kerap terdengar ketika kita selesai melakukan transaksi belanja entah di minimart atau di supermart atau di hypermart atau di gigamart. Harapan dari setiap usaha baik itu penjual barang atau penyedia pelayanan adalah agar setiap pelanggan yang sudah bertransaksi mau kembali lagi ke usaha mereka untuk melakukan transaksi lagi. It’s all about the money right?

Motivasi yang primordial tersebut juga dimiliki oleh perusahaan partner PPL kami, yakni HappyFresh (disingkat HF). HF memiliki cita-cita untuk menjadi partner digital untuk setiap orang yang ingin dibantu dalam aktivitas belanja bahan pokok atau kebutuhan dapur lainnya. Dan setelah penelitian panjang dari tim perusahaan, mereka menemukan bahwa salah satu sifat yang para pembelanja miliki adalah melupakan jadwal rutin untuk berbelanja suatu barang spesifik atau melupakan jadwal belanja bulanan mereka. Kalau lupa belanja berarti lupa bertransaksi dong, makanya mereka ingin penggunanya terus ingat untuk berbelanja lagi di app mereka b̶i̶a̶r̶ ̶d̶u̶i̶t̶n̶y̶a̶ ̶n̶g̶a̶l̶i̶r̶. Maka dari itu HF ingin kami sebagai developer PPL untuk membuatkan fitur agar para pengguna dapat diingatkan akan jadwal belanja mereka. Mengingatkan bahwa sebuah barang spesifik di kediaman pengguna sudah habis jadi ‘silahkan belanja kembali!’.

“Lah tau darimana belanjaan saya di rumah sudah habis??” Pertanyaan bagus, kami juga gak tahu. Tapi perlu diingat bahwa setiap transaksi belanja yang terjadi di HF tercatat dalam database riwayat belanja. Nah, jikalau memang pengguna tersebut memiliki sebuah jadwal belanja, maka dalam riwayat belanjaan pengguna tersebut akan terbentuk sebuah pola tanggal-tanggal belanja untuk sebuah barang spesifik. Kita sebagai developer bisa membuat sebuah algoritma prediksi yang dapat menebak tanggal berapa saja dalam satu bulan bahwa pengguna x akan membeli produk y.

Algoritma prediksi yang dapat digunakan sebenarnya ada banyak. Bahkan, kita juga bisa hanya merata-ratakan rata-rata interval belanja user untuk sebuah barang. Tapi tentu saja metode tersebut sangat rentan untuk mengembalikan akurasi yang jelek! Kalau asal nebak saja, pelanggannya malah merasa terganggu karena dapat notifikasi di hari yang salah terus-menerus. Alhasil, kami memakai sebuah algoritma analisis statistik yang berhubungan dengan prediksi frekuensi kejadian (event) berdasarkan data frekuensi kejadian-kejadian sebelumnya yang bernama Time Series Forecasting.

Time Series — Forecasting — Time Series Forecasting

Time Series adalah sebuah rangkaian kejadian atau pengamatan yang diambil secara sekuensial terhadap interval waktu tertentu. Contohnya adalah kumpulan data temperatur ozon selama 2 abad terakhir berturut-turut.

Dimensi waktu adalah aspek/fitur yang membedakan time series dengan representasi statistika lainnya. Seperti yang dapat dilihat pada grafik di atas, sumbu x adalah tahun waktu kejadian data tersebut dicatat, dan sumbu y adalah fitur yang dicatat pada data tersebut. Jika dihubungkan dengan fitur proyek HF, sumbu x yang ingin kami gunakan adalah tanggal-tanggal dalam satu bulan dan sumbu y nya adalah frekuensi sebuah barang dibeli.

Forecasting, well, meramal. Kita disini bukan ingin menjadi business intelligence yang bertugas menganalisis kejadian yang sudah berlalu. Kita disini ingin memprediksi kejadian di masa depan. Dari insight yang kita dapatkan, dari rangkaian kejadian yang telah terjadi, kita dapat mengkalkulasi kejadian-kejadian di masa yang akan datang. Hal ini tentunya sangat berguna karena dengan hal tersebut kita bisa melakukan banyak hal, seperti melakukan antisipasi terhadap apa yang akan datang di masa depan.

Time Series Forcasting? Berarti memprediksi data time series untuk sebuah event di masa depan. Contoh TSF adalah seperti berikut

Implementasi

Pada proyek PPL kelompok kami, kami menggunakan salah satu metode Time Series Forecasting, yaitu Seasonal Moving Average. Keluaran dari teknik ini adalah estimasi kejadian masa depan berdasarkan rata-rata dari kejadian pada rentang waktu yang memiliki kesamaan dalam season-nya. Yang dimaksud sebuah season adalah sebuah interval yang statis seperti setiap bulan, setiap 10 hari, dll. Kita dapat mendapatkan estimasi apa yang akan terjadi/didapatkan pada season selanjutnya di masa depan.

Rumus untuk Seasonal Moving Average adalah berikut:

Dalam contoh ini, Yt-(12*n) artinya seasonnya adalah satu bulan per tahun

Kami tidak berhenti di Seasonal Average saja, karena kami memiliki asumsi bahwa riwayat-riwayat belanjaan yang baru seharusnya lebih relevan dibandingkan riwayat belajaan yang lebih lama. Banyak kemungkinan seorang pengguna mengubah jadwal belanjanya di masa depan bukan? Sementara pada rumus seasonal average, setiap data dianggap sama-sama kuat untuk membuat prediksi di masa depan. Ini membuat rumus di atas menjadi kurang bermakna apabila seorang pengguna memeliki kebiasaan belanja yang baru.

note : Relevan disini artinya weight fitur dalam rumus di atas (kalau tidak paham weight coba search ‘machine learning weight’).

Hal ini dapat diantisipasi dengan menggunakan sebuah metode manipulasi fitur pada pembelajaran mesin yaitu exponential smoothing. Exponential Smoothing berfungsi untuk memberikan weight pada data yang dikalkulasi. Weight untuk data yang lebih lama akan terus menurun secara eksponensial. Metode ini berguna untuk menunjukkan bahwa semakin baru data, maka semakin relevan data tersebut terhadap data yang akan diprediksi. Pada rumus di atas, nilai Y yang terletak pada dimensi waktu paling terakhir akan mendapatkan weight yang paling besar. Ibaratnya, pola belanja kita 1 bulan terakhir akan lebih relevan dalam memprediksi pola belanja kita di masa depan dibanding pola belanja pada 2 bulan terakhir. Oleh karena itulah kelompok kami menggunakan metode tambahan ini.

Referensi

“Time Series Forecasting Methods” slide deck by Nate Derby, Calgary SAS Users Group

Benny William Pardede
Koneg Liquid

--

--