Perkiraan deret waktu hierarkis
Tutorial ini mengajarkan cara membuat deret waktu yang hierarkis. Dalam tutorial ini, Anda akan membuat dua model deret waktu pada data yang sama, salah satunya menggunakan perkiraan hierarkis dan yang tidak. Hal ini memungkinkan Anda membandingkan hasil yang ditampilkan oleh model.
Anda dapat menggunakan data iowa_liquor.sales.sales
untuk melatih model dalam tutorial ini. {i>Dataset<i} ini berisi informasi untuk lebih dari 1 juta produk minuman keras di berbagai toko yang menggunakan data penjualan minuman keras Iowa publik.
Sebelum mengikuti tutorial ini, Anda harus sudah memahami beberapa perkiraan deret waktu. Selesaikan tutorial Perkiraan beberapa deret waktu dari data Google Analytics untuk pengenalan topik ini.
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:
- Pernyataan
CREATE MODEL
: untuk membuat model deret waktu dan model deret waktu hierarkis. - Fungsi
ML.FORECAST
: untuk memperkirakan total penjualan 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.
-
Aktifkan API BigQuery.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
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.
Rekonsiliasi Hierarkis
Perkiraan deret waktu sering kali dapat diperinci atau digabungkan berdasarkan dimensi minat yang berbeda-beda. Ini dikenal sebagai deret waktu hierarki. Misalnya, data sensus yang mengungkapkan total populasi per negara bagian dapat dikelompokkan berdasarkan kota dan kode pos. Sebaliknya, kita dapat menggabungkan data tersebut untuk setiap negara atau benua.
Ada beberapa teknik yang dapat Anda gunakan untuk membuat dan merekonsiliasi perkiraan hierarkis. Ambil contoh berikut, yang menunjukkan struktur hierarki yang disederhanakan untuk penjualan minuman keras di negara bagian Iowa:
Tingkat terendah menunjukkan tingkat toko, diikuti dengan tingkat kode pos, kota, wilayah, dan terakhir berdasarkan negara bagian. Tujuan perkiraan hierarkis adalah untuk memastikan bahwa semua perkiraan di setiap level harus disesuaikan. Misalnya, berdasarkan gambar sebelumnya, ini berarti perkiraan untuk Clive dan Des Moines harus sama dengan perkiraan di Polk. Demikian pula, perkiraan di Polk, Linn, dan Scott akan ditambahkan ke perkiraan di Iowa.
Ada beberapa teknik umum yang dapat Anda gunakan untuk membuat perkiraan yang direkonsiliasi untuk setiap level. Salah satu teknik ini dikenal sebagai pendekatan Bottom-Up. Dalam pendekatan ini, perkiraan dibuat di tingkat terbawah hierarki terlebih dahulu sebelum menjumlahkan tingkat lainnya. Mengambil contoh sebelumnya, perkiraan untuk setiap toko digunakan untuk membangun model perkiraan untuk tingkat lain (pertama dengan zip, diikuti oleh kota, dll.).
Membuat model deret waktu
Pertama, 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 wilayah Polk, Linn, dan Scott. Pernyataan CREATE MODEL
membuat dan melatih model bernama bqml_tutorial.liquor_forecast
.
#standardSQL 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;
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. Menetapkan opsi holiday_region
ke US
memungkinkan pemodelan yang lebih akurat pada
titik waktu liburan di Amerika Serikat jika ada pola liburan di Amerika Serikat dalam deret waktu.
Jalankan kueri CREATE MODEL
untuk membuat dan melatih model Anda:
Di konsol Google Cloud, klik tombol Run a query in BigQuery.
Masukkan kueri GoogleSQL berikut di editor kueri.
#standardSQL 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;
Klik Run.
Kueri memerlukan waktu sekitar 37 detik untuk selesai, setelah itu model Anda (
liquor_forecast
) akan muncul di panel Explorer. Karena kueri menggunakan pernyataanCREATE MODEL
untuk membuat model, tidak ada hasil kueri.
Memeriksa hasil model deret waktu
Setelah membuat model, Anda dapat menggunakan fungsi ML.FORECAST
untuk melihat hasil perkiraan.
Anda menjalankan fungsi ML.FORECAST
terhadap model liquor_forecast
dengan menentukannya dalam klausa FROM
.
Secara default, kueri ini menampilkan perkiraan untuk semua deret waktu unik dalam data, yang diidentifikasi berdasarkan kolom store_number
, zip_code
, city
, dan county
.
Untuk menjalankan kueri ML.FORECAST, gunakan langkah-langkah berikut:
Di konsol Google Cloud, klik tombol Run a query in BigQuery.
Masukkan kueri GoogleSQL berikut di editor kueri.
#standardSQL 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
Klik Run.
Kueri memerlukan waktu sekitar 5 detik untuk dijalankan. Setelah kueri berjalan, output menampilkan hasil berikut.
Perhatikan bagaimana prakiraan untuk deret waktu pertama ditampilkan (store_number=2190, zip_code=50314, city=DES MOINES, county=POLK). Jika melihat lebih lanjut pada baris lainnya, Anda akan melihat prakiraan untuk grup lainnya.
Secara umum, perkiraan dibuat untuk setiap deret waktu yang unik. Agar dapat menghasilkan perkiraan untuk level gabungan seperti prakiraan untuk county tertentu, Anda perlu menghasilkan perkiraan hierarkis.
Membuat model deret waktu dengan perkiraan hierarkis
Membuat perkiraan deret waktu hierarki menggunakan data penjualan minuman keras Iowa.
Kueri GoogleSQL berikut membuat model yang menghasilkan perkiraan hierarkis untuk jumlah total botol harian yang terjual pada tahun 2015 di wilayah Polk, Linn, dan Scott. Pernyataan CREATE MODEL
membuat dan melatih model bernama bqml_tutorial.liquor_forecast_hierarchical
.
#standardSQL 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;
Parameter HIERARCHICAL_TIME_SERIES_COLS
menunjukkan bahwa Anda membuat perkiraan hierarki berdasarkan sekumpulan kolom. Setiap kolom tersebut diakumulasikan dan digabungkan. Misalnya, dari kueri sebelumnya, ini berarti store_number
diakumulasikan untuk menampilkan perkiraan bagi setiap county
, city
, dan zip_code
. Secara terpisah, zip_code
dan store_number
juga diakumulasikan guna menampilkan perkiraan untuk setiap county
dan city
. Urutan kolom penting karena menentukan struktur hierarki.
Jalankan kueri CREATE MODEL
untuk membuat dan melatih model Anda:
Di konsol Google Cloud, klik tombol Run a query in BigQuery.
Masukkan kueri GoogleSQL berikut di editor kueri.
#standardSQL 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;
Klik Run.
Kueri memerlukan waktu sekitar 45 detik untuk selesai, setelah itu model Anda (
bqml_tutorial.liquor_forecast_hierarchical
) akan muncul di panel Explorer. Karena kueri menggunakan pernyataanCREATE MODEL
untuk membuat model, tidak ada hasil kueri.
Memeriksa hasil model deret waktu hierarkis
Di konsol Google Cloud, klik tombol Run a query in BigQuery.
Masukkan kueri GoogleSQL berikut di editor kueri.
#standardSQL 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
Klik Run.
Kueri memerlukan waktu sekitar 5 detik untuk dijalankan. Setelah kueri berjalan, output menampilkan hasil berikut.
Perhatikan bagaimana perkiraan gabungan ditampilkan untuk kota LeClaire (store_number=NULL, zip_code=NULL, city=LECLAIRE, county=SCOTT). Jika Anda melihat lebih lanjut pada baris lainnya, Anda akan melihat perkiraan untuk sub-grup lainnya. Misalnya, gambar berikut menunjukkan perkiraan yang digabungkan untuk kode pos 52753 (store_number=NULL, zip_code=52753, city=LECLAIRE, county=SCOTT):
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 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.