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. Model 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 yang diperkirakan dihitung untuk setiap titik waktu, untuk setiap nilai dalam satu atau beberapa kolom yang menentukan dimensi yang diinginkan. Misalnya, jika Anda ingin memperkirakan insiden lalu lintas harian dan menentukan kolom dimensi yang berisi data negara bagian, data yang diperkirakan akan berisi nilai untuk setiap hari untuk Negara Bagian A, lalu nilai untuk setiap hari untuk Negara Bagian B, dan seterusnya. Jika Anda ingin memperkirakan insiden lalu lintas harian dan menentukan kolom dimensi yang berisi data negara bagian dan kota, data yang diperkirakan 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 yang diperkirakan untuk semua kota di Negara Bagian A harus sama dengan nilai yang diperkirakan 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. Hal ini memungkinkan Anda membandingkan hasil yang ditampilkan oleh model.

Tutorial ini menggunakan data dari tabel publik bigquery-public-data.iowa_liquor.sales.sales. 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.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • 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 model deret waktu ganda dan model deret waktu hierarkis ganda untuk memperkirakan nilai penjualan botol menggunakan CREATE MODEL pernyataan.
  • Mengambil nilai penjualan botol yang diperkirakan dari model menggunakan fungsi ML.FORECAST.

Biaya

Tutorial ini menggunakan komponen yang dapat ditagih Cloud de Confiance by S3NS, 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.

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

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

    Mengaktifkan API

Membuat set data

Buat set data BigQuery untuk menyimpan model ML Anda.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel Explorer, klik nama project Anda.

  3. Klik View actions > Create dataset

  4. Di halaman Create dataset, lakukan hal berikut:

    • Untuk Dataset ID, masukkan bqml_tutorial.

    • Untuk Location type, pilih Multi-region, lalu pilih US.

    • Jangan ubah setelan default yang tersisa, lalu klik Create dataset.

bq

Untuk membuat set data baru, gunakan perintah bq mk --dataset.

  1. Buat set data bernama bqml_tutorial dengan lokasi data ditetapkan ke US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Pastikan set data telah dibuat:

    bq ls

API

Panggil datasets.insert metode 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 jumlah total botol yang terjual setiap hari pada tahun 2015 di 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 perkirakan. Opsi auto_arima_max_order dari pernyataan CREATE MODEL mengontrol ruang penelusuran untuk penyesuaian hyperparameter dalam algoritma auto.ARIMA. Opsi decompose_time_series dari pernyataan CREATE MODEL ditetapkan secara default ke 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 ARIMA_PLUS model. Algoritma ini sesuai dengan beberapa model kandidat dan memilih model terbaik, yaitu model dengan kriteria informasi Akaike (AIC) terendah . Menetapkan opsi holiday_regionke USmemungkinkan 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:

  1. Di Cloud de Confiance konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempelkan 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 selesai, setelah itu Anda dapat mengakses model liquor_forecast. Karena kueri menggunakan pernyataan CREATE MODEL untuk 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:

  1. Di Cloud de Confiance konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempelkan 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:

    Beberapa deret waktu dengan model univariat

    Output dimulai dengan data yang diperkirakan untuk deret waktu pertama; store_number=2190, zip_code=50314, city=DES MOINES, county=POLK. Saat Anda 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 wilayah 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.

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 digabungkan dan diagregasi. Misalnya, dari kueri sebelumnya, ini berarti 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:

  1. Di Cloud de Confiance konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempelkan 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 membutuhkan waktu sekitar 45 detik untuk selesai, setelah itu model bqml_tutorial.liquor_forecast_hierarchical dapat diakses di panel Explorer. Karena kueri menggunakan pernyataan CREATE MODEL untuk 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:

  1. Di Cloud de Confiance konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempelkan 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:

    Contoh Deret Waktu Hierarkis.

    Perhatikan bagaimana perkiraan 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 perkiraan yang digabungkan untuk kode pos 52753, store_number=NULL, zip_code=52753, city=LECLAIRE, county=SCOTT:

    Contoh Deret Waktu Hierarkis.

Pembersihan

Agar akun Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource. Cloud de Confiance by S3NS

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

  1. Jika perlu, buka halaman BigQuery di Cloud de Confiance konsol.

    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 Delete dataset , konfirmasi perintah hapus dengan mengetikkan nama set data Anda (bqml_tutorial), lalu klik Delete.

Menghapus project Anda

Untuk menghapus project:

  1. Di Cloud de Confiance konsol, buka halaman Manage resources.

    Buka Kelola resource

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

Langkah berikutnya