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

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the BigQuery API.

    Enable the API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Enable the BigQuery API.

    Enable the API

Membuat set data

Buat set data BigQuery untuk menyimpan model ML Anda:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel Explorer, klik nama project Anda.

  3. Klik View actions > Create dataset.

    Buat set data.

  4. 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.

      Halaman 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:

Deret Waktu Hierarkis.

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:

  1. Di konsol Google Cloud, klik tombol Run a query in BigQuery.

  2. 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;
  1. Klik Run.

    Kueri memerlukan waktu sekitar 37 detik untuk selesai, setelah itu model Anda (liquor_forecast) akan muncul di panel Explorer. Karena kueri menggunakan pernyataan CREATE 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:

  1. Di konsol Google Cloud, klik tombol Run a query in BigQuery.

  2. 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
  1. Klik Run.

    Kueri memerlukan waktu sekitar 5 detik untuk dijalankan. Setelah kueri berjalan, output menampilkan hasil berikut.

    Contoh Deret Waktu.

    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:

  1. Di konsol Google Cloud, klik tombol Run a query in BigQuery.

  2. 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;
  1. 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 pernyataan CREATE MODEL untuk membuat model, tidak ada hasil kueri.

Memeriksa hasil model deret waktu hierarkis

  1. Di konsol Google Cloud, klik tombol Run a query in BigQuery.

  2. 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
    
  3. Klik Run.

    Kueri memerlukan waktu sekitar 5 detik untuk dijalankan. Setelah kueri berjalan, output menampilkan hasil berikut.

    Contoh Deret Waktu Hierarkis.

    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):

    Contoh Deret Waktu Hierarkis.

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:

  1. Jika perlu, buka halaman BigQuery di konsol Google Cloud.

    Buka halaman BigQuery

  2. Di navigasi, klik set data bqml_tutorial yang telah Anda buat.

  3. Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data, tabel, dan semua data.

  4. 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:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya