Tutorial ini mengajarkan cara menggunakan model deret waktu univariat untuk memperkirakan nilai mendatang untuk kolom tertentu, berdasarkan nilai historis untuk kolom tersebut.
Tutorial ini memperkirakan beberapa deret waktu. Nilai perkiraan dihitung untuk setiap titik waktu, untuk setiap nilai dalam satu atau beberapa kolom yang ditentukan. Misalnya, jika Anda ingin memperkirakan cuaca dan menentukan kolom yang berisi data kota, data yang diprediksi akan berisi perkiraan untuk semua titik waktu untuk Kota A, lalu nilai yang diprediksi untuk semua titik waktu untuk Kota B, dan seterusnya.
Tutorial ini menggunakan data dari tabel
bigquery-public-data.new_york.citibike_trips
publik. Tabel ini berisi informasi tentang perjalanan Citi Bike di New York City.
Sebelum membaca tutorial ini, sebaiknya baca Membuat perkiraan deret waktu tunggal dengan model univariat.
Tujuan
Tutorial ini memandu Anda menyelesaikan tugas-tugas berikut:
- Membuat model deret waktu untuk memperkirakan jumlah perjalanan sepeda menggunakan
pernyataan
CREATE MODEL
. - Mengevaluasi informasi autoregressive integrated moving average (ARIMA)
dalam model menggunakan
fungsi
ML.ARIMA_EVALUATE
. - Memeriksa koefisien model menggunakan
fungsi
ML.ARIMA_COEFFICIENTS
. - Mengambil informasi perjalanan sepeda yang diprediksi dari model menggunakan
fungsi
ML.FORECAST
. - Mengambil komponen deret waktu, seperti tren musiman dan tren,
menggunakan
fungsi
ML.EXPLAIN_FORECAST
. Anda dapat memeriksa komponen deret waktu ini untuk menjelaskan nilai yang diprediksi.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- BigQuery
- BigQuery ML
Untuk informasi selengkapnya tentang biaya BigQuery, lihat halaman harga BigQuery.
Untuk informasi selengkapnya tentang biaya BigQuery ML, lihat harga BigQuery ML.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- BigQuery secara otomatis diaktifkan dalam project baru.
Untuk mengaktifkan BigQuery dalam project yang sudah ada, buka
Enable the BigQuery API.
Izin yang Diperlukan
- Untuk membuat set data, Anda memerlukan izin
IAM
bigquery.datasets.create
. Untuk membuat resource koneksi, Anda memerlukan izin berikut:
bigquery.connections.create
bigquery.connections.get
Untuk membuat model, Anda memerlukan izin berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.connections.delegate
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.models.getData
bigquery.jobs.create
Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Pengantar IAM.
Membuat set data
Buat set data BigQuery untuk menyimpan model ML Anda:
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, klik nama project Anda.
Klik
View actions > Create dataset.Di halaman Create dataset, lakukan hal berikut:
Untuk Dataset ID, masukkan
bqml_tutorial
.Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).
Set data publik disimpan di
US
multi-region. Untuk mempermudah, simpan set data Anda di lokasi yang sama.Jangan ubah setelan default yang tersisa, lalu klik Create dataset.
Memvisualisasikan data input
Sebelum membuat model, Anda dapat memvisualisasikan data deret waktu input secara opsional untuk mendapatkan gambaran distribusi. Anda dapat melakukannya menggunakan Looker Studio.
Pernyataan SELECT
dari kueri berikut menggunakan
fungsi EXTRACT
untuk mengekstrak informasi tanggal dari kolom starttime
. Kueri ini menggunakan
klausa COUNT(*)
untuk mendapatkan jumlah total harian perjalanan Citi Bike.
Ikuti langkah-langkah berikut untuk memvisualisasikan data deret waktu:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT EXTRACT(DATE from starttime) AS date, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` GROUP BY date;
Setelah kueri selesai, klik Explore data > Explore with Looker Studio. Looker Studio akan terbuka di tab baru. Selesaikan langkah-langkah berikut di tab baru.
Di Looker Studio, klik Sisipkan > Diagram deret waktu.
Di panel Chart, pilih tab Setup.
Di bagian Metric, tambahkan kolom num_trips, dan hapus metrik Record Count default. Diagram yang dihasilkan akan terlihat mirip dengan berikut ini:
Membuat model deret waktu
Anda ingin memperkirakan jumlah perjalanan sepeda untuk setiap
stasiun Citi Bike, yang memerlukan banyak model deret waktu; satu untuk setiap
stasiun Citi Bike yang disertakan dalam data input. Anda dapat menulis beberapa kueri CREATE MODEL
untuk melakukannya, tetapi itu mungkin membosankan dan memakan waktu, terutama jika Anda memiliki banyak deret waktu. Sebagai gantinya, Anda dapat menggunakan
satu kueri untuk membuat dan menyesuaikan serangkaian model deret waktu guna memperkirakan
beberapa deret waktu sekaligus.
Dalam kueri berikut, klausa
OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
menunjukkan bahwa Anda membuat
model deret waktu
berbasis ARIMA. Anda menggunakan
opsi time_series_id_col
dari pernyataan CREATE MODEL
untuk menentukan satu atau beberapa kolom dalam data input
yang ingin Anda dapatkan prediksinya, dalam hal ini stasiun Citi Bike, seperti
yang diwakili oleh kolom start_station_name
. Anda menggunakan klausa WHERE
untuk
membatasi stasiun awal hanya untuk stasiun dengan Central Park
di namanya. Opsi auto_arima_max_order
dalam pernyataan CREATE MODEL
mengontrol ruang penelusuran untuk penyesuaian hyperparameter dalam algoritma auto.ARIMA
. Opsi decompose_time_series
dari pernyataan CREATE MODEL
secara default ditetapkan ke TRUE
, sehingga informasi tentang data deret waktu ditampilkan saat Anda mengevaluasi model di langkah berikutnya.
Ikuti langkah-langkah berikut untuk membuat model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_group` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'num_trips', time_series_id_col = 'start_station_name', auto_arima_max_order = 5 ) AS SELECT start_station_name, EXTRACT(DATE from starttime) AS date, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` WHERE start_station_name LIKE '%Central Park%' GROUP BY start_station_name, date;
Kueri ini selesai dalam sekitar 24 detik, setelah itu model
nyc_citibike_arima_model_group
akan muncul di panel Explorer. Karena kueri ini menggunakan pernyataanCREATE MODEL
, Anda tidak akan melihat hasil kueri.
Kueri ini membuat dua belas model deret waktu, satu untuk masing-masing dari dua belas
stasiun awal Citi Bike dalam data input. Biaya waktu, sekitar 24
detik, hanya 1,4 kali lebih lama daripada membuat satu model deret waktu
karena paralelisme. Namun, jika Anda menghapus
klausa WHERE ... LIKE ...
, akan ada lebih dari 600 deret waktu untuk diperkirakan, dan
tidak akan sepenuhnya diperkirakan secara paralel karena batasan kapasitas
slot. Dalam hal ini, kueri akan memerlukan waktu sekitar 15 menit untuk
selesai. Untuk mengurangi runtime kueri dengan potensi sedikit menurunnya kualitas
model, Anda dapat mengurangi nilai
opsi auto_arima_max_order
menjadi 3
atau 4
dari nilai default 5
.
Tindakan ini akan mengecilkan ruang penelusuran penyesuaian hyperparameter dalam algoritma
auto.ARIMA
. Untuk informasi selengkapnya, lihat
Large-scale time series forecasting best practices
.
Mengevaluasi model
Evaluasi model deret waktu menggunakan fungsi
ML.ARIMA_EVALUATE
. Fungsi ML.ARIMA_EVALUATE
menampilkan metrik evaluasi yang dihasilkan untuk model selama proses penyesuaian hyperparameter otomatis.
Ikuti langkah-langkah berikut untuk mengevaluasi model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`);
Hasilnya akan terlihat seperti berikut:
Kolom
start_station_name
mengidentifikasi kolom data input yang deret waktunya dibuat. Ini adalah kolom yang Anda tentukan dalam opsitime_series_id_col
dari pernyataanCREATE MODEL
.Kolom output
non_seasonal_p
,non_seasonal_d
,non_seasonal_q
, danhas_drift
menentukan model ARIMA dalam pipeline pelatihan. Kolom outputlog_likelihood
,AIC
, danvariance
relevan dengan proses pencocokan model ARIMA.Proses pencocokan menentukan model ARIMA terbaik dengan menggunakan algoritmaauto.ARIMA
, satu untuk setiap deret waktu.Algoritma
auto.ARIMA
menggunakan pengujian KPSS untuk menentukan nilai terbaik untuknon_seasonal_d
, yang dalam hal ini adalah1
. Jikanon_seasonal_d
adalah1
, algoritma auto.ARIMA akan melatih 42 model ARIMA kandidat yang berbeda secara paralel. Dalam contoh ini, ke-42 model kandidat sudah valid, sehingga output berisi 42 baris, satu untuk setiap model ARIMA kandidat; jika beberapa model tidak valid, model tersebut akan dikecualikan dari output. Model kandidat ini ditampilkan dalam urutan menaik oleh AIC. Model di baris pertama memiliki AIC terendah, dan dianggap sebagai model terbaik. Model terbaik ini disimpan sebagai model akhir dan digunakan saat Anda memanggilML.FORECAST
,ML.EVALUATE
, danML.ARIMA_COEFFICIENTS
seperti yang ditunjukkan pada langkah-langkah berikut.Kolom
seasonal_periods
berisi informasi tentang pola musiman yang diidentifikasi dalam data deret waktu. Setiap deret waktu dapat memiliki pola musiman yang berbeda. Misalnya, dari gambar, Anda dapat melihat bahwa satu deret waktu memiliki pola tahunan, sementara yang lainnya tidak.Kolom
has_holiday_effect
,has_spikes_and_dips
, danhas_step_changes
hanya diisi saatdecompose_time_series=TRUE
. Kolom ini juga mencerminkan informasi tentang data deret waktu input, dan tidak terkait dengan pemodelan ARIMA. Kolom ini juga memiliki nilai yang sama di semua baris output.Untuk informasi selengkapnya tentang kolom output, lihat fungsi
ML.ARIMA_EVALUATE
.
Meskipun auto.ARIMA
mengevaluasi banyak kandidat model ARIMA untuk setiap
deret waktu, ML.ARIMA_EVALUATE
secara default hanya menghasilkan output informasi
model terbaik untuk meringkas tabel output. Untuk melihat semua kandidat model,
Anda dapat menetapkan
argumen show_all_candidate_model
fungsi ML.ARIMA_EVALUATE
ke TRUE
.
Memeriksa koefisien model
Periksa koefisien model deret waktu menggunakan
fungsi ML.ARIMA_COEFFICIENTS
.
Ikuti langkah-langkah berikut untuk mengambil koefisien model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`);
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:
Kolom
start_station_name
mengidentifikasi kolom data input yang deret waktunya dibuat. Ini adalah kolom yang Anda tentukan dalam opsitime_series_id_col
dari pernyataanCREATE MODEL
.Kolom output
ar_coefficients
menunjukkan koefisien model bagian autoregresif (AR) dari model ARIMA. Demikian pula, kolom outputma_coefficients
menunjukkan koefisien model bagian rata-rata bergerak (MA) dari model ARIMA. Kedua kolom ini berisi nilai array, yang panjangnya sama dengannon_seasonal_p
dannon_seasonal_q
secara berurutan. Nilaiintercept_or_drift
adalah istilah konstan dalam model ARIMA.Untuk informasi selengkapnya tentang kolom output, lihat fungsi
ML.ARIMA_COEFFICIENTS
.
Menggunakan model untuk memperkirakan data
Perkiraan nilai deret waktu mendatang menggunakan fungsi ML.FORECAST
.
Dalam kueri GoogleSQL berikut, klausa STRUCT(3 AS horizon, 0.9 AS confidence_level)
menunjukkan bahwa kueri memperkirakan 3 titik waktu di masa mendatang, dan menghasilkan interval prediksi dengan tingkat keyakinan 90%.
Ikuti langkah-langkah berikut untuk memperkirakan data dengan model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`, STRUCT(3 AS horizon, 0.9 AS confidence_level))
Klik Run.
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:
Kolom pertama,
start_station_name
, menganotasi deret waktu yang dicocokkan dengan setiap model deret waktu. Setiapstart_station_name
memiliki tiga baris hasil perkiraan, seperti yang ditentukan oleh nilaihorizon
.Untuk setiap
start_station_name
, baris output diurutkan sesuai dengan kronologi berdasarkan nilai kolomforecast_timestamp
. Dalam perkiraan deret waktu, interval prediksi, seperti yang diwakili oleh nilai kolomprediction_interval_lower_bound
danprediction_interval_upper_bound
, sama pentingnya dengan nilai kolomforecast_value
. Nilaiforecast_value
adalah titik tengah interval prediksi. Interval prediksi bergantung pada nilai kolomstandard_error
danconfidence_level
.Untuk informasi selengkapnya tentang kolom output, lihat fungsi
ML.FORECAST
.
Menjelaskan hasil perkiraan
Anda bisa mendapatkan metrik keterjelasan selain data perkiraan menggunakan
fungsi ML.EXPLAIN_FORECAST
. Fungsi ML.EXPLAIN_FORECAST
memperkirakan
nilai deret waktu mendatang dan juga menampilkan semua komponen terpisah dari
deret waktu. Jika Anda hanya ingin menampilkan data perkiraan, gunakan fungsi ML.FORECAST
, seperti yang ditunjukkan dalam Menggunakan model untuk memperkirakan data.
Klausa STRUCT(3 AS horizon, 0.9 AS confidence_level)
yang digunakan dalam
fungsi ML.EXPLAIN_FORECAST
menunjukkan bahwa kueri memperkirakan 3 titik waktu
di masa mendatang dan menghasilkan interval prediksi dengan keyakinan 90%.
Ikuti langkah-langkah berikut untuk menjelaskan hasil model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`, STRUCT(3 AS horizon, 0.9 AS confidence_level));
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:
Ribuan baris pertama yang ditampilkan adalah semua data histori. Anda harus men-scroll hasil untuk melihat data perkiraan.
Baris output diurutkan terlebih dahulu berdasarkan
start_station_name
, lalu secara kronologis berdasarkan nilai kolomtime_series_timestamp
. Dalam perkiraan deret waktu, interval prediksi, seperti yang diwakili oleh nilai kolomprediction_interval_lower_bound
danprediction_interval_upper_bound
, sama pentingnya dengan nilai kolomforecast_value
. Nilaiforecast_value
adalah titik tengah interval prediksi. Interval prediksi bergantung pada nilai kolomstandard_error
danconfidence_level
.Untuk mengetahui informasi selengkapnya tentang kolom output, lihat
ML.EXPLAIN_FORECAST
.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus resource satu per satu.
- Anda dapat menghapus project yang dibuat.
- Atau, Anda dapat menyimpan project dan menghapus set data.
Menghapus set data
Jika project Anda dihapus, semua set data dan semua tabel dalam project akan dihapus. Jika ingin menggunakan kembali project tersebut, Anda dapat menghapus set data yang dibuat dalam tutorial ini:
Jika perlu, buka halaman BigQuery di konsol Google Cloud.
Di navigasi, klik set data bqml_tutorial yang Anda buat.
Klik Hapus set data untuk menghapus set data, tabel, dan semua data.
Pada dialog Hapus set data, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (
bqml_tutorial
), lalu klik Hapus.
Menghapus project Anda
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah selanjutnya
- Pelajari cara membuat perkiraan deret waktu tunggal dengan model univariat
- Pelajari cara membuat perkiraan deret waktu tunggal dengan model multi-variasi
- Pelajari cara menskalakan model univariat saat memperkirakan beberapa deret waktu di banyak baris.
- Pelajari cara membuat perkiraan hierarkis beberapa deret waktu dengan model univariat
- Untuk ringkasan BigQuery ML, lihat Pengantar AI dan ML di BigQuery.