Memperkirakan beberapa deret waktu dengan model multivariat TimesFM

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.FORECAST dengan model TimesFM 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

  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. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

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

    Mengaktifkan API

    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:

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:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

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

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

    Buka Kelola 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 berikutnya