En este instructivo, se explica cómo realizar previsiones multivariadas en varias series temporales con la función AI.FORECAST y el modelo TimesFM 3.0 integrados en BigQuery ML. La previsión multivariada te ayuda a mejorar la precisión de las previsiones, ya que incorpora otras variables (covariables) que influyen en el objetivo.
Si especificas columnas de identificadores, puedes generar previsiones para varias entidades distintas de forma simultánea. En este instructivo, se muestra cómo predecir los viajes y las tarifas de los taxis de Nueva York para diferentes zonas de partida incorporando datos históricos de la distancia de los viajes, que es una covariable pasada.
Objetivos
- Prepara un conjunto de datos unificado para varias series temporales.
- Genera predicciones para los datos de taxis de Nueva York con la función
AI.FORECASTy el modeloTimesFM 3.0.
Costos
En este instructivo, se usan los siguientes componentes facturables de Google Cloud:
- BigQuery
- BigQuery ML
Para obtener más información, consulta los precios de BigQuery y los precios de BigQuery ML.
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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.
-
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.
-
Habilita la API de BigQuery si aún no está habilitada.
Roles necesarios para habilitar las APIs
Para habilitar APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.Para los proyectos nuevos, la API de BigQuery se habilita de forma automática.
Roles obligatorios
Si quieres obtener los permisos que necesitas para completar las tareas de este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Crea el conjunto de datos:
Editor de datos de BigQuery (
roles/bigquery.dataEditor) -
Crea el modelo:
- Editor de datos de BigQuery (
roles/bigquery.dataEditor) - Usuario de trabajo de BigQuery (
roles/bigquery.jobUser)
- Editor de datos de BigQuery (
-
Ejecuta la inferencia:
- Editor de datos de BigQuery (
roles/bigquery.dataEditor) - Usuario de trabajo de BigQuery (
roles/bigquery.jobUser)
- Editor de datos de BigQuery (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para completar las tareas de este instructivo. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para completar las tareas de este instructivo:
-
Crea el conjunto de datos:
bigquery.datasets.create -
Crea el modelo:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
Ejecuta la inferencia:
-
bigquery.models.getData -
bigquery.jobs.create
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta Introducción a IAM.Prepara los datos de entrada
A diferencia de otros modelos multivariados que podrían requerir tablas separadas para las covariables históricas y futuras, la función AI.FORECAST con TimesFM 3.0 espera una sola tabla o consulta de entrada.
Para una previsión de varias series temporales, tus datos deben incluir una o más columnas de identificador para separar los datos en series temporales distintas. En este ejemplo, una serie temporal contiene datos de la ubicación de retiro 132 (aeropuerto JFK) y la otra serie temporal contiene datos de la ubicación de retiro 138 (aeropuerto LaGuardia). Asegúrate de que tus datos cumplan con los siguientes requisitos para cada serie temporal individual:
- Filas históricas: Contienen valores no nulos para las marcas de tiempo, los objetivos y las covariables pasadas.
Como este ejemplo no usa covariables futuras, la consulta de entrada solo necesita proporcionar datos históricos. Tu tabla de entrada debe contener columnas con los siguientes datos:
- Fecha del viaje en taxi.
- Ubicación de retiro: 132 o 138.
- Es la cantidad de viajes en esa fecha. Esta es una columna objetivo.
- Es el importe promedio de la tarifa en esa fecha. Esta es una columna objetivo.
- Es la distancia promedio de los viajes en esa fecha. Es una columna de covariables históricas que se usa en la previsión.
Prevé las múltiples series temporales multivariables
La siguiente consulta prevé la cantidad de viajes y la tarifa promedio por día para los próximos 14 días en las zonas de partida de JFK y LaGuardia. Define past_cov_avg_distance como un atributo que solo se conoce históricamente. Debes proporcionar el argumento id_cols para que el modelo sepa cómo separar las diferentes series temporales.
Sigue estos pasos para predecir datos con el modelo TimesFM 3.0:
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
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;
El resultado es similar al siguiente, con valores redondeados para mayor claridad:
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 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 |
| ... | ... | ... | ... | ... | ... | ... | ... |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
Los resultados muestran la cantidad prevista de viajes y el importe promedio de la tarifa para los próximos 14 días en las zonas de partida de JFK y LaGuardia. Los resultados también incluyen los límites inferior y superior de un intervalo de predicción del 95% para cada valor previsto.
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra tu proyecto
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
¿Qué sigue?
- Para obtener una descripción general de BigQuery ML, consulta Introducción a la IA y el AA en BigQuery.
- Obtén información para prever series temporales únicas o múltiples con un modelo univariado de TimesFM.
- Obtén más información para predecir series temporales únicas con un modelo multivariable de TimesFM.