Memperkirakan deret waktu hierarkis dengan model univariat ARIMA_PLUS
Tutorial ini mengajarkan cara menggunakan
model deret waktu univariat ARIMA_PLUS
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 diminati.
Nilai yang diperkirakan dihitung untuk setiap titik waktu, untuk setiap nilai dalam satu atau beberapa kolom yang menentukan dimensi yang diminati. Misalnya, jika Anda ingin memprediksi insiden lalu lintas harian dan menentukan kolom dimensi yang berisi data negara bagian, data yang diprediksi akan berisi nilai untuk setiap hari untuk Negara Bagian A, lalu nilai untuk setiap hari untuk Negara Bagian B, dan seterusnya. Jika Anda ingin memprediksi insiden lalu lintas harian dan menentukan kolom dimensi 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 untuk data yang sama, satu yang menggunakan perkiraan hierarkis dan satu 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 Memperkirakan beberapa deret waktu dengan model univariat.
Izin yang Diperlukan
Untuk membuat set data, Anda memerlukan izin IAM
bigquery.datasets.create.Untuk membuat model, Anda memerlukan izin berikut:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.models.getDatabigquery.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 model deret waktu ganda dan model deret waktu hierarkis ganda untuk memperkirakan nilai penjualan botol menggunakan
pernyataan
CREATE MODEL. - Mengambil nilai penjualan botol yang diperkirakan dari model menggunakan
fungsi
ML.FORECAST.
Biaya
Tutorial ini menggunakan komponen Google Cloudyang 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.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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 BigQuery API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.
Membuat set data
Untuk membuat set data BigQuery, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud , buka halaman BigQuery.
Di panel kiri, klik Explorer:

Jika Anda tidak melihat panel kiri, klik Luaskan panel kiri untuk membuka panel.
Di Explorer, luaskan project Anda, lalu klik Set data.
Di halaman Set Data, klik Buat set data.
Di panel Create dataset, lakukan hal berikut:
Untuk Dataset ID, masukkan
bqml_tutorial.Untuk Lokasi data, pilih Amerika Serikat.
Biarkan setelan default yang tersisa seperti apa adanya.
Klik Create dataset.
bq
Untuk membuat set data baru, gunakan
perintah bq mk --dataset.
Buat set data bernama
bqml_tutorialdengan lokasi data yang ditetapkan keUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Pastikan set data telah dibuat:
bq ls
API
Panggil metode datasets.insert
dengan resource set data yang ditentukan:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Membuat model deret waktu
Buat model deret waktu menggunakan data penjualan minuman keras Iowa.
Kueri GoogleSQL berikut membuat model yang memperkirakan total jumlah botol yang terjual setiap hari 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 peroleh perkiraannya. Opsi auto_arima_max_order
dari pernyataan CREATE MODEL mengontrol
ruang penelusuran untuk penyesuaian hyperparameter dalam algoritma auto.ARIMA. Opsi decompose_time_series
pernyataan CREATE MODEL secara default adalah TRUE, sehingga informasi tentang
data deret waktu akan ditampilkan saat Anda mengevaluasi model pada 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, lalu klik Run:
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 membutuhkan waktu sekitar 37 detik untuk diselesaikan, setelah itu Anda dapat mengakses model
liquor_forecast. Karena kueri menggunakan pernyataanCREATE MODELuntuk membuat model, tidak akan ada hasil kueri.
Menggunakan model untuk memperkirakan data
Perkirakan nilai deret waktu di masa 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, lalu klik Run:
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 yang diperkirakan 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 total jumlah 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 sekumpulan kolom yang Anda tentukan. Setiap kolom ini di-roll up dan digabungkan. Misalnya, dari kueri sebelumnya, ini berarti nilai kolom
store_number di-roll up untuk menampilkan perkiraan untuk setiap nilai county,
city, dan zip_code. Secara terpisah, nilai zip_code dan store_number
juga di-roll up 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, lalu klik Run:
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 selesai dalam sekitar 45 detik, setelah itu model
bqml_tutorial.liquor_forecast_hierarchicaldapat diakses di panel Explorer. Karena kueri menggunakan pernyataanCREATE MODELuntuk membuat model, tidak akan ada hasil kueri.
Menggunakan model hierarkis untuk memperkirakan data
Ambil data perkiraan hierarkis 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, lalu klik Run:
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 prakiraan gabungan ditampilkan untuk kota LeClaire,
store_number=NULL,zip_code=NULL,city=LECLAIRE,county=SCOTT. Saat Anda melihat baris lainnya, perhatikan perkiraan untuk subgrup lainnya. Misalnya, gambar berikut menunjukkan prakiraan yang digabungkan untuk kode pos52753,store_number=NULL,zip_code=52753,city=LECLAIRE,county=SCOTT:
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 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 konsolGoogle 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 resources.
- 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 berikutnya
- Pelajari cara memperkirakan deret waktu tunggal dengan model univariat
- Pelajari cara memperkirakan beberapa deret waktu dengan model univariat
- Pelajari cara menskalakan model univariat saat memperkirakan beberapa deret waktu di banyak baris.
- Pelajari cara memperkirakan deret waktu tunggal dengan model multivariat
- Untuk ringkasan BigQuery ML, lihat Pengantar AI dan ML di BigQuery.