Implementasi Facebook Prophet – Part 4

Pengenalan Training dan Test Set

Jika pada data non time series, dalam menentukan training dan test set digunakan split persentase, maka untuk data time series berbeda.

Pada time series digunakan pendekatan menggunakan data terakhir sebagai test set.

Ukuran test set harus disesuaikan dengan ukuran forecasting. Misalnya jika ingin memprediksi untuk 1 minggu, maka test set juga harus 1 minggu.

Sementara training set, diperlukan full period data. Misalnya menggunakan daily atau weekly data, minimum 1 tahun data. Idealnya 2 atau 3 tahun agar forecasting lebih akurat.

Implementasi Facebook Prophet Model

Setelah kita memahami bagaiman membuat training dan test dataset, mari kita implementasikan untuk membuat model.

Pertama kita spesifikan training dan test dataset.

#Training and Test Split
test_days = 31
training = df.iloc[:-test_days, : ]
test = df.iloc[-test_days:, : ]

Kemudian kita buat Facebook Prophet model. Berikut penjelasan singkat mengenai parameter.

  • growth: bentuk dari trend. ada dua pilihan linear atau logistik.
  • holidays: data frame holiday yang kita siapkan.
  • seasonality: terdapat 3 tipe, yearly, weekly dan daily. Memiliki value True atau False.
  • seasonality_mode: additive atau multiplicative. Umumnya multiplicative.
  • seasonality_prior_scale: strength of seasonality. Default value adalah 10.
  • holiday_prior_scale: bagaimana holiday mempengaruhi seasonality. Default value adalah 10.
  • changepoint_prior_scale: menunjukan seberapa mudah trend berubah. Default value adalah 0.05.

Berikut sedikit penjelasan mengenai additive dan multiplicative.

Secara sederhana jika pernambahan konstan, maka additive. Dapat dilihat pada contoh gambar dibawah pada graph additive penambahan konstan. Sementara pada multiplicative penambahan semakin besar dan dibaca dalam format persentase.

Perhatian: Jika Anda tidak yakin, umumnya akan digunakan multiplicative.

#Prophet Model
m = Prophet(growth = 'linear',
            yearly_seasonality = True,
            weekly_seasonality = True,
            daily_seasonality = False,
            holidays = holidays,
            seasonality_mode = 'additive',
            seasonality_prior_scale = 10,
            holidays_prior_scale = 10,
            changepoint_prior_scale= 0.05)
m.add_regressor('Christmas', mode = 'multiplicative')
m.fit(training)

Koefisien dari regressor dapat dilihat dengan perintah berikut:

#Regressor coefficients
from prophet.utilities import regressor_coefficients
regressor_coefficients(m)

Dapat dilihat coef adalah -0.32 % (karena multiplicative). Artinya kunjungan ke wikipedia udemy berkurang 0.32 persen pada Hari Natal.

Sampai disini kita sudah selesai membuat model, pada modul berikutnya kita akan melakukan forecasting.

Sharing is caring: