Prever várias séries temporais com um modelo univariado do TimesFM


Neste tutorial, você vai aprender a usar a função AI.FORECAST com o modelo univariado TimesFM integrado do BigQuery ML para prever o valor futuro de uma determinada coluna com base no valor histórico dela.

Neste tutorial, usamos dados da tabela pública bigquery-public-data.san_francisco_bikeshare.bikeshare_trips.

Objetivos

Este tutorial mostra como usar a função AI.FORECAST com o modelo TimesFM integrado para prever viagens aluguel de bicicletas. As duas primeiras seções mostram como prever e visualizar resultados para uma única série temporal. A terceira seção mostra como fazer previsões para várias série temporal.

Custos

Neste tutorial, usamos componentes faturáveis do Google Cloud, incluindo:

  • BigQuery
  • BigQuery ML

Para mais informações sobre os custos do BigQuery, consulte a página de preços.

Para mais informações sobre os custos do BigQuery ML, consulte os preços do BigQuery ML.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. O BigQuery é ativado automaticamente em novos projetos. Para ativar o BigQuery em um projeto preexistente,

    Enable the BigQuery API.

    Enable the API

Prever uma única série temporal de viagens de aluguel de bicicletas

Preveja valores futuros de série temporal usando a função AI.FORECAST.

A consulta a seguir prevê o número de viagens de bicicleta compartilhada por hora para o próximo mês (aproximadamente 720 horas), com base nos quatro meses anteriores de dados históricos. O argumento confidence_level indica que a consulta gera um intervalo de previsão com um nível de confiança de 95%.

Siga estas etapas para prever dados com o modelo TimesFM:

  1. No console Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No Editor de consultas, cole a consulta a seguir e clique em Executar:

    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');

    Os resultados são semelhantes aos seguintes:

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

Comparar os dados previstos com os dados de entrada

Crie um gráfico com a saída da função AI.FORECAST e um subconjunto dos dados de entrada da função para comparar os dois.

Siga estas etapas para criar um gráfico da saída da função:

  1. No console Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No Editor de consultas, cole a consulta a seguir e clique em Executar:

    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_low,
        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. Quando a consulta terminar de ser executada, clique na guia Gráfico no painel Resultados da consulta. O gráfico resultante será semelhante a este:

    Represente graficamente 100 pontos de dados de entrada e de saída da função AI.FORECAST para avaliar a semelhança entre eles.

    É possível notar que os dados de entrada e os previstos mostram um uso semelhante de aluguel de bicicletas. Além disso, os limites inferior e superior do intervalo de previsão aumentam à medida que os pontos de tempo previstos avançam no futuro.

Prever várias série temporal de viagens de aluguel de bicicletas

A consulta a seguir prevê o número de viagens aluguel de bicicletas por tipo de assinante e por hora para o próximo mês (aproximadamente 720 horas), com base nos quatro meses anteriores de dados históricos. O argumento confidence_level indica que a consulta gera um intervalo de previsão com um nível de confiança de 95%.

Siga estas etapas para prever dados com o modelo TimesFM:

  1. No console Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No Editor de consultas, cole a consulta a seguir e clique em Executar:

    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']);

    Os resultados são semelhantes aos seguintes:

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

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

Para excluir o projeto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

A seguir