En este instructivo, aprenderás a usar un
modelo de serie temporal univariante de ARIMA_PLUS para prever el valor futuro de una columna determinada en función de los valores históricos
de esa columna.
En este instructivo, se prevé una sola serie temporal. Los valores previstos se calculan una vez para cada punto temporal de los datos de entrada.
En este instructivo, se usan datos de la tabla de muestra pública
bigquery-public-data.google_analytics_sample.ga_sessions. Esta tabla contiene datos ofuscados de comercio electrónico de Google Merchandise Store.
Objetivos
En este instructivo, se te guiará para completar las siguientes tareas:
- Crear un modelo de series temporales para prever el tráfico del sitio con la
declaración
CREATE MODEL - Evaluar la información del promedio móvil integrado autorregresivo (ARIMA)
en el modelo con la
función
ML.ARIMA_EVALUATE - Inspeccionar los coeficientes del modelo con la
función
ML.ARIMA_COEFFICIENTS - Recuperar la información prevista del tráfico del sitio del modelo con la
función
ML.FORECAST. - Recuperar componentes de las series temporales, como la estacionalidad y la tendencia,
con la
función
ML.EXPLAIN_FORECAST. Puedes inspeccionar estos componentes de series temporales para explicar los valores previstos.
Costos
En este instructivo, se usan componentes facturables de Google Cloud, 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.
Antes de comenzar
-
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.
- 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.
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.
Crea un conjunto de datos
Para crear un conjunto de datos de BigQuery, selecciona una de las siguientes opciones:Console
En la consola de Google Cloud , 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" } }
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Visualiza los datos de entrada
Antes de crear el modelo, puedes visualizar de forma opcional los datos de la serie temporal de entrada para tener una idea de la distribución. Puedes hacerlo con Data Studio.
Sigue estos pasos para visualizar los datos de series temporales:
SQL
En la siguiente consulta de GoogleSQL, la
instrucción SELECT analiza la columna date de la tabla de entrada
al tipo TIMESTAMP y le cambia el nombre a parsed_date, y usa
la cláusula SUM(...) y la cláusula GROUP BY date para crear un valor
totals.visits diario.
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 PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date;
Cuando se complete la consulta, haz clic en Abrir en > Data Studio. Data Studio se abre en una pestaña nueva. Completa los siguientes pasos en la pestaña nueva.
En Data Studio, haz clic en Insertar > Gráfico de serie temporal.
En el panel Gráfico, elige la pestaña Configuración.
En la sección Métrica, agrega el campo total_visits y quita la métrica predeterminada Recuento de registros. El gráfico resultante es similar al siguiente:
En el gráfico, puedes ver que la serie temporal de entrada tiene un patrón estacional semanal.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
El resultado es similar al siguiente:
Crea el modelo de series temporales
Crea un modelo de serie temporal para prever las visitas totales al sitio, como se representa en la columna
totals.visits, y entrénalo con los datos de
Google Analytics 360.
SQL
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. La
opción auto_arima
de la sentencia CREATE MODEL se establece de forma predeterminada en TRUE, por lo que el algoritmo auto.ARIMA
ajusta de forma automática los hiperparámetros en el modelo. El algoritmo se adapta a decenas de modelos de candidatos y elige el mejor, que es el que tiene el criterio de información Akaike (AIC) más bajo.
La
opción data_frequency
de las declaraciones CREATE MODEL se establece de forma predeterminada en AUTO_FREQUENCY, por lo que el
proceso de entrenamiento infiere automáticamente la frecuencia de datos de la serie temporal
de entrada. 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.
Sigue estos pasos para crear el modelo:
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:
CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date;
La consulta tarda unos 4 segundos en completarse, después de lo cual puedes acceder al modelo
ga_arima_model. Debido a que en la consulta se usa una sentenciaCREATE MODELpara crear un modelo, no se muestran los resultados de la consulta.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Evalúa los modelos candidatos
SQL
Evalúa los modelos de series temporales con la función ML.ARIMA_EVALUATE. La función ML.ARIMA_EVALUATE te muestra las métricas de evaluación de
todos los modelos candidatos que se evaluaron durante el proceso de ajuste automático
de hiperparámetros.
Sigue estos pasos para evaluar el modelo:
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 * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`);
Los resultados debería ser similar al siguiente:
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Las columnas de salida non_seasonal_p, non_seasonal_d, non_seasonal_q y has_drift
definen un modelo ARIMA en la canalización de entrenamiento. Las columnas de salida log_likelihood, AIC y variance son pertinentes para el proceso de ajuste del modelo ARIMA.
El algoritmo auto.ARIMA usa la prueba de KPSS para determinar el mejor valor de non_seasonal_d, que en este caso es 1. Cuando non_seasonal_d es 1,
el algoritmo auto.ARIMA entrena 42 modelos ARIMA candidatos diferentes en paralelo.
En este ejemplo, los 42 modelos candidatos son válidos, por lo que el resultado contiene 42
filas, una para cada modelo ARIMA candidato. En los casos en que algunos de los modelos
no son válidos, se excluyen del resultado. Estos modelos candidatos se devuelven en orden ascendente según el AIC. El modelo de la primera fila tiene el AIC más bajo
y se considera el mejor modelo. El mejor modelo se guarda como el modelo final
y se usa cuando llamas a funciones como ML.FORECAST en el modelo.
La columna seasonal_periods contiene información sobre el patrón estacional
identificado en los datos de la serie temporal. No tiene nada que ver con el modelo ARIMA,
por lo tanto, tiene el mismo valor en todas las filas de salida. Informa un
patrón semanal, que coincide con los resultados que viste si elegiste
visualizar los datos de entrada.
Las columnas has_holiday_effect, has_spikes_and_dips y has_step_changes solo se propagan cuando decompose_time_series=TRUE. Estas columnas también reflejan
información sobre los datos de series temporales de entrada y no están relacionadas con el modelado
de ARIMA. Estas columnas también tienen los mismos valores en todas las filas de salida.
En la columna error_message, se muestran los errores que se produjeron durante el proceso de ajuste de auto.ARIMA. Un posible motivo de los errores es cuando las columnas
non_seasonal_p, non_seasonal_d, non_seasonal_q y has_drift seleccionadas
no pueden estabilizar la serie temporal. Para recuperar el mensaje de error
de todos los modelos candidatos, configura la opción show_all_candidate_models
como TRUE cuando crees el modelo.
Para obtener más información sobre las columnas de salida, consulta la
función ML.ARIMA_EVALUATE.
Inspecciona los coeficientes del modelo
SQL
Inspecciona los coeficientes del modelo de serie temporal con la
función ML.ARIMA_COEFFICIENTS.
Sigue estos pasos para recuperar los coeficientes del modelo:
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 * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`);
La columna de salida ar_coefficients muestra los coeficientes del modelo de la parte autorregresiva (AR) del modelo ARIMA. De manera similar, la columna de salida ma_coefficients
muestra los coeficientes del modelo de la parte de promedio móvil (MA) del
modelo ARIMA. Ambas columnas contienen valores de array, cuyas longitudes son iguales a non_seasonal_p y non_seasonal_q, respectivamente. En el resultado de la función ML.ARIMA_EVALUATE, viste que el mejor modelo tiene un valor non_seasonal_p de 2 y un valor non_seasonal_q de 3. Por lo tanto, en
el resultado de ML.ARIMA_COEFFICIENTS, el valor de ar_coefficients es un array de 2 elementos
y el valor de ma_coefficients es un array de 3 elementos. El valor intercept_or_drift es el término constante en el modelo ARIMA.
Para obtener más información sobre las columnas de salida, consulta la
función ML.ARIMA_COEFFICIENTS.
Permite trabajar con BigQuery DataFrames.
Inspecciona los coeficientes del modelo de serie temporal con la función coef_.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
La columna de salida ar_coefficients muestra los coeficientes del modelo de la parte autorregresiva (AR) del modelo ARIMA. De manera similar, la columna de salida ma_coefficients
muestra los coeficientes del modelo de la parte de promedio móvil (MA) del
modelo ARIMA. Ambas columnas contienen valores de array, cuyas longitudes son iguales a non_seasonal_p y non_seasonal_q, respectivamente.
Usa el modelo para realizar previsiones de datos
SQL
Prevé valores de series temporales futuras con la función ML.FORECAST.
En la siguiente consulta de GoogleSQL, la
cláusula STRUCT(30 AS horizon, 0.8 AS confidence_level) indica que la
consulta prevé 30 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 Google Cloud , 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.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
Los resultados debería ser similar al siguiente:
Permite trabajar con BigQuery DataFrames.
Prevé valores de series temporales futuras con la función predict.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Las filas de salida están en orden cronológico según el valor de la columna forecast_timestamp. En la previsión de series temporales, el intervalo de predicción, representado por los valores de las columnas prediction_interval_lower_bound y
prediction_interval_upper_bound, es tan importante como el
valor de la columna forecast_value. El valor forecast_value es el punto medio
del intervalo de predicción. El intervalo de predicción depende de los valores de las columnas standard_error y confidence_level.
Para obtener más información sobre las columnas de salida, consulta la
función ML.FORECAST.
Explica los resultados de la previsión
SQL
Puedes obtener métricas de explicabilidad además de los datos de previsión con la
función ML.EXPLAIN_FORECAST. La función ML.EXPLAIN_FORECAST prevé
valores de series temporales futuras y también devuelve todos los componentes separados de la
serie temporal.
Al igual que la función ML.FORECAST, la cláusula STRUCT(30 AS horizon, 0.8 AS confidence_level) que se usa en la función ML.EXPLAIN_FORECAST indica que la consulta prevé 30 puntos temporales futuros y genera un intervalo de predicción con una confianza del 80%.
Sigue estos pasos para explicar los resultados del modelo:
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 * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
Los resultados debería ser similar al siguiente:
Las filas de salida se ordenan de forma cronológica según el valor de la columna
time_series_timestamp.Para obtener más información sobre las columnas de salida, consulta la función
ML.EXPLAIN_FORECAST.
Permite trabajar con BigQuery DataFrames.
Puedes obtener métricas de explicabilidad además de los datos de previsión con la
función predict_explain. La función predict_explain prevé
valores de series temporales futuras y también devuelve todos los componentes separados de la
serie temporal.
Al igual que la función predict, la cláusula horizon=30, confidence_level=0.8 que se usa en la función predict_explain indica que la consulta prevé 30 puntos temporales futuros y genera un intervalo de predicción con una confianza del 80%.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Si quieres visualizar los resultados, puedes usar Data Studio como se describe en la sección Visualiza los datos de entrada para crear un gráfico con las siguientes columnas como métricas:
time_series_dataprediction_interval_lower_boundprediction_interval_upper_boundtrendseasonal_period_weeklystep_changes
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.
- 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 deGoogle Cloud .
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, ingresa el nombre del conjunto de datos (
bqml_tutorial) y, luego, haz clic en Borrar para confirmar el comando de borrado.
Borra tu proyecto
Para borrar el proyecto, haz lo siguiente:
- 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?
- Aprende a prever una sola serie temporal con un modelo multivariado.
- 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 de forma jerárquica varias series temporales con un modelo univariado.
- Para obtener una descripción general de BigQuery ML, consulta Introducción a la IA y el AA en BigQuery.