Memperkirakan beberapa deret waktu dengan model univariat TimesFM

Tutorial ini mengajarkan cara menggunakan fungsi AI.FORECAST dengan model univariat TimesFM bawaan BigQuery ML untuk memperkirakan nilai mendatang untuk kolom tertentu, berdasarkan nilai historis kolom tersebut.

Tutorial ini menggunakan data dari tabel bigquery-public-data.san_francisco_bikeshare.bikeshare_trips publik.

Memperkirakan deret waktu perjalanan transportasi online sepeda tunggal

Perkirakan nilai deret waktu di masa mendatang menggunakan fungsi AI.FORECAST.

Kueri berikut memperkirakan jumlah perjalanan transportasi online sepeda pelanggan per jam untuk bulan berikutnya (sekitar 720 jam), berdasarkan data historis empat bulan sebelumnya. Argumen confidence_level menunjukkan bahwa kueri menghasilkan interval prediksi dengan tingkat keyakinan 95%.

Ikuti langkah-langkah berikut untuk memperkirakan data dengan model TimesFM:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempel kueri berikut, lalu klik Run:

    SELECT *
    FROM
      AI.FORECAST(
        (
          SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips
    FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
    WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01')
    GROUP BY TIMESTAMP_TRUNC(start_date, HOUR)
        ),
        horizon => 720,
        confidence_level => 0.95,
        timestamp_col => 'trip_hour',
        data_col => 'num_trips');

    Hasilnya akan terlihat seperti berikut:

    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | forecast_timestamp      | forecast_value    | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | 2018-05-01 00:00:00 UTC | 26.3045959...     |            0.95  | 21.7088378...                   | 30.9003540...                   |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | 2018-05-01 01:00:00 UTC | 34.0890502...     |            0.95  | 2.47682913...                   | 65.7012714...                   |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | 2018-05-01 02:00:00 UTC | 24.2154693...     |            0.95  | 2.87621605...                   | 45.5547226...                   |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | ...                     | ...               |  ...             | ...                             |  ...                            |                    |
    +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
    

Membandingkan data perkiraan dengan data input

Buat diagram output fungsi AI.FORECAST bersama dengan subkumpulan data input fungsi untuk melihat perbandingannya.

Ikuti langkah-langkah berikut untuk memetakan output fungsi:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempel kueri berikut, lalu klik Run:

    WITH historical AS (
    SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips
    FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
    WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01')
    GROUP BY TIMESTAMP_TRUNC(start_date, HOUR)
    ORDER BY TIMESTAMP_TRUNC(start_date, HOUR)
    )
    SELECT * 
    FROM 
    (
    (SELECT
        trip_hour as date,
        num_trips AS historical_value,
        NULL as forecast_value,
        'historical' as type,
        NULL as prediction_interval_lower_bound,
        NULL as prediction_interval_upper_bound
    FROM
        historical
    ORDER BY historical.trip_hour DESC
    LIMIT 400)
    UNION ALL
    (SELECT forecast_timestamp AS date,
            NULL as historical_value,
            forecast_value as forecast_value,
            'forecast' as type,
            prediction_interval_lower_bound,
            prediction_interval_upper_bound
    FROM
        AI.FORECAST(
        (
        SELECT * FROM historical
        ),
        horizon => 720,
        confidence_level => 0.99,
        timestamp_col => 'trip_hour',
        data_col => 'num_trips')))
    ORDER BY date asc;
  3. Setelah kueri selesai berjalan, klik tab Visualisasi di panel Hasil kueri. Diagram yang dihasilkan akan terlihat mirip dengan berikut ini:

    Buat grafik 100 titik waktu data input bersama dengan data output fungsi AI.FORECAST untuk mengevaluasi kesamaannya.

    Anda dapat melihat bahwa data input dan data perkiraan menunjukkan penggunaan layanan berbagi sepeda yang serupa. Anda juga dapat melihat bahwa batas bawah dan atas interval prediksi meningkat seiring dengan semakin jauhnya titik waktu perkiraan ke masa depan.

Memperkirakan beberapa deret waktu perjalanan bike sharing

Kueri berikut memperkirakan jumlah perjalanan layanan berbagi sepeda per jenis pelanggan dan per jam untuk bulan berikutnya (sekitar 720 jam), berdasarkan data historis empat bulan sebelumnya. Argumen confidence_level menunjukkan bahwa kueri menghasilkan interval prediksi dengan tingkat keyakinan 95%.

Ikuti langkah-langkah berikut untuk memperkirakan data dengan model TimesFM:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, tempel kueri berikut, lalu klik Run:

    SELECT *
    FROM
      AI.FORECAST(
        (
          SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, subscriber_type, COUNT(*) as num_trips
          FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
          WHERE start_date >= TIMESTAMP('2018-01-01')
          GROUP BY TIMESTAMP_TRUNC(start_date, HOUR), subscriber_type
        ),
        horizon => 720,
        confidence_level => 0.95,
        timestamp_col => 'trip_hour',
        data_col => 'num_trips',
        id_cols => ['subscriber_type']);

    Hasilnya akan terlihat seperti berikut:

    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | subscriber_type     | forecast_timestamp       | forecast_value   | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | Subscriber          | 2018-05-01 00:00:00 UTC  | 26.3045959...    |            0.95  | 21.7088378...                   | 30.9003540...                   |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | Subscriber          |  2018-05-01 01:00:00 UTC | 34.0890502...    |            0.95  | 2.47682913...                   | 65.7012714...                   |                    |
    +---------------------+-------------------+------------------+-------------------------+---------------------------------+---------------------------------+--------------------+
    | Subscriber          |  2018-05-01 02:00:00 UTC | 24.2154693...    |            0.95  | 2.87621605...                   | 45.5547226...                   |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | ...                 | ...                      |  ...             | ...              | ...                             |  ...                            |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+