Prevé series temporales jerárquicas con un modelo univariado ARIMA_PLUS
En este instructivo, aprenderás a usar un
modelo de serie temporal univariable ARIMA_PLUS
para prever series temporales jerárquicas. Prevé el valor futuro
de una columna determinada, según los valores históricos de esa columna,
y también calcula los valores de resumen de esa columna para una o más dimensiones de
interés.
Los valores previstos se calculan para cada punto temporal y para cada valor en una o más columnas que especifican las dimensiones de interés. Por ejemplo, si quisieras prever los incidentes de tráfico diarios y especificaras una columna de dimensión que contenga datos de estado, los datos previstos contendrían valores para cada día del estado A, luego valores para cada día del estado B, y así sucesivamente. Si quisieras prever los incidentes de tráfico diarios y especificaras columnas de dimensión que contengan datos de estado y ciudad, los datos previstos contendrían valores para cada día del estado A y la ciudad A, luego valores para cada día del estado A y la ciudad B, y así sucesivamente. En los modelos de series temporales jerárquicas, se usa la conciliación jerárquica para resumir y conciliar cada serie temporal secundaria con su superior. Por ejemplo, la suma de los valores previstos para todas las ciudades del estado A debe ser igual al valor previsto para el estado A.
En este instructivo, crearás dos modelos de series temporales con los mismos datos, uno que usa la previsión jerárquica y otro que no. Esto te permite comparar los resultados que muestran los modelos.
En este instructivo, se usan datos de la tabla pública
bigquery-public-data.iowa_liquor.sales.sales. Esta tabla contiene información de más de 1 millón de productos de licores en
diferentes tiendas con datos públicos de ventas de licores de Iowa.
Antes de leer este instructivo, te recomendamos que leas Previsión de varias series temporales con un modelo univariado.
Permisos necesarios
Para crear el conjunto de datos, necesitas el permiso
bigquery.datasets.createde IAM.Para crear el modelo, necesitas los siguientes permisos:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.models.getDatabigquery.jobs.create
Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta Introducción a IAM.
Objetivos
En este instructivo usarás lo siguiente:
- Crear un modelo de series temporales múltiples y un modelo de series temporales jerárquicas múltiples para prever los valores de ventas de botellas con la declaración
CREATE MODEL. - Recuperar los valores previstos de las ventas de botellas de los modelos con la
función
ML.FORECAST
Costos
En este instructivo, se usan componentes facturables de Cloud de Confiance by S3NS, incluidos los siguientes:
- BigQuery
- BigQuery ML
Para obtener más información sobre los costos de BigQuery, consulta la página de precios de BigQuery.
Para obtener más información sobre los costos de BigQuery ML, consulta los precios de BigQuery ML.
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
- BigQuery se habilita automáticamente en proyectos nuevos.
Para activar BigQuery en un proyecto existente, ve a
Habilita la API de BigQuery si aún no está habilitada.
Roles necesarios para habilitar las APIs
Para habilitar las 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 obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.
Crea un conjunto de datos
Para crear un conjunto de datos de BigQuery, selecciona una de las siguientes opciones:
Console
En la consola de Cloud de Confiance , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar:

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En Explorador, expande tu proyecto y, luego, haz clic en Conjuntos de datos.
En la página Conjuntos de datos, haz clic en Crear conjunto de datos.
En el panel Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
bqml_tutorial.En Ubicación de los datos, selecciona EE.UU..
Deja el resto de la configuración predeterminada como está.
Haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el
comando bq mk --dataset.
Crea un conjunto de datos llamado
bqml_tutorialcon la ubicación de los datos establecida enUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Confirma que se haya creado el conjunto de datos:
bq ls
API
Llama al método datasets.insert
con un recurso de conjunto de datos definido:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Crea un modelo de series temporales
Crea un modelo de series temporales con los datos de ventas de bebidas alcohólicas de Iowa.
En la siguiente consulta de GoogleSQL, se crea un modelo que prevé la cantidad total diaria de botellas vendidas en 2015 en los condados de Polk, Linn y Scott.
En la siguiente consulta, la cláusula
OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
indica que creas un modelo de serie temporal basado en
ARIMA. Usa la
opción TIME_SERIES_ID
de la sentencia CREATE MODEL para especificar una o más columnas en los datos de entrada
para los que deseas obtener previsiones. La
opción auto_arima_max_order
de la sentencia CREATE MODEL controla el
espacio de búsqueda para el ajuste de hiperparámetros en el algoritmo auto.ARIMA. La
opción decompose_time_series
de la instrucción CREATE MODEL se establece de forma predeterminada en TRUE, de modo que se devuelva la información sobre
los datos de series temporales cuando evalúes el modelo en el siguiente paso.
La cláusula OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) indica que creas un modelo de serie temporal basado en ARIMA. De forma predeterminada, auto_arima=TRUE, por lo que el algoritmo auto.ARIMA ajusta de forma automática los hiperparámetros en los modelos ARIMA_PLUS. El algoritmo se adapta a decenas de modelos de candidatos y elige el mejor, que es el modelo con el criterio de información Akaike (AIC) más bajo.
Configurar la opción holiday_region en US permite un modelado más preciso de esos puntos temporales de las festividades de Estados Unidos si es que existen patrones de festividades de Estados Unidos en la serie temporal.
Sigue estos pasos para crear el modelo:
En la consola de Cloud de Confiance , ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE OR REPLACE MODEL `bqml_tutorial.liquor_forecast` OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS', TIME_SERIES_TIMESTAMP_COL = 'date', TIME_SERIES_DATA_COL = 'total_bottles_sold', TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'], HOLIDAY_REGION = 'US') AS SELECT store_number, zip_code, city, county, date, SUM(bottles_sold) AS total_bottles_sold FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31') AND county IN ('POLK', 'LINN', 'SCOTT') GROUP BY store_number, date, city, zip_code, county;
La consulta tarda aproximadamente 37 segundos en completarse, después de lo cual puedes acceder al modelo
liquor_forecast. Debido a que la consulta usa una declaraciónCREATE MODELpara crear un modelo, no hay resultados de consultas.
Usa el modelo para realizar previsiones de datos
Prevé valores de series temporales futuras con la función ML.FORECAST.
En la siguiente consulta, la
cláusula STRUCT(20 AS horizon, 0.8 AS confidence_level) indica que la
consulta prevé 20 puntos futuros y genera un intervalo de predicción
con un nivel de confianza del 80%.
Sigue estos pasos para realizar una previsión de datos con el modelo:
En la consola de Cloud de Confiance , ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.FORECAST( MODEL `bqml_tutorial.liquor_forecast`, STRUCT(20 AS horizon, 0.8 AS confidence_level)) ORDER BY store_number, county, city, zip_code, forecast_timestamp;
Los resultados debería ser similar al siguiente:
El resultado comienza con los datos previstos para la primera serie temporal:
store_number=2190,zip_code=50314,city=DES MOINES,county=POLK. A medida que te desplazas por los datos, verás las previsiones de cada serie temporal única posterior. Si deseas generar previsiones que agreguen totales para diferentes dimensiones, como las previsiones de un condado específico, debes generar una previsión jerárquica.
Crea un modelo de series temporales jerárquicas
Crea una previsión de series temporales jerárquicas mediante los datos de ventas de bebidas alcohólicas de Iowa.
En la siguiente consulta de GoogleSQL, se crea un modelo que genera previsiones jerárquicas para la cantidad total diaria de botellas vendidas en 2015 en los condados de Polk, Linn y Scott.
En la siguiente consulta, la opción HIERARCHICAL_TIME_SERIES_COLS de la
declaración CREATE MODEL indica que estás creando una previsión jerárquica
basada en un conjunto de columnas que especificas. Cada una de estas columnas se agrupa
y agrega. Por ejemplo, en la consulta anterior, esto significa que el valor de la columna store_number se une para mostrar las previsiones de cada valor de county, city y zip_code. Por otro lado, los valores de zip_code y store_number también se combinan para mostrar las previsiones de cada valor de county y city.
El orden de las columnas es importante porque define la estructura de la jerarquía.
Sigue estos pasos para crear el modelo:
En la consola de Cloud de Confiance , ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE OR REPLACE MODEL `bqml_tutorial.liquor_forecast_hierarchical` OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS', TIME_SERIES_TIMESTAMP_COL = 'date', TIME_SERIES_DATA_COL = 'total_bottles_sold', TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'], HIERARCHICAL_TIME_SERIES_COLS = ['zip_code', 'store_number'], HOLIDAY_REGION = 'US') AS SELECT store_number, zip_code, city, county, date, SUM(bottles_sold) AS total_bottles_sold FROM `bigquery-public-data.iowa_liquor_sales.sales` WHERE date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31') AND county IN ('POLK', 'LINN', 'SCOTT') GROUP BY store_number, date, city, zip_code, county;
La consulta tarda aproximadamente 45 segundos en completarse, después de lo cual se puede acceder al modelo
bqml_tutorial.liquor_forecast_hierarchicalen el panel Explorador. Debido a que la consulta usa una sentenciaCREATE MODELpara crear un modelo, no hay resultados de consultas.
Usa el modelo jerárquico para realizar previsiones de datos
Recupera los datos de previsión jerárquica del modelo con la función ML.FORECAST.
Sigue estos pasos para realizar una previsión de datos con el modelo:
En la consola de Cloud de Confiance , ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.FORECAST( MODEL `bqml_tutorial.liquor_forecast_hierarchical`, STRUCT(30 AS horizon, 0.8 AS confidence_level)) WHERE city = 'LECLAIRE' ORDER BY county, city, zip_code, store_number, forecast_timestamp;
Los resultados debería ser similar al siguiente:
Observa cómo se muestra la previsión agregada para la ciudad de LeClaire,
store_number=NULL,zip_code=NULL,city=LECLAIRE,county=SCOTT. Si observas el resto de las filas, notarás las previsiones de los otros subgrupos. Por ejemplo, en la siguiente imagen, se muestran las previsiones agregadas para el código postal52753,store_number=NULL,zip_code=52753,city=LECLAIRE,county=SCOTT:
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Cloud de Confiance by S3NS por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
- Puedes borrar el proyecto que creaste.
- De lo contrario, puedes mantener el proyecto y borrar el conjunto de datos.
Borra tu conjunto de datos
Borrar tu proyecto quita todos sus conjuntos de datos y tablas. Si prefieres volver a usar el proyecto, puedes borrar el conjunto de datos que creaste en este instructivo:
Si es necesario, abre la página de BigQuery en la consola deCloud de Confiance .
En el panel de navegación, haz clic en el conjunto de datos bqml_tutorial que creaste.
Haz clic en Borrar conjunto de datos en el lado derecho de la ventana. Esta acción borra el conjunto de datos, la tabla y todos los datos.
En el cuadro de diálogo Borrar conjunto de datos, escribe el nombre del conjunto de datos (
bqml_tutorial) para confirmar el comando de borrado y, luego, haz clic en Borrar.
Borra tu proyecto
Para borrar el proyecto, haz lo siguiente:
- En la Cloud de Confiance 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?
- Aprende a prever una sola serie temporal con un modelo univariable.
- Aprende a prever varias series temporales con un modelo univariado.
- Obtén información para escalar un modelo univariado cuando se prevén varias series temporales en muchas filas.
- Aprende a prever una sola serie temporal con un modelo multivariado.
- Para obtener una descripción general de BigQuery ML, consulta Introducción a la IA y el AA en BigQuery.