Di tutorial ini, Anda akan mempelajari cara membuat sekumpulan model deret waktu untuk
melakukan beberapa perkiraan deret waktu dengan satu kueri. Anda juga akan mempelajari
cara menerapkan berbagai strategi pelatihan cepat untuk meningkatkan kecepatan
kueri secara signifikan dan cara mengevaluasi akurasi perkiraan. Anda akan menggunakan
data new_york.citibike_trips
.
Data ini berisi informasi tentang perjalanan Citi Bike di Kota New York.
Sebelum membaca tutorial ini, sebaiknya baca Perkiraan deret waktu tunggal dari data Google Analytics.
Tujuan
Dalam tutorial ini, Anda akan menggunakan:
- Pernyataan
CREATE MODEL
: untuk membuat model deret waktu atau kumpulan model deret waktu. - Fungsi
ML.ARIMA_EVALUATE
: untuk mengevaluasi model. - Fungsi
ML.ARIMA_COEFFICIENTS
: untuk memeriksa koefisien model. - Fungsi
ML.EXPLAIN_FORECAST
: untuk mendapatkan berbagai komponen deret waktu (seperti tren musiman dan tren) yang dapat digunakan untuk menjelaskan hasil perkiraan. - Looker Studio: untuk memvisualisasikan hasil perkiraan.
- Opsional: Fungsi
ML.FORECAST
: untuk memperkirakan total kunjungan harian.
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
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
- BigQuery secara otomatis diaktifkan dalam project baru.
Untuk mengaktifkan BigQuery dalam project yang sudah ada, buka
Aktifkan API BigQuery.
Langkah pertama: Buat set data Anda
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.
Langkah kedua (opsional): Visualisasikan deret waktu yang ingin Anda perkirakan
Sebelum membuat model, ada baiknya Anda melihat tampilan input deret waktu Anda. Anda dapat melakukannya dengan Looker Studio.
Dalam kueri berikut, klausa FROM bigquery-public-data.new_york.citibike_trips
menunjukkan bahwa Anda melakukan kueri pada tabel citibike_trips
dalam
set data new_york
.
Dalam pernyataan SELECT
, kueri menggunakan
fungsi EXTRACT
untuk mendapatkan informasi tanggal dari kolom starttime
. Kueri ini menggunakan
klausa COUNT(*)
untuk mendapatkan jumlah total harian perjalanan Citi Bike.
#standardSQL SELECT EXTRACT(DATE from starttime) AS date, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` GROUP BY date
Untuk menjalankan kueri, ikuti langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL SELECT EXTRACT(DATE from starttime) AS date, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` GROUP BY date
Klik Run.
Setelah kueri berjalan, outputnya akan terlihat seperti screenshot berikut. Di screenshot, Anda dapat melihat bahwa deret waktu ini memiliki 1.184 titik data harian, yang mencakup lebih dari 4 tahun. Klik tombol Explore data, lalu Explore with Looker Studio. Looker Studio akan terbuka di tab baru. Selesaikan langkah-langkah berikut di tab baru.
Pada panel Diagram, pilih Diagram deret waktu:
Di panel Data, di bawah panel Diagram, buka bagian Metrik. Tambahkan kolom num_trips dan hapus metrik default Jumlah Catatan:
Setelah Anda menyelesaikan langkah di atas, grafik berikut akan muncul. Grafik ini menunjukkan bahwa input deret waktu memiliki pola mingguan dan tahunan. Deret waktunya juga memiliki pergerakan ke atas.
Langkah ketiga: Buat model deret waktu untuk melakukan perkiraan deret waktu tunggal
Selanjutnya, buat model deret waktu menggunakan data perjalanan NYC Citi Bike.
Kueri GoogleSQL berikut membuat model yang digunakan untuk memperkirakan total perjalanan
sepeda setiap harinya. Klausa CREATE MODEL
membuat dan melatih model bernama bqml_tutorial.nyc_citibike_arima_model
.
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'num_trips' ) AS SELECT EXTRACT(DATE from starttime) AS date, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` GROUP BY date
Klausa
OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
menunjukkan bahwa Anda membuat
model deret waktu berbasis
ARIMA. Secara default,
auto_arima=TRUE
,
sehingga algoritma auto.ARIMA
akan otomatis menyesuaikan hyperparameter dalam
model ARIMA_PLUS
. Algoritma ini sesuai dengan beberapa model kandidat dan memilih
model terbaik dengan
kriteria informasi Akaike (AIC) terendah.
Selain itu, karena defaultnya adalah
data_frequency='AUTO_FREQUENCY'
, proses pelatihan akan otomatis menyimpulkan
frekuensi data dari input deret waktu. Terakhir, pernyataan CREATE MODEL
menggunakan
decompose_time_series=TRUE
secara default, dan pengguna dapat memahami lebih lanjut cara perkiraan deret waktu
dengan mengambil data komponen deret waktu seperti periode
musiman dan efek hari libur.
Jalankan kueri CREATE MODEL
untuk membuat dan melatih model Anda:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'num_trips' ) AS SELECT EXTRACT(DATE from starttime) AS date, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` GROUP BY date
Klik Run.
Kueri membutuhkan waktu sekitar 17 detik untuk selesai, setelah itu model Anda (
nyc_citibike_arima_model
) akan muncul di panel navigasi. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, Anda tidak akan melihat hasil kueri.
Langkah keempat: Perkirakan deret waktu dan visualisasikan hasilnya
Untuk menjelaskan cara perkiraan deret waktu, visualisasikan semua komponen
deret waktu, seperti keadaan musiman dan tren, menggunakan
fungsi
ML.EXPLAIN_FORECAST
.
Untuk melakukannya, ikuti langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL SELECT * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model`, STRUCT(365 AS horizon, 0.9 AS confidence_level))
Klik Run.
Setelah kueri selesai, klik tombol Explore data, lalu klik Explore with Looker Studio. Tab baru akan terbuka di browser. Kemudian, di panel Chart, temukan ikon Diagram deret waktu dan klik ikon tersebut, seperti screenshot berikut.
Di panel Data, lakukan langkah berikut:
- Di bagian Dimensi Rentang Tanggal, pilih
time_series_timestamp (Date)
. - Di bagian Dimensi, pilih
time_series_timestamp (Date)
. - Di bagian Metrik, hapus metrik default
Record Count
, dan tambahkan kueri berikut:time_series_data
prediction_interval_lower_bound
prediction_interval_upper_bound
trend
seasonal_period_yearly
seasonal_period_weekly
spikes_and_dips
step_changes
- Di bagian Dimensi Rentang Tanggal, pilih
Di panel Gaya, scroll ke bawah ke opsi Data yang Hilang dan gunakan Jeda Baris, bukan Baris ke Nol.
Setelah Anda melakukan langkah-langkah ini, grafik berikut akan muncul di panel kiri.
Langkah kelima: Perkirakan beberapa deret waktu secara bersamaan
Selanjutnya, Anda mungkin ingin memperkirakan jumlah total perjalanan harian yang dimulai dari
stasiun Citi Bike yang berbeda. Untuk melakukannya, Anda harus memperkirakan beberapa deret waktu.
Anda dapat menulis beberapa kueri
CREATE MODEL
,
tetapi itu mungkin membosankan dan memakan waktu, terutama jika
Anda memiliki banyak deret waktu.
Untuk meningkatkan proses ini, BigQuery ML memungkinkan Anda membuat serangkaian model deret waktu untuk memperkirakan beberapa deret waktu dengan satu kueri. Selain itu, semua model deret waktu dicocokkan secara bersamaan.
Dalam kueri GoogleSQL berikut, klausa
CREATE MODEL
membuat dan melatih kumpulan model bernama
bqml_tutorial.nyc_citibike_arima_model_group
.
#standardSQL 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
Klausa OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
menunjukkan bahwa Anda membuat kumpulan
model ARIMA_PLUS
deret waktu
berbasis ARIMA. Selain time_series_timestamp_col
dan
time_series_data_col
, Anda harus menyertakan time_series_id_col
, yang digunakan untuk
menganotasi berbagai input deret waktu. Opsi auto_arima_max_order
mengontrol
ruang penelusuran untuk penyesuaian hyperparameter dalam algoritma auto.ARIMA.
Terakhir, pernyataan CREATE MODEL
menggunakan
decompose_time_series=TRUE
secara default, dan pengguna dapat lebih memahami bagaimana deret waktu dianalisis di
pipeline pelatihan dengan mengambil hasil dekomposisi.
Klausa SELECT ... FROM ... GROUP BY ...
menunjukkan bahwa Anda membentuk
beberapa deret waktu; masing-masing dikaitkan dengan
start_station_name
yang berbeda. Agar mudah, gunakan klausa WHERE ... LIKE ...
untuk
membatasi stasiun awal hanya untuk stasiun dengan Central Park
di namanya.
Untuk menjalankan kueri CREATE MODEL
untuk membuat dan melatih model Anda, ikuti
langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL 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
Klik Run.
Kueri ini selesai dalam sekitar 24 detik, setelah itu model Anda (
nyc_citibike_arima_model_group
) akan muncul di panel navigasi. Karena kueri ini menggunakan pernyataanCREATE MODEL
, Anda tidak akan melihat hasil kueri.
Langkah keenam: Periksa metrik evaluasi dari kumpulan model deret waktu
Setelah membuat model, Anda dapat menggunakan fungsi
ML.ARIMA_EVALUATE
untuk melihat metrik evaluasi dari semua model yang dibuat.
Dalam kueri GoogleSQL berikut, klausa FROM
menggunakan fungsi
ML.ARIMA_EVALUATE
terhadap model Anda, bqml_tutorial.nyc_citibike_arima_model_group
. Metrik
evaluasi hanya bergantung pada input pelatihan, jadi model Anda adalah
satu-satunya input.
Untuk menjalankan kueri
ML.ARIMA_EVALUATE
, ikuti langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL SELECT * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`)
Klik Run.
Kueri ini selesai dalam waktu kurang dari satu detik. Setelah kueri selesai, klik tab Results di bawah area teks kueri. Hasilnya akan terlihat seperti berikut:
Hasilnya mencakup kolom berikut:
start_station_name
non_seasonal_p
non_seasonal_d
non_seasonal_q
has_drift
log_likelihood
AIC
variance
seasonal_periods
has_holiday_effect
has_spikes_and_dips
has_step_changes
error_message
start_station_name
, kolom pertama, menganotasi deret waktu yang dicocokkan dengan setiap model deret waktu. Ini sama dengan yang disertakantime_series_id_col
.Empat kolom berikut (
non_seasonal_p
,non_seasonal_d
,non_seasonal_q
, danhas_drift
) menentukan model ARIMA dalam pipeline pelatihan. Tiga metrik setelahnya (log_likelihood
,AIC
, danvariance
) relevan dengan proses pencocokan model ARIMA. Proses pencocokan menentukan model ARIMA terbaik dengan menggunakan algoritmaauto.ARIMA
, satu untuk setiap deret waktu.Kolom
has_holiday_effect
,has_spikes_and_dips
, danhas_step_changes
hanya diisi jikadecompose_time_series=TRUE
.Kolom
seasonal_periods
adalah pola musiman dalam input deret waktu. Setiap deret waktu mungkin memiliki pola musiman yang berbeda. Misalnya, dari gambar, Anda dapat melihat bahwa satu deret waktu memiliki pola tahunan, sementara yang lain tidak.
Langkah ketujuh: Periksa koefisien model Anda
Fungsi ML.ARIMA_COEFFICIENTS
digunakan untuk mendapatkan koefisien model dari model ARIMA_PLUS
Anda,
bqml_tutorial.nyc_citibike_arima_model_group
. Satu-satunya input ML.ARIMA_COEFFICIENTS
adalah model.
Untuk menjalankan kueri ML.ARIMA_COEFFICIENTS
, ikuti langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`)
Klik Run.
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat mirip dengan screenshot berikut:
Hasilnya mencakup kolom berikut:
start_station_name
ar_coefficients
ma_coefficients
intercept_or_drift
start_station_name
, kolom pertama, menganotasi deret waktu yang dicocokkan dengan setiap model deret waktu.ar_coefficients
menunjukkan koefisien model bagian autoregresif (AR) dari model ARIMA. Demikian pula,ma_coefficients
menunjukkan koefisien model bagian rata-rata bergerak (MA). Keduanya adalah array yang panjangnya sama dengannon_seasonal_p
dannon_seasonal_q
secara berurutan.intercept_or_drift
adalah istilah konstan dalam model ARIMA.
Langkah kedelapan: Gunakan model Anda untuk memperkirakan beberapa deret waktu secara bersamaan dengan penjelasan
Fungsi ML.EXPLAIN_FORECAST
memperkirakan nilai deret waktu yang akan datang dengan interval prediksi menggunakan
model Anda, bqml_tutorial.nyc_citibike_arima_model_group
, dan pada saat yang sama
menampilkan semua komponen terpisah deret waktu.
Klausa STRUCT(3 AS horizon, 0.9 AS confidence_level)
menunjukkan bahwa
kueri memperkirakan tiga titik waktu di masa mendatang dan menghasilkan interval prediksi
dengan keyakinan 90%. Fungsi ML.EXPLAIN_FORECAST
menggunakan model, serta
beberapa argumen opsional.
Untuk menjalankan kueri ML.EXPLAIN_FORECAST
, ikuti langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL SELECT * FROM ML.EXPLAIN_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:
Hasilnya mencakup kolom berikut:
start_station_name
time_series_timestamp
time_series_type
time_series_data
time_series_adjusted_data
standard_error
confidence_level
prediction_interval_lower_bound
prediction_interval_lower_bound
trend
seasonal_period_yearly
seasonal_period_quarterly
seasonal_period_monthly
seasonal_period_weekly
seasonal_period_daily
holiday_effect
spikes_and_dips
step_changes
residual
Baris output diurutkan berdasarkan
start_station_name
, dan untuk setiapstart_station_name
, baris output diurutkan sesuai dengan kronologi ditime_series_timestamp
. Berbagai komponen dicantumkan sebagai kolom output. Untuk mengetahui informasi selengkapnya, lihat definisiML.EXPLAIN_FORECAST
.
(Opsional) Langkah kesembilan: Gunakan model Anda untuk memperkirakan beberapa deret waktu secara bersamaan
Fungsi ML.FORECAST
juga dapat digunakan untuk memperkirakan nilai deret waktu yang akan datang dengan
interval prediksi menggunakan model Anda,
bqml_tutorial.nyc_citibike_arima_model_group
.
Seperti ML.EXPLAIN_FORECAST
, klausa STRUCT(3 AS horizon, 0.9 AS confidence_level)
menunjukkan bahwa untuk setiap deret waktu, kueri memperkirakan tiga titik waktu
di masa mendatang, dan menghasilkan interval prediksi dengan keyakinan 90%.
Fungsi ML.FORECAST
menggunakan model, serta beberapa argumen
opsional.
Untuk menjalankan kueri ML.FORECAST
, ikuti langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Compose new query.
Masukkan kueri GoogleSQL berikut di area teks Query editor.
#standardSQL 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:
Hasilnya mencakup kolom berikut:
start_station_name
forecast_timestamp
forecast_value
standard_error
confidence_level
prediction_interval_lower_bound
prediction_interval_upper_bound
confidence_interval_lower_bound
(akan segera tidak digunakan lagi)confidence_interval_upper_bound
(akan segera tidak digunakan lagi)
Kolom pertama,
start_station_name
, menganotasi deret waktu yang dicocokkan dengan setiap model deret waktu. Setiapstart_station_name
memiliki jumlah baris horizon dalam hasil perkiraannya.Untuk setiap
start_station_name
, baris output diurutkan sesuai dengan kronologi diforecast_timestamp
. Dalam perkiraan deret waktu, prediksi interval, yang ditangkap dari batas bawah dan atas, sama pentingnya denganforecast_value
.forecast_value
adalah titik tengah dari interval prediksi. Interval prediksi bergantung padastandard_error
danconfidence_level
.
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:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Pelajari cara mempercepat ARIMA_PLUS untuk mengaktifkan perkiraan 1 juta deret waktu dalam beberapa jam
- Untuk mempelajari machine learning lebih lanjut, lihat Kursus singkat machine learning.
- Untuk ringkasan tentang BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk mempelajari konsol Google Cloud lebih lanjut, lihat Menggunakan konsol Google Cloud.