Tutorial ini mengajarkan cara melakukan perkiraan multivariat di beberapa deret waktu menggunakan
fungsi AI.FORECAST
dengan model TimesFM 3.0
yang ada di BigQuery ML. Peramalan multivariat membantu Anda meningkatkan akurasi perkiraan dengan menggabungkan variabel lain (kovariat) yang memengaruhi target.
Dengan menentukan kolom ID, Anda dapat membuat perkiraan untuk beberapa entitas berbeda secara bersamaan. Tutorial ini menunjukkan cara memperkirakan perjalanan dan tarif taksi New York untuk berbagai zona penjemputan dengan menggabungkan data jarak perjalanan historis, yang merupakan kovariat masa lalu.
Tujuan
- Siapkan set data terpadu untuk beberapa deret waktu.
- Buat prediksi untuk data taksi New York menggunakan fungsi
AI.FORECASTdengan modelTimesFM 3.0.
Biaya
Tutorial ini menggunakan komponen Google Cloudyang dapat ditagih, termasuk:
- BigQuery
- BigQuery ML
Untuk mengetahui informasi selengkapnya, lihat Harga BigQuery dan Harga BigQuery ML.
Sebelum memulai
-
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.
-
Aktifkan BigQuery API, jika belum diaktifkan.
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.Untuk project baru, BigQuery API diaktifkan secara otomatis.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tugas dalam tutorial ini, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Buat set data:
BigQuery Data Editor (
roles/bigquery.dataEditor) -
Buat model:
- BigQuery Data Editor (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
- BigQuery Data Editor (
-
Jalankan inferensi:
- BigQuery Data Editor (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
- BigQuery Data Editor (
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk menyelesaikan tugas dalam tutorial ini. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menyelesaikan tugas dalam tutorial ini:
-
Buat set data:
bigquery.datasets.create -
Buat model:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
Jalankan inferensi:
-
bigquery.models.getData -
bigquery.jobs.create
-
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Pengantar IAM.Menyiapkan data input
Tidak seperti model multivariat lainnya yang mungkin memerlukan tabel terpisah untuk kovariat historis dan mendatang, fungsi AI.FORECAST dengan TimesFM 3.0 mengharapkan satu tabel atau kueri input.
Untuk perkiraan deret waktu ganda, data Anda harus menyertakan satu atau beberapa kolom ID untuk memisahkan data menjadi deret waktu yang berbeda. Dalam contoh ini, satu deret waktu berisi data untuk lokasi pengambilan 132 (Bandara JFK) dan deret waktu lainnya berisi data untuk lokasi pengambilan 138 (Bandara LaGuardia). Pastikan data Anda memenuhi persyaratan berikut untuk setiap deret waktu:
- Baris historis: berisi nilai non-null untuk stempel waktu, target, dan kovariat masa lalu.
Karena contoh ini tidak menggunakan kovariat mendatang, kueri input hanya perlu memberikan data historis. Tabel input Anda harus berisi kolom dengan data berikut:
- Tanggal perjalanan taksi.
- Lokasi pengambilan: 132 atau 138.
- Jumlah perjalanan pada tanggal tersebut. Ini adalah kolom target.
- Jumlah tarif rata-rata pada tanggal tersebut. Ini adalah kolom target.
- Jarak rata-rata perjalanan pada tanggal tersebut. Ini adalah kolom kovariat sebelumnya yang digunakan dalam perkiraan.
Memperkirakan beberapa deret waktu multivariat
Kueri berikut memperkirakan jumlah perjalanan dan tarif rata-rata per hari selama 14 hari ke depan untuk zona penjemputan JFK dan LaGuardia. Menentukan
past_cov_avg_distance sebagai fitur yang hanya diketahui secara historis. Anda harus
memberikan argumen id_cols agar model mengetahui cara memisahkan deret waktu yang berbeda.
Ikuti langkah-langkah berikut untuk memperkirakan data dengan model TimesFM 3.0:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT pickup_location_id, FORMAT_DATE("%Y-%m-%d", pickup_date) AS pickup_date, # Extract the forecast value and prediction intervals for the number of trips target target_num_trips.value AS forecasted_num_trips, target_num_trips.prediction_interval_lower_bound AS num_trips_lower, target_num_trips.prediction_interval_upper_bound AS num_trips_upper, # Extract the forecast value and prediction intervals for the average fare target target_avg_fare.value AS forecasted_avg_fare, target_avg_fare.prediction_interval_lower_bound AS avg_fare_lower, target_avg_fare.prediction_interval_upper_bound AS avg_fare_upper FROM AI.FORECAST( ( SELECT DATE(pickup_datetime) AS pickup_date, pickup_location_id, COUNT(*) AS target_num_trips, AVG(fare_amount) AS target_avg_fare, AVG(trip_distance) AS past_cov_avg_distance FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022` WHERE pickup_datetime >= "2022-01-01" AND pickup_datetime < "2022-04-01" AND pickup_location_id IN ("132", "138") -- JFK and LaGuardia Airports GROUP BY 1, 2 ), model => "TimesFM 3.0", target_cols => ["target_num_trips", "target_avg_fare"], past_covariate_cols => ["past_cov_avg_distance"], timestamp_col => "pickup_date", id_cols => ["pickup_location_id"], horizon => 14 ) ORDER BY pickup_date;
Hasilnya akan mirip dengan berikut ini, dengan nilai yang dibulatkan untuk kejelasan:
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| pickup_location_id | pickup_date | forecasted_num_trips | num_trips_lower | num_trips_upper | forecasted_avg_fare | avg_fare_lower | avg_fare_upper |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 132 | 2022-04-01 | 5240 | 4633 | 5842 | 47 | 46 | 48 |
| 138 | 2022-04-01 | 3451 | 2848 | 4008 | 32 | 31 | 34 |
| ... | ... | ... | ... | ... | ... | ... | ... |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
Hasilnya menunjukkan perkiraan jumlah perjalanan dan jumlah tarif rata-rata untuk 14 hari ke depan di zona penjemputan JFK dan LaGuardia. Hasilnya juga mencakup batas bawah dan atas untuk interval prediksi 95% untuk setiap nilai perkiraan.
Pembersihan
Agar tidak perlu membayar 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.
Menghapus project Anda
- 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
- Untuk ringkasan BigQuery ML, lihat Pengantar AI dan ML di BigQuery.
- Pelajari cara memperkirakan deret waktu tunggal atau ganda dengan model univariat TimesFM.
- Pelajari cara memperkirakan deret waktu tunggal dengan model multivariat TimesFM.