Memperkirakan deret waktu hierarkis dengan model univariat
Tutorial ini mengajarkan cara menggunakan model deret waktu univariat untuk memperkirakan deret waktu hierarkis. Fungsi ini memperkirakan nilai mendatang untuk kolom tertentu, berdasarkan nilai historis untuk kolom tersebut, dan juga menghitung nilai gabungan untuk kolom tersebut untuk satu atau beberapa dimensi yang diinginkan.
Nilai perkiraan dihitung untuk setiap titik waktu, untuk setiap nilai dalam satu atau beberapa kolom yang menentukan dimensi yang diinginkan. Misalnya, jika Anda ingin memperkirakan insiden traffic harian dan menentukan kolom dimensi yang berisi data status, data yang diprediksi akan berisi nilai untuk setiap hari untuk Status A, lalu nilai untuk setiap hari untuk Status B, dan seterusnya. Jika Anda ingin memperkirakan insiden traffic harian dan kolom dimensi tertentu yang berisi data negara bagian dan kota, data yang diprediksi akan berisi nilai untuk setiap hari untuk Negara Bagian A dan Kota A, lalu nilai untuk setiap hari untuk Negara Bagian A dan Kota B, dan seterusnya. Dalam model deret waktu hierarkis, rekonsiliasi hierarkis digunakan untuk menggabungkan dan merekonsiliasi setiap deret waktu turunan dengan induknya. Misalnya, jumlah nilai perkiraan untuk semua kota di Negara Bagian A harus sama dengan nilai perkiraan untuk Negara Bagian A.
Dalam tutorial ini, Anda akan membuat dua model deret waktu berdasarkan data yang sama, satu yang menggunakan perkiraan hierarkis dan satu lagi yang tidak. Dengan begitu, Anda dapat membandingkan hasil yang ditampilkan oleh model.
Tutorial ini menggunakan data dari tabel
bigquery-public-data.iowa_liquor.sales.sales
publik. Tabel ini berisi informasi untuk lebih dari 1 juta produk minuman keras di
berbagai toko menggunakan data penjualan minuman keras publik Iowa.
Sebelum membaca tutorial ini, sebaiknya baca Membuat perkiraan beberapa deret waktu dengan model univariat.
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.
Tujuan
Dalam tutorial ini, Anda akan menggunakan:
- Membuat beberapa model deret waktu dan beberapa model deret waktu hierarkis untuk memperkirakan nilai penjualan botol menggunakan pernyataan
CREATE MODEL
. - Mengambil nilai perkiraan penjualan botol dari model menggunakan
fungsi
ML.FORECAST
.
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.
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
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
Aktifkan API BigQuery.
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.
Membuat model deret waktu
Buat model deret waktu menggunakan data penjualan minuman keras Iowa.
Kueri GoogleSQL berikut membuat model yang memperkirakan jumlah total botol harian yang terjual pada tahun 2015 di county Polk, Linn, dan Scott.
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
dari pernyataan CREATE MODEL
untuk menentukan satu atau beberapa kolom dalam data input
yang ingin Anda dapatkan prakiraan. 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.
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, yaitu model dengan
kriteria informasi Akaike (AIC) terendah.
Menetapkan
opsi holiday_region
ke US
memungkinkan pemodelan yang lebih akurat pada titik waktu hari libur Amerika Serikat
tersebut jika ada pola hari libur Amerika Serikat dalam deret waktu.
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.liquor_forecast` OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS', TIME_SERIES_TIMESTAMP_COL = 'date', TIME_SERIES_DATA_COL = 'total_bottles_sold', TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'], HOLIDAY_REGION = 'US') AS SELECT store_number, zip_code, city, county, date, SUM(bottles_sold) AS total_bottles_sold FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31') AND county IN ('POLK', 'LINN', 'SCOTT') GROUP BY store_number, date, city, zip_code, county;
Kueri ini memerlukan waktu sekitar 37 detik untuk diselesaikan, setelah itu model
liquor_forecast
akan muncul di panel Explorer. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, tidak ada hasil kueri.
Menggunakan model untuk memperkirakan data
Perkiraan nilai deret waktu mendatang menggunakan fungsi
ML.FORECAST
.
Dalam kueri berikut, klausa STRUCT(20 AS horizon, 0.8 AS confidence_level)
menunjukkan bahwa kueri memperkirakan 20 titik waktu di masa mendatang, dan menghasilkan interval prediksi dengan tingkat keyakinan 80%.
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.liquor_forecast`, STRUCT(20 AS horizon, 0.8 AS confidence_level)) ORDER BY store_number, county, city, zip_code, forecast_timestamp;
Hasilnya akan terlihat seperti berikut:
Output dimulai dengan data perkiraan untuk deret waktu pertama;
store_number=2190
,zip_code=50314
,city=DES MOINES
,county=POLK
. Saat men-scroll data, Anda akan melihat perkiraan untuk setiap deret waktu unik berikutnya. Untuk membuat perkiraan yang menggabungkan total untuk dimensi yang berbeda, seperti perkiraan untuk kabupaten tertentu, Anda harus membuat perkiraan hierarkis.
Membuat model deret waktu hierarkis
Buat perkiraan deret waktu hierarkis, menggunakan data penjualan minuman keras Iowa.
Kueri GoogleSQL berikut membuat model yang menghasilkan perkiraan hierarkis untuk jumlah total botol yang terjual setiap hari pada tahun 2015 di Polk, Linn, dan Scott County.
Dalam kueri berikut, opsi HIERARCHICAL_TIME_SERIES_COLS
dalam
pernyataan CREATE MODEL
menunjukkan bahwa Anda membuat perkiraan hierarkis
berdasarkan kumpulan kolom yang Anda tentukan. Setiap kolom ini digabungkan
dan digabungkan. Misalnya, dari kueri sebelumnya, hal ini berarti bahwa
nilai kolom store_number
digabungkan untuk menampilkan perkiraan untuk setiap nilai county
,
city
, dan zip_code
. Secara terpisah, nilai zip_code
dan store_number
juga digabungkan untuk menampilkan perkiraan untuk setiap nilai county
dan city
.
Urutan kolom penting karena menentukan struktur hierarki.
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.liquor_forecast_hierarchical` OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS', TIME_SERIES_TIMESTAMP_COL = 'date', TIME_SERIES_DATA_COL = 'total_bottles_sold', TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'], HIERARCHICAL_TIME_SERIES_COLS = ['zip_code', 'store_number'], HOLIDAY_REGION = 'US') AS SELECT store_number, zip_code, city, county, date, SUM(bottles_sold) AS total_bottles_sold FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31') AND county IN ('POLK', 'LINN', 'SCOTT') GROUP BY store_number, date, city, zip_code, county;
Kueri ini memerlukan waktu sekitar 45 detik untuk diselesaikan, setelah itu model
bqml_tutorial.liquor_forecast_hierarchical
akan muncul di panel Explorer. Karena kueri menggunakan pernyataanCREATE MODEL
untuk membuat model, tidak ada hasil kueri.
Menggunakan model hierarki untuk memperkirakan data
Ambil data perkiraan hierarki dari model menggunakan fungsi ML.FORECAST
.
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.liquor_forecast_hierarchical`, STRUCT(30 AS horizon, 0.8 AS confidence_level)) WHERE city = 'LECLAIRE' ORDER BY county, city, zip_code, store_number, forecast_timestamp;
Hasilnya akan terlihat seperti berikut:
Perhatikan cara perkiraan gabungan ditampilkan untuk kota LeClaire,
store_number=NULL
,zip_code=NULL
,city=LECLAIRE
,county=SCOTT
. Saat melihat baris lainnya, perhatikan perkiraan untuk subgrup lainnya. Misalnya, gambar berikut menunjukkan perkiraan yang digabungkan untuk kode pos52753
,store_number=NULL
,zip_code=52753
,city=LECLAIRE
,county=SCOTT
:
Pembersihan
Agar tidak dikenai biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
- 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.
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 membuat perkiraan deret waktu tunggal dengan model univariat
- Pelajari cara membuat perkiraan beberapa deret waktu dengan model univariat
- Pelajari cara menskalakan model univariat saat memperkirakan beberapa deret waktu di banyak baris.
- Pelajari cara membuat perkiraan deret waktu tunggal dengan model multi-variasi
- Untuk ringkasan BigQuery ML, lihat Pengantar AI dan ML di BigQuery.