Prophet adalah model perkiraan yang dikelola oleh Meta. Lihat makalah Prophet untuk mengetahui detail algoritma dan dokumentasi guna mengetahui informasi selengkapnya tentang library.
Seperti BigQuery ML ARIMA_PLUS, Prophet berupaya mengurai setiap deret waktu menjadi tren, musim, dan liburan, sehingga menghasilkan perkiraan menggunakan agregasi prediksi model ini. Namun, perbedaan pentingnya adalah ARIMA+ BQML menggunakan ARIMA untuk membuat model komponen tren, sementara Prophet mencoba menyesuaikan kurva menggunakan model linear atau piecewise logistic.
Google Cloud menawarkan pipeline untuk melatih model Prophet dan pipeline untuk mendapatkan prediksi batch dari model Prophet. Kedua pipeline tersebut merupakan instance Vertex AI Pipelines dari Google Cloud Pipeline Components (GCPC).
Integrasi Prophet dengan Vertex AI memungkinkan Anda melakukan hal berikut:
- Gunakan pemisahan data dan strategi windowing Vertex AI.
- Membaca data dari tabel BigQuery atau CSV yang disimpan di Cloud Storage. Vertex AI mengharapkan setiap baris memiliki format yang sama dengan Perkiraan Vertex AI.
Meskipun Prophet adalah model multi-variasi, Vertex AI hanya mendukung versi univariat-nya.
Untuk mempelajari akun layanan yang digunakan oleh alur kerja ini, lihat Akun layanan untuk Tabular Workflows.
API Alur Kerja
Alur kerja ini menggunakan API berikut:
- Vertex AI
- Dataflow
- BigQuery
- Cloud Storage
Melatih model dengan Prophet
Prophet dirancang untuk satu deret waktu. Vertex AI menggabungkan data berdasarkan ID deret waktu dan melatih model Prophet untuk setiap deret waktu. Pipeline pelatihan model melakukan penyesuaian hyperparameter menggunakan penelusuran grid dan logika backtesting bawaan Prophet.
Untuk mendukung beberapa deret waktu, pipeline menggunakan Tugas Pelatihan Kustom Vertex AI dan Dataflow untuk melatih beberapa model Prophet secara paralel. Secara keseluruhan, jumlah model yang dilatih adalah perkalian dari jumlah deret waktu dan jumlah uji coba penyesuaian hyperparameter.
Kode contoh berikut menunjukkan cara menjalankan pipeline pelatihan model Prophet:
job = aiplatform.PipelineJob(
...
template_path=train_job_spec_path,
parameter_values=train_parameter_values,
...
)
job.run(service_account=SERVICE_ACCOUNT)
Parameter service_account
opsional di job.run()
memungkinkan Anda menetapkan
akun layanan Vertex AI Pipelines ke akun pilihan Anda.
Pipeline dan nilai parameter ditentukan oleh fungsi berikut.
(
train_job_spec_path,
train_parameter_values,
) = utils.get_prophet_train_pipeline_and_parameters(
...
)
Berikut adalah subset parameter get_prophet_train_pipeline_and_parameters
:
Nama parameter | Jenis | Definisi |
---|---|---|
project |
String | ID project Anda. |
location |
String | Region Anda. |
root_dir |
String | Lokasi Cloud Storage untuk menyimpan output. |
target_column |
String | Kolom (nilai) yang Anda inginkan untuk diprediksi oleh model ini. |
time_column |
String | Kolom waktu. Anda harus menentukan kolom waktu dan kolom tersebut harus memiliki nilai untuk setiap baris. Kolom waktu menunjukkan waktu saat pengamatan tertentu dilakukan. |
time_series_identifier_column |
String | Kolom ID deret waktu. Anda harus menentukan kolom ID deret waktu dan kolom tersebut harus memiliki nilai untuk setiap baris. Data pelatihan perkiraan biasanya mencakup beberapa deret waktu, dan ID ini memberi tahu Vertex AI pada deret waktu mana pengamatan tertentu dalam data pelatihan dilakukan. Semua baris dalam deret waktu tertentu memiliki nilai yang sama dalam kolom ID deret waktu. Beberapa kode deret waktu yang umum dapat berupa ID produk, ID toko, atau region. Model perkiraan dapat dilatih pada satu deret waktu, dengan nilai yang identik untuk semua baris dalam kolom ID deret waktu. Namun, Vertex AI lebih sesuai untuk data pelatihan yang berisi dua deret waktu atau lebih. Untuk hasil terbaik, gunakan minimal 10 deret waktu untuk setiap kolom yang Anda gunakan untuk melatih model. |
data_granularity_unit |
String | Unit yang akan digunakan untuk perincian data pelatihan serta horizon perkiraan dan periode konteks Anda. Dapat berupa minute , hour , day , week , month , atau year . Pelajari cara memilih perincian data. |
data_source_csv_filenames |
String | URI untuk CSV yang disimpan di Cloud Storage. |
data_source_bigquery_table_path |
String | URI untuk tabel BigQuery. |
forecast_horizon |
Bilangan Bulat | Horizon perkiraan menentukan seberapa jauh model akan memperkirakan nilai target untuk setiap baris data prediksi pada masa mendatang. Horizon perkiraan ditentukan dalam unit perincian data. Pelajari lebih lanjut. |
optimization_objective |
String | Tujuan pengoptimalan untuk model. Pelajari lebih lanjut. |
max_num_trials |
Bilangan Bulat | Jumlah maksimum uji coba penyesuaian yang akan dilakukan per deret waktu. |
Parameter Dataflow
Berikut adalah subset parameter get_prophet_train_pipeline_and_parameters
untuk penyesuaian Dataflow:
Nama parameter | Jenis | Definisi |
---|---|---|
trainer_dataflow_machine_type |
String | Jenis mesin Dataflow yang akan digunakan untuk pelatihan. |
trainer_dataflow_max_num_workers |
Bilangan Bulat | Jumlah maksimum worker Dataflow yang akan digunakan untuk pelatihan. |
evaluation_dataflow_machine_type |
String | Jenis mesin Dataflow yang akan digunakan untuk evaluasi. |
evaluation_dataflow_max_num_workers |
Bilangan Bulat | Jumlah maksimum worker Dataflow yang akan digunakan untuk evaluasi. |
dataflow_service_account |
String | Akun layanan kustom yang akan menjalankan tugas Dataflow. Tugas Dataflow dapat dikonfigurasi untuk menggunakan IP pribadi dan subnet VPC tertentu. Parameter ini berfungsi sebagai pengganti untuk akun layanan worker Dataflow default. |
Karena tugas pelatihan Prophet berjalan di Dataflow, waktu startup awal
akan berlangsung selama 5 - 7 menit. Untuk mengurangi runtime tambahan, Anda dapat meningkatkan
atau menyebarkan skala. Misalnya, untuk meningkatkan skala, Anda dapat mengubah
jenis mesin dari n1-standard-1
menjadi e2-highcpu-8
. Untuk menyebarkan skala, Anda
dapat meningkatkan jumlah worker dari 1
menjadi 200
.
Parameter pembagian data
Pipeline pelatihan menawarkan opsi berikut untuk membagi data Anda:
Pembagian data | Deskripsi | Parameter |
---|---|---|
Pembagian default | Vertex AI secara acak memilih 80% baris data Anda untuk set pelatihan, 10% untuk set validasi, dan 10% untuk set pengujian. Vertex AI menggunakan kolom Waktu untuk menentukan urutan kronologis baris data. | Tidak ada |
Pembagian pecahan | Vertex AI menggunakan nilai yang Anda berikan untuk mempartisi data Anda ke dalam set pelatihan, set validasi, dan set pengujian. Vertex AI menggunakan kolom Waktu untuk menentukan urutan kronologis baris data. |
|
Pembagian stempel waktu | Vertex AI menggunakan nilai training_fraction , validation_fraction , dan test_fraction untuk mempartisi data Anda ke dalam set pelatihan, set validasi, dan set pengujian. Vertex AI menggunakan kolom timestamp_split_key untuk menentukan urutan kronologis baris data. |
|
Pembagian manual (yang telah ditentukan) | Vertex AI membagi data menggunakan nilai TRAIN, VALIDATE, atau TEST di kolom predefined_split_key . |
|
Tentukan parameter pembagian data di get_prophet_train_pipeline_and_parameters
sebagai berikut:
Nama parameter | Jenis | Definisi |
---|---|---|
predefined_split_key |
String | Nama kolom yang berisi nilai TRAIN, VALIDATE, atau TEST. Tetapkan nilai ini jika Anda menggunakan pembagian manual (yang telah ditentukan). |
training_fraction |
Float | Persentase data yang akan ditetapkan ke set pelatihan. Tetapkan nilai ini jika Anda menggunakan pembagian pecahan atau pembagian stempel waktu. |
validation_fraction |
Float | Persentase data yang akan ditetapkan ke set validasi. Tetapkan nilai ini jika Anda menggunakan pembagian pecahan atau pembagian stempel waktu. |
test_fraction |
Float | Persentase data yang akan ditetapkan ke set pengujian. Tetapkan nilai ini jika Anda menggunakan pembagian pecahan atau pembagian stempel waktu. |
timestamp_split_key |
String | Nama kolom yang berisi stempel waktu untuk pembagian data. Tetapkan nilai ini jika Anda menggunakan pembagian stempel waktu. |
Parameter periode
Vertex AI menghasilkan periode perkiraan dari data input menggunakan strategi
periode berkelanjutan. Jika Anda tidak menetapkan parameter periode, Vertex AI akan menggunakan
strategi Jumlah dengan nilai maksimum default 100,000,000
. Pipeline
pelatihan menawarkan strategi periode berkelanjutan berikut:
Strategi Periode Berkelanjutan | Deskripsi | Parameter |
---|---|---|
Jumlah |
Jumlah periode yang dihasilkan oleh Vertex AI tidak boleh melebihi
jumlah maksimum yang disediakan pengguna. Jika jumlah baris dalam set data input kurang
dari jumlah maksimum periode, setiap baris akan digunakan untuk membuat periode.
Jika tidak, Vertex AI akan melakukan pengambilan sampel acak untuk memilih baris.
Nilai default untuk jumlah maksimum periode adalah 100,000,000 .
Jumlah maksimum periode tidak boleh melebihi 100,000,000 .
|
window_max_count |
Jangka (stride) |
Vertex AI menggunakan satu dari setiap X baris input untuk menghasilkan periode,
hingga maksimum 100.000.000 periode. Opsi ini berguna untuk prediksi musiman atau
berkala. Misalnya, Anda dapat membatasi perkiraan ke satu hari dalam
seminggu dengan menetapkan nilai panjang jangka ke 7 . Nilainya dapat
antara 1 dan 1000 .
|
window_stride_length |
Kolom |
Anda dapat menambahkan kolom ke data input dengan nilai
True atau False . Vertex AI menghasilkan periode
untuk setiap baris input dengan nilai kolom True . Nilai True dan
False dapat ditetapkan dalam urutan apa pun, selama jumlah total baris True
kurang dari 100,000,000 . Nilai Boolean lebih diutamakan, tetapi nilai
string tetap diterima. Nilai string tidak peka huruf besar/kecil.
|
window_column |
Tentukan parameter periode di get_prophet_train_pipeline_and_parameters
sebagai berikut:
Nama parameter | Jenis | Definisi |
---|---|---|
window_column |
String | Nama kolom dengan nilai True dan False . |
window_stride_length |
Bilangan Bulat | Nilai panjang jangka. |
window_max_count |
Bilangan Bulat | Jumlah maksimum periode. |
Membuat prediksi dengan Prophet
Pipeline pelatihan model untuk Prophet Vertex AI membuat satu model Prophet untuk setiap deret waktu dalam data. Pipeline prediksi menggabungkan data input berdasarkan ID deret waktu dan menghitung prediksi secara terpisah untuk setiap deret waktu. Pipeline kemudian memisahkan hasil prediksi agar sesuai dengan format Perkiraan Vertex AI.
Kode contoh berikut menunjukkan cara menjalankan pipeline prediksi Prophet:
job = aiplatform.PipelineJob(
...
template_path=prediction_job_spec_path,
parameter_values=prediction_parameter_values,
...
)
job.run(...)
Pipeline dan nilai parameter ditentukan oleh fungsi berikut.
(
prediction_job_spec_path,
prediction_parameter_values,
) = utils.get_prophet_prediction_pipeline_and_parameters(
...
)
Berikut adalah subset parameter get_prophet_prediction_pipeline_and_parameters
:
Nama parameter | Jenis | Definisi |
---|---|---|
project |
String | ID project Anda. |
location |
String | Region Anda. |
model_name |
String | Nama resource Model. Format string sebagai berikut: projects/{project}/locations/{location}/models/{model} . |
time_column |
String | Kolom waktu. Anda harus menentukan kolom waktu dan kolom tersebut harus memiliki nilai untuk setiap baris. Kolom waktu menunjukkan waktu saat pengamatan tertentu dilakukan. |
time_series_identifier_column |
String | Kolom ID deret waktu. Anda harus menentukan kolom ID deret waktu dan kolom tersebut harus memiliki nilai untuk setiap baris. Data pelatihan perkiraan biasanya mencakup beberapa deret waktu, dan ID ini memberi tahu Vertex AI pada deret waktu mana pengamatan tertentu dalam data pelatihan dilakukan. Semua baris dalam deret waktu tertentu memiliki nilai yang sama dalam kolom ID deret waktu. Beberapa kode deret waktu yang umum dapat berupa ID produk, ID toko, atau region. Model perkiraan dapat dilatih pada satu deret waktu, dengan nilai yang identik untuk semua baris dalam kolom ID deret waktu. Namun, Vertex AI lebih sesuai untuk data pelatihan yang berisi dua deret waktu atau lebih. Untuk hasil terbaik, gunakan minimal 10 deret waktu untuk setiap kolom yang Anda gunakan untuk melatih model. |
target_column |
String | Kolom (nilai) yang Anda inginkan untuk diprediksi oleh model ini. |
data_source_csv_filenames |
String | URI untuk CSV yang disimpan di Cloud Storage. |
data_source_bigquery_table_path |
String | URI untuk tabel BigQuery. |
bigquery_destination_uri |
String | URI untuk set data tujuan yang diinginkan. Jika nilai ini tidak ditetapkan, resource akan dibuat di set data baru dalam project. |
machine_type |
String | Jenis mesin yang akan digunakan untuk prediksi batch. |
max_num_workers |
Bilangan Bulat | Jumlah maksimum worker yang akan digunakan untuk prediksi batch. |