Dalam tutorial ini, Anda akan mempelajari cara membuat model deret waktu untuk melakukan satu perkiraan deret waktu menggunakan tabel contoh google_analytics_sample.ga_sessions
.
Tabel ga_sessions
berisi informasi tentang sepotong data sesi yang dikumpulkan oleh Google Analytics 360 dan dikirim ke BigQuery.
Tujuan
Dalam tutorial ini, Anda akan menggunakan:
- Pernyataan
CREATE MODEL
: untuk membuat model deret waktu. - Fungsi
ML.ARIMA_EVALUATE
: untuk mengevaluasi model. - Fungsi
ML.ARIMA_COEFFICIENTS
: untuk memeriksa koefisien model. - Fungsi
ML.FORECAST
: untuk memperkirakan total kunjungan harian. - 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.
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, sebaiknya lihat tampilan deret waktu input Anda. Anda dapat melakukannya menggunakan Looker Studio.
Dalam kueri GoogleSQL berikut, klausa FROM bigquery-public-data.google_analytics_sample.ga_sessions_*
menunjukkan bahwa Anda membuat kueri tabel ga_sessions_*
di set data google_analytics_sample
. Tabel ini adalah
tabel yang dipartisi.
Dalam pernyataan SELECT
, kueri akan mengurai kolom date
dari tabel
input menjadi jenis TIMESTAMP
dan mengganti namanya menjadi parsed_date
. Kueri menggunakan
klausa SUM(...)
dan klausa GROUP BY date
untuk mengumpulkan
totals.visits
setiap hari.
#standardSQL SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` 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 PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date
Klik Run.
Kueri membutuhkan waktu sekitar 7 detik untuk menyelesaikannya. Setelah kueri ini dijalankan, outputnya akan mirip dengan screenshot berikut. Di screenshot, Anda bisa melihat bahwa deret waktu ini memiliki 366 titik data. 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 Chart, pilih Time series chart:
Pada panel Data, di bawah panel Chart, buka bagian Metric. Tambahkan kolom total_visits, lalu hapus metrik default Record Count. Hal ini ditunjukkan dalam gambar berikut:
Setelah Anda menyelesaikan langkah-langkah ini, plot berikut akan muncul. Plot menunjukkan bahwa deret waktu yang dimasukkan memiliki pola musiman mingguan.
Langkah ketiga: Buat model deret waktu Anda
Selanjutnya, buat model deret waktu menggunakan data Google Analytics 360.
Kueri GoogleSQL berikut akan membuat model yang digunakan untuk memperkirakan totals.visits
.
Klausa CREATE MODEL
membuat dan melatih model bernama bqml_tutorial.ga_arima_model
.
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` 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 algoritme auto.ARIMA
otomatis menyesuaikan hyper-parameter 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 lebih memahami perkiraan deret waktu
dengan mengambil data komponen deret waktu, seperti tren
musiman dan efek liburan.
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.ga_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date
Klik Run.
Kueri membutuhkan waktu sekitar 43 detik untuk diselesaikan, setelah itu model Anda (
ga_arima_model
) akan muncul di panel navigasi. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, Anda tidak akan melihat hasil kueri.
Langkah keempat: Periksa metrik evaluasi dari semua model yang dievaluasi
Setelah membuat model, Anda dapat menggunakan fungsi ML.ARIMA_EVALUATE
untuk melihat metrik evaluasi semua model kandidat yang dievaluasi
selama proses penyesuaian hyperparameter otomatis.
Dalam kueri GoogleSQL berikut, klausa FROM
menggunakan fungsi ML.ARIMA_EVALUATE
terhadap model Anda, bqml_tutorial.ga_arima_model
. Secara default,
kueri ini menampilkan metrik evaluasi dari semua model kandidat.
Untuk menjalankan kueri ML.ARIMA_EVALUATE
, gunakan 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.ga_arima_model`)
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 mirip dengan screenshot berikut:
Hasilnya mencakup kolom berikut:
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
Empat kolom berikut (
non_seasonal_{p,d,q}
danhas_drift
) menentukan model ARIMA dalam pipeline pelatihan. Tiga metrik setelah itu (log_likelihood
,AIC
, danvariance
) relevan dengan proses penyesuaian model ARIMA.Algoritma
auto.ARIMA
terlebih dahulu menggunakan pengujian KPSS untuk menentukan bahwa nilai terbaik untuknon_seasonal_d
adalah 1. Jikanon_seasonal_d
adalah 1, auto.ARIMA kemudian akan melatih 42 model ARIMA kandidat berbeda secara paralel. Perlu diingat bahwa jikanon_seasonal_d
bukan 1, auto.ARIMA akan melatih 21 model kandidat yang berbeda. Dalam contoh ini, ke-42 model kandidat sudah valid. Oleh karena itu, outputnya berisi 42 baris, dengan setiap baris dikaitkan dengan model ARIMA kandidat. Perlu diingat bahwa untuk beberapa deret waktu, beberapa model kandidat tidak valid karena model tersebut tidak dapat dibalik atau tidak diam. Model yang tidak valid ini dikecualikan dari output, yang akan membuat output memiliki kurang dari 42 baris. Model kandidat ini diurutkan oleh AIC dalam urutan menaik. Model di baris pertama memiliki AIC terendah, dan dianggap sebagai model terbaik. Model terbaik ini disimpan sebagai model akhir dan digunakan saat Anda memanggilML.EXPLAIN_FORECAST
,ML.FORECAST
, danML.ARIMA_COEFFICIENTS
seperti yang ditunjukkan pada langkah-langkah berikut.Kolom
seasonal_periods
adalah tentang pola musiman dalam deret waktu input. Hal ini tidak ada hubungannya dengan pemodelan ARIMA karena memiliki nilai yang sama di semua baris output. Laporan ini melaporkan pola mingguan, yang sesuai ekspektasi seperti dijelaskan pada langkah kedua di atas.Kolom
has_holiday_effect
,has_spikes_and_dips
, danhas_step_changes
hanya diisi saatdecompose_time_series=TRUE
. Metrik ini tentang efek liburan, lonjakan dan penurunan, serta perubahan langkah di dalam deret waktu input, yang tidak terkait dengan pemodelan ARIMA. Oleh karena itu, keduanya sama di semua baris output, kecuali untuk model yang gagal tersebut.Kolom
error_message
menunjukkan bahwa kemungkinan error yang terjadi selama proses penyesuaianauto.ARIMA
. Kemungkinan alasannya adalah kolomnon_seasonal_p
,non_seasonal_d
,non_seasonal_q
, danhas_drift
yang dipilih tidak dapat menstabilkan deret waktu. Untuk mengambil kemungkinan pesan error dari semua model kandidat, tetapkanshow_all_candidate_models=true
.
Langkah kelima: Periksa koefisien model Anda
Fungsi ML.ARIMA_COEFFICIENTS
mengambil koefisien model dari model ARIMA_PLUS Anda,
bqml_tutorial.ga_arima_model
. ML.ARIMA_COEFFICIENTS
menggunakan model sebagai satu-satunya input.
Jalankan kueri ML.ARIMA_COEFFICIENTS
:
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.ga_arima_model`)
Klik Run.
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:
Hasilnya mencakup kolom berikut:
ar_coefficients
ma_coefficients
intercept_or_drift
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. Dari outputML.ARIMA_EVALUATE
, model terbaik seperti di baris atas memilikinon_seasonal_p
sebesar 2 dannon_seasonal_q
sebesar 3. Oleh karena itu,ar_coefficients
adalah array length-2 danma_coefficients
adalah array length-3.intercept_or_drift
adalah istilah konstan dalam model ARIMA.
Langkah keenam: Gunakan model Anda untuk memperkirakan deret waktu
Fungsi ML.FORECAST
akan memperkirakan nilai deret waktu di masa mendatang dengan interval prediksi menggunakan
model Anda: bqml_tutorial.ga_arima_model
.
Dalam kueri GoogleSQL berikut, klausa STRUCT(30 AS horizon, 0.8 AS confidence_level)
menunjukkan bahwa kueri memperkirakan 30 titik waktu di masa mendatang, dan menghasilkan interval prediksi dengan tingkat keyakinan 80%. ML.FORECAST
akan menggunakan model, serta
beberapa argumen opsional.
Untuk menjalankan kueri ML.FORECAST
, gunakan 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.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Klik Run.
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:
Hasilnya mencakup kolom berikut:
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)
Baris output diurutkan dalam urutan kronologis
forecast_timestamp
. Dalam perkiraan deret waktu, prediksi interval, yang ditangkap dari batas bawah dan atas, sama pentingnya denganforecast_value
.forecast_value
adalah titik tengah interval prediksi. Interval prediksi bergantung padastandard_error
danconfidence_level
.
Langkah ketujuh: Jelaskan dan visualisasikan hasil perkiraan
Untuk memahami cara deret waktu diperkirakan, dan untuk memvisualisasikan
deret waktu yang diperkirakan bersama dengan deret waktu histori dan semua komponen
terpisah, fungsi ML.EXPLAIN_FORECAST
akan memperkirakan nilai deret waktu di masa mendatang dengan interval prediksi menggunakan model Anda, bqml_tutorial.ga_arima_model
, dan pada saat yang sama menampilkan semua komponen deret waktu yang terpisah.
Seperti fungsi ML.FORECAST
, klausa STRUCT(30 AS horizon, 0.8 AS confidence_level)
menunjukkan bahwa kueri memperkirakan 30 titik waktu di masa mendatang dan menghasilkan interval prediksi dengan keyakinan 80%. Fungsi ML.EXPLAIN_FORECAST
akan 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.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Klik Run.
Kueri ini selesai dalam waktu kurang dari satu detik. Hasilnya akan terlihat seperti berikut:
Hasilnya mencakup kolom berikut:
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 dalam urutan kronologis
time_series_timestamp
. Berbagai komponen dicantumkan sebagai kolom output. Untuk mengetahui informasi selengkapnya, lihat definisiML.EXPLAIN_FORECAST
.Setelah kueri selesai, klik tombol Explore data, lalu klik Explore with Looker Studio. Looker Studio akan terbuka di tab baru.
Pada panel Chart, pilih Time series chart:
Di panel Data, lakukan langkah berikut:
- Di bagian Date Range Dimension, pilih
time_series_timestamp (Date)
. - Di bagian Dimension, pilih
time_series_timestamp (Date)
. - Di bagian Metric, hapus metrik default
Record Count
, dan tambahkan hal berikut:time_series_data
prediction_interval_lower_bound
prediction_interval_upper_bound
trend
seasonal_period_weekly
step_changes
- Di bagian Date Range Dimension, pilih
Di panel Style, scroll ke bawah ke opsi Data yang Hilang dan gunakan Jeda Baris, bukan Baris ke Nol.
Plot berikut akan muncul:
Langkah kedelapan (opsional): Visualisasikan hasil perkiraan tanpa mengaktifkan decompose_time_series
Jika decompose_time_series
disetel ke salah (false) dalam pelatihan ARIMA_PLUS
, Anda dapat menggabungkan deret waktu histori dan perkiraan deret waktu menggunakan klausa UNION ALL
dan fungsi ML.FORECAST
.
Dalam kueri berikut, SQL sebelum klausa UNION ALL
akan membentuk deret waktu
histori. SQL setelah klausa UNION ALL
akan menggunakan fungsi ML.FORECAST
untuk menghasilkan perkiraan deret waktu serta interval
prediksi. Kueri menggunakan kolom yang berbeda untuk history_value
dan forecasted_value
untuk memetakannya dalam warna yang berbeda.
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 history_timestamp AS timestamp, history_value, NULL AS forecast_value, NULL AS prediction_interval_lower_bound, NULL AS prediction_interval_upper_bound FROM ( SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS history_timestamp, SUM(totals.visits) AS history_value FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date ORDER BY date ASC ) UNION ALL SELECT forecast_timestamp AS timestamp, NULL AS history_value, forecast_value, prediction_interval_lower_bound, prediction_interval_upper_bound FROM ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Klik Run.
Setelah kueri selesai, klik tombol Explore data, lalu klik Explore with Looker Studio. Looker Studio akan terbuka di tab baru. Selesaikan langkah-langkah berikut di tab baru.
Pada panel Chart, pilih Time series chart:
Di panel Data, di bawah panel Chart, buka bagian Metric. Tambahkan metrik berikut:
history_value
,forecast_value
,prediction_interval_lower_bound
, danprediction_interval_upper_bound
. Lalu, hapus metrik defaultRecord Count
.Di panel Style, scroll ke bawah ke opsi Missing Data dan gunakan Line Breaks, bukan Line to Zero.
Setelah Anda menyelesaikan langkah-langkah ini, plot berikut akan muncul di panel kiri. Deret waktu histori input berwarna biru, sedangkan deret yang diperkirakan berwarna hijau. Interval prediksi adalah region antara deret batas bawah dan deret batas atas.
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 telah Anda buat.
Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data, tabel, dan semua data.
Di kotak dialog Delete dataset, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (
bqml_tutorial
), lalu klik Delete.
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 melakukan beberapa perkiraan deret waktu dengan satu kueri dari data perjalanan NYC Citi Bike
- Pelajari cara mempercepat ARIMA_PLUS untuk mengaktifkan perkiraan deret waktu 1 juta dalam jam.
- Untuk mempelajari machine learning lebih lanjut, lihat Kursus singkat machine learning.
- Untuk ringkasan BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk mempelajari konsol Google Cloud lebih lanjut, lihat Menggunakan konsol Google Cloud.