All Products
Search
Document Center

Platform For AI:Prophet

Last Updated:Apr 02, 2026

Prophet adalah algoritma peramalan deret waktu yang dikembangkan oleh Facebook. Algoritma ini menguraikan deret waktu menjadi komponen tren, musiman, dan hari libur untuk menghasilkan prediksi beserta batas ketidakpastiannya. Prophet cocok digunakan dalam berbagai skenario peramalan bisnis, seperti perencanaan permintaan, peramalan pendapatan, dan prediksi traffic.

Prophet hanya berjalan pada sumber daya komputasi MaxCompute.

Kapan menggunakan Prophet

Prophet memberikan hasil terbaik ketika data Anda memenuhi sebagian besar kondisi berikut:

  • Tersedia setidaknya dua siklus musiman lengkap dari data historis (misalnya, dua tahun pengamatan harian).

  • Memiliki pola musiman yang jelas—harian, mingguan, atau tahunan.

  • Terdapat event satu kali yang diketahui memengaruhi deret waktu (misalnya, peluncuran produk, hari libur, atau promosi).

  • Menunjukkan tren pertumbuhan yang mendekati batas atas atau bawah alami (misalnya, saturasi pasar).

Jika data Anda tidak memiliki karakteristik tersebut, model yang lebih sederhana mungkin memberikan hasil yang sama baiknya.

Cara kerja

  1. Muat data deret waktu ke dalam kolom MTable menggunakan komponen MTable Assembler.

  2. Teruskan kolom MTable ke komponen Prophet dan konfigurasikan parameter peramalan.

  3. Prophet menguraikan deret waktu menjadi komponen tren, musiman, dan hari libur, lalu menghasilkan prediksi.

  4. Output berisi prediksi titik (yhat) di kolom prediksi serta batas ketidakpastian (yhat_lower, yhat_upper) di kolom detail prediksi.

Konfigurasi komponen di Konsol PAI

Port input

Input portData typeRequiredRecommended upstream component
Input DataN/AYesRead Table, Read CSV File, Feature engineering, Data preprocessing

Pengaturan field

ParameterDescription
valueColKolom MTable yang berisi deret waktu. Tipe data adalah STRING dan format data adalah MTable. Gunakan komponen MTable Assembler untuk membuat kolom ini. Kolom Datetime (ds) berfungsi sebagai sumbu waktu. Contoh: {"data":{"ds":["2019-05-07 00:00:00.0","2019-05-08 00:00:00.0"],"val":[8588.0,8521.0]},"schema":"ds TIMESTAMP,val DOUBLE"}
reservedColsKolom dari data input yang diteruskan ke output.

Pengaturan parameter

Parameter dikelompokkan ke dalam empat kategori: kontrol tren, kontrol musiman, kontrol hari libur, dan kontrol output. Memahami kategori suatu parameter mempermudah proses tuning.

Kontrol tren

ParameterDefaultDescription
growthLINEARJenis tren pertumbuhan. LINEAR menyesuaikan tren linier potongan-potongan. Logistic menyesuaikan kurva pertumbuhan jenuh—gunakan ini ketika deret memiliki batas atas atau bawah alami (atur cap dan floor sesuai kebutuhan). Flat mengasumsikan tidak ada tren.
capBatas atas saturasi. Diperlukan ketika growth bernilai Logistic. Dapat berupa nilai konstan atau deret yang berubah seiring waktu. Tidak berpengaruh ketika growth bernilai LINEAR atau Flat.
floorBatas bawah saturasi. Diperlukan ketika growth bernilai Logistic dan deret memiliki batas minimum. Tidak berpengaruh ketika growth bernilai LINEAR atau Flat.
changepointsDaftar eksplisit tanggal titik perubahan, dipisahkan koma. Contoh: 2021-05-02,2021-05-07. Biarkan kosong agar Prophet mendeteksi titik perubahan secara otomatis.
n_change_point25Jumlah maksimum titik perubahan yang terdeteksi secara otomatis.
change_point_range0.8Proporsi data historis tempat titik perubahan dapat terjadi. Nilai default (0.8) membatasi deteksi pada 80% pertama deret, mencegah titik perubahan semu di akhir data.
changepoint_prior_scale0.05Mengontrol fleksibilitas tren. Jika tren overfit (mengikuti noise terlalu dekat), turunkan nilai ini mendekati 0.001. Jika tren underfit (melewatkan perubahan nyata), naikkan nilainya mendekati 0.5.

Kontrol musiman

ParameterDefaultDescription
seasonality_modeADDITIVECara musiman berinteraksi dengan tren. Gunakan ADDITIVE ketika fluktuasi musiman relatif konstan. Gunakan MULTIPLICATIVE ketika fluktuasi musiman bertambah atau berkurang secara proporsional terhadap level tren.
daily_seasonalityautoApakah akan menyesuaikan komponen musiman harian. auto mengaktifkan musiman harian hanya jika data memiliki pengamatan sub-harian.
weekly_seasonalityautoApakah akan menyesuaikan komponen musiman mingguan.
yearly_seasonalityautoApakah akan menyesuaikan komponen musiman tahunan.
seasonality_prior_scale10.0Mengontrol seberapa kuat musiman menyesuaikan data. Turunkan untuk menghaluskan fluktuasi musiman; naikkan untuk memungkinkan fluktuasi musiman yang lebih besar. Bekerja secara analog dengan changepoint_prior_scale, tetapi untuk komponen musiman.

Kontrol hari libur

ParameterDefaultDescription
holidaysTanggal hari libur kustom, diformat sebagai nama:tanggal1,tanggal2 nama2:tanggal3,tanggal4. Pisahkan beberapa hari libur dengan spasi. Contoh: playoff:2021-05-03,2021-01-03 superbowl:2021-02-07,2021-11-02.
holidays_prior_scale10.0Mengontrol seberapa kuat model menyesuaikan efek hari libur. Bekerja secara analog dengan seasonality_prior_scale, tetapi untuk komponen hari libur. Turunkan jika lonjakan hari libur mengalami overfit.

Kontrol output dan inferensi

ParameterDefaultDescription
predictionColNama kolom output yang berisi prediksi titik (yhat).
predictionDetailColNama kolom output yang berisi detail prediksi dalam bentuk MTable. Field mencakup yhat_lower dan yhat_upper (batas ketidakpastian), trend, dan nilai komponen musiman. Gunakan komponen MTable Expander untuk meratakan kolom ini menjadi tabel biasa.
predictNum12Jumlah periode mendatang yang akan diramalkan. Nilai valid: (0, inf).
include_historyApakah akan menyertakan nilai hasil fitting untuk tanggal historis dalam output.
interval_width0.8Lebar interval ketidakpastian. Nilai default 0.8 berarti interval ketidakpastian 80% di sekitar prediksi.
mcmc_samples100Jumlah sampel Markov Chain Monte Carlo (MCMC) untuk inferensi Bayesian. Atur ke 0 untuk menggunakan estimasi maximum a posteriori (MAP) alih-alih inferensi Bayesian penuh—lebih cepat tetapi tidak menghasilkan interval ketidakpastian.
uncertaintySamples1000Jumlah sampel yang digunakan untuk menghitung batas ketidakpastian. Atur ke 0 untuk melewati estimasi ketidakpastian dan mempercepat prediksi.
stanInitNilai awal untuk pengoptimal Stan. Biarkan kosong untuk menggunakan nilai default.
numThreadsJumlah thread yang digunakan komponen.

Tuning eksekusi

ParameterDescription
Number of WorkersJumlah core CPU. Harus berupa bilangan bulat positif dalam rentang [1, 9999]. Atur bersamaan dengan Memory per worker, unit MB.
Memory per worker, unit MBMemori yang dialokasikan untuk setiap node pekerja. Nilai valid: 1024–65536 MB.

Konfigurasi komponen menggunakan kode

Salin kode berikut ke dalam komponen PyAlink Script untuk mereplikasi perilaku komponen Prophet secara programatik.

Kode ini melakukan tiga langkah:

  1. Menggabungkan baris deret waktu mentah menjadi satu kolom MTable per kelompok menggunakan GroupByBatchOp.

  2. Menjalankan peramalan Prophet pada setiap MTable menggunakan ProphetBatchOp.

  3. Meratakan output prediksi MTable menjadi tabel biasa menggunakan FlattenMTableBatchOp.

import time, datetime
import numpy as np
import pandas as pd

# Unduh lingkungan plugin Prophet yang diperlukan
downloader = AlinkGlobalConfiguration.getPluginDownloader()
downloader.downloadPlugin('tf115_python_env_linux')

# Data input contoh: setiap baris adalah satu pengamatan berstempel waktu
data = pd.DataFrame([
    [1, datetime.datetime.fromtimestamp(1),  10.0],
    [1, datetime.datetime.fromtimestamp(2),  11.0],
    [1, datetime.datetime.fromtimestamp(3),  12.0],
    [1, datetime.datetime.fromtimestamp(4),  13.0],
    [1, datetime.datetime.fromtimestamp(5),  14.0],
    [1, datetime.datetime.fromtimestamp(6),  15.0],
    [1, datetime.datetime.fromtimestamp(7),  16.0],
    [1, datetime.datetime.fromtimestamp(8),  17.0],
    [1, datetime.datetime.fromtimestamp(9),  18.0],
    [1, datetime.datetime.fromtimestamp(10), 19.0]
])

# Langkah 1: Konversi baris menjadi kolom MTable dikelompokkan berdasarkan ID deret
source = dataframeToOperator(data, schemaStr='id int, ts timestamp, val double', op_type='batch')

source.link(
    GroupByBatchOp()
        .setGroupByPredicate("id")
        .setSelectClause("id, mtable_agg(ts, val) as data")
    # Langkah 2: Jalankan Prophet dan ramalkan 4 periode mendatang
).link(
    ProphetBatchOp()
        .setValueCol("data")
        .setPredictNum(4)
        .setPredictionCol("pred")
    # Langkah 3: Ratakan output prediksi MTable menjadi baris
).link(
    FlattenMTableBatchOp()
        .setSelectedCol("pred_detail")
        .setSchemaStr("ds timestamp, yhat double")
).print()

Langkah selanjutnya