GSP229

Descripción general
BigQuery es la base de datos analítica de bajo costo, no-ops y completamente administrada de Google. Con BigQuery, puedes consultar muchos terabytes de datos sin tener que administrar infraestructuras y sin necesitar un administrador de base de datos. BigQuery usa SQL y puede aprovechar el modelo de pago por uso. BigQuery te permite enfocarte en el análisis de datos para buscar estadísticas valiosas.
BigQuery ML es una función de BigQuery con la que los analistas de datos pueden crear, entrenar, evaluar y predecir con modelos de aprendizaje automático y programación mínima.
En este lab, usarás un conjunto de datos de comercio electrónico especial que contiene millones de registros de Google Analytics para Google Merchandise Store cargados en BigQuery. Utilizarás estos datos para crear un modelo de clasificación (regresión logística) en BigQuery ML que prediga los hábitos de compra de los clientes.
Aprendizajes esperados
En este lab, aprenderás a realizar las siguientes tareas:
- Usar BigQuery para buscar conjuntos de datos públicos
- Consultar y explorar el conjunto de datos de comercio electrónico
- Crear un conjunto de datos de entrenamiento y evaluación para usar en la predicción por lotes
- Crear un modelo de clasificación (regresión logística) en BigQuery ML
- Evaluar y mejorar el rendimiento de tu modelo de aprendizaje automático
- Predecir y clasificar la probabilidad de que un visitante realice una compra
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Cómo abrir la consola de BigQuery
- En la consola de Google Cloud, seleccione elmenú de navegación > BigQuery.
Se abrirá el cuadro de mensaje Te damos la bienvenida a BigQuery en la consola de Cloud. Este cuadro de mensaje contiene un vínculo a la guía de inicio rápido y las notas de la versión.
- Haga clic en Listo.
Se abrirá la consola de BigQuery.
Accede al conjunto de datos del curso
- En el panel Explorador (Explorer), haz clic en + AGREGAR (+ ADD).
Se abre el panel Agregar datos
.
-
Haz clic en Destaca un proyecto por nombre dentro de Fuentes adicionales.
-
Ingresa data-to-insights
y haz clic en Destacar.

Haz clic en el vínculo directo que se encuentra a continuación para ver el proyecto público de data-to-insights:
Las definiciones de los campos del conjunto de datos de comercio electrónico de data-to-insights se encuentran aquí. Mantén el vínculo abierto en una nueva pestaña como referencia.
Tarea 1: Explora los datos de comercio electrónico
Situación: Tu equipo de analistas de datos exportó a BigQuery los registros de Google Analytics de un sitio web de comercio electrónico y creó una nueva tabla con todos los datos de comercio electrónico sin procesar de sesiones de visitantes para que los explores. Con estos datos, intentarás responder algunas preguntas.
Pregunta: Del total de usuarios que visitaron nuestro sitio web, ¿qué porcentaje realizó una compra?
- Copia y pega la siguiente consulta en el Editor de BigQuery:
#standardSQL
WITH visitors AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_visitors
FROM `data-to-insights.ecommerce.web_analytics`
),
purchasers AS(
SELECT
COUNT(DISTINCT fullVisitorId) AS total_purchasers
FROM `data-to-insights.ecommerce.web_analytics`
WHERE totals.transactions IS NOT NULL
)
SELECT
total_visitors,
total_purchasers,
total_purchasers / total_visitors AS conversion_rate
FROM visitors, purchasers
- Haz clic en Ejecutar.
El resultado: 2.69%
Pregunta: ¿Cuáles son los 5 productos más vendidos?
- Borra la consulta anterior y ejecuta la que se indica a continuación en el Editor:
SELECT
p.v2ProductName,
p.v2ProductCategory,
SUM(p.productQuantity) AS units_sold,
ROUND(SUM(p.localProductRevenue/1000000),2) AS revenue
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h,
UNNEST(h.product) AS p
GROUP BY 1, 2
ORDER BY revenue DESC
LIMIT 5;
- Haz clic en Ejecutar
Este es el resultado:
Fila
|
v2ProductName
|
v2ProductCategory
|
units_sold
|
revenue
|
1
|
Nest® Learning Thermostat 3rd Gen-USA - Stainless Steel
|
Nest-USA
|
17651
|
870976.95
|
2
|
Nest® Cam Outdoor Security Camera - USA
|
Nest-USA
|
16930
|
684034.55
|
3
|
Nest® Cam Indoor Security Camera - USA
|
Nest-USA
|
14155
|
548104.47
|
4
|
Nest® Protect Smoke + CO White Wired Alarm-USA
|
Nest-USA
|
6394
|
178937.6
|
5
|
Nest® Protect Smoke + CO White Battery Alarm-USA
|
Nest-USA
|
6340
|
178572.4
|
Pregunta: ¿Cuántos visitantes compraron en visitas posteriores al sitio web?
- Borra la consulta anterior y ejecuta la que se indica a continuación en el Editor:
# visitors who bought on a return visit (could have bought on first as well
WITH all_visitor_stats AS (
SELECT
fullvisitorid, # 741,721 unique visitors
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
SELECT
COUNT(DISTINCT fullvisitorid) AS total_visitors,
will_buy_on_return_visit
FROM all_visitor_stats
GROUP BY will_buy_on_return_visit
- Haz clic en Ejecutar.
Estos son los resultados:
Fila
|
total_visitors
|
will_buy_on_return_visit
|
1
|
729848
|
0
|
2
|
11873
|
1
|
Si analizas los resultados, puedes ver que (11,873 / 741,721) = 1.6% del total de visitantes regresarán y comprarán desde el sitio web. Esto incluye el subconjunto de visitantes que compraron en su primera sesión y, luego, regresaron y compraron nuevamente.
Pregunta: ¿Cuáles son algunas de las razones por las que un cliente de comercio electrónico típico navegará pero no comprará hasta una visita posterior?
Respuesta: Aunque no hay una respuesta correcta, una razón popular es la comparación de precios entre diferentes sitios de comercio electrónico antes de tomar una decisión de compra. Esto es muy común para los artículos de lujo, para los cuales el cliente requiere significativas tareas de investigación y comparación antes de decidir (piensa en las compras de automóviles), pero, en menor medida, también es cierto para los productos de este sitio (camisetas, accesorios, etcétera).
En el mundo del marketing en línea, identificar a estos futuros clientes y aplicar estrategias de marketing enfocadas a ellos según las características de su primera visita aumentará los porcentajes de conversiones y reducirá la salida a sitios de la competencia.
Tarea 2. Identifica un objetivo
Ahora crearás un modelo de aprendizaje automático en BigQuery para predecir si es probable que un usuario nuevo compre en el futuro. La identificación de estos usuarios de gran valor puede ayudar a que tu equipo de marketing segmente las promociones especiales y campañas publicitarias en función de ellos. De este modo, se asegura de que generen una conversión mientras comparan precios entre las visitas en tu sitio de comercio electrónico.
Tarea 3: Selecciona atributos y crea tu conjunto de datos de entrenamiento
Google Analytics capta una amplia variedad de dimensiones y mediciones sobre la visita de un usuario a este sitio web de comercio electrónico. Explora la lista completa de campos en el documento del [UA] Esquema de BigQuery Export y, luego, obtén una vista previa del conjunto de datos de demostración para encontrar atributos útiles que ayudarán a un modelo de aprendizaje automático a comprender la relación entre los datos de la primera visita de un usuario a tu sitio web y si ese visitante volverá y realizará una compra.
Tu equipo decide probar si estos dos campos son entradas adecuadas para tu modelo de clasificación:
-
totals.bounces
(si el visitante abandonó el sitio web inmediatamente)
-
totals.timeOnSite
(cuánto tiempo estuvo el visitante en nuestro sitio web)
Pregunta: ¿Cuáles son los riesgos de usar solo los dos campos anteriores?
Respuesta: El aprendizaje automático es tan bueno como lo son los datos de entrenamiento que se incorporan a él. Si no hay suficiente información para que el modelo determine y aprenda la relación entre los atributos de entrada y la etiqueta (en este caso, si el visitante compró en una visita posterior), entonces no tendrás un modelo preciso. Si bien entrenar un modelo solo a partir de estos dos campos es un comienzo, verás si son lo suficientemente buenos como para producir un modelo preciso.
- En el Editor de BigQuery, ejecuta la siguiente consulta:
SELECT
* EXCEPT(fullVisitorId)
FROM
# features
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1)
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId)
ORDER BY time_on_site DESC
LIMIT 10;
Resultados:
Fila
|
bounces
|
time_on_site
|
will_buy_on_return_visit
|
1
|
0
|
15047
|
0
|
2
|
0
|
12136
|
0
|
3
|
0
|
11201
|
0
|
4
|
0
|
10046
|
0
|
5
|
0
|
9974
|
0
|
6
|
0
|
9564
|
0
|
7
|
0
|
9520
|
0
|
8
|
0
|
9275
|
1
|
9
|
0
|
9138
|
0
|
10
|
0
|
8872
|
0
|
Pregunta: ¿Qué campos corresponden a los atributos de entrada y a la etiqueta de recurso?
Respuesta: Las entradas son bounces y time_on_site. La etiqueta es will_buy_on_return_visit.
Pregunta: ¿Cuáles son los dos campos que se conocen después de la primera sesión de un visitante?
Respuesta: Los campos que se conocen después de la primera sesión de un visitante son bounces y time_on_site.
Pregunta: ¿Qué campo no se conoce hasta más adelante en el futuro?
Respuesta: will_buy_on_return_visit no se conoce después de la primera visita. Nuevamente, la predicción se basa en un subconjunto de usuarios que regresaron a tu sitio web y compraron. Debido a que no conoces el futuro en el momento de la predicción, no puedes decir con certeza si un nuevo visitante regresará y comprará. El valor de compilar un modelo de AA es calcular la probabilidad de las compras futuras según los datos obtenidos acerca de su primera sesión.
Pregunta: En cuanto a los resultados iniciales de los datos, ¿crees que time_on_site y bounces serán buenos indicadores de si el usuario regresará y comprará o no?
Respuesta: A menudo, es demasiado pronto para saber antes de entrenar y evaluar el modelo, pero a primera vista, de los 10 time_on_site
principales, solo 1 cliente regresó a comprar, lo cual no es muy prometedor. Veamos qué tan bien funciona el modelo.
Tarea 4: Crea un conjunto de datos de BigQuery para almacenar modelos
A continuación, crea un nuevo conjunto de datos de BigQuery que también almacenará tus modelos de AA.
- Bajo la sección Explorador (Explorer) que se encuentra en el panel izquierdo, haz clic en el ícono Ver acciones que está junto al nombre de tu proyecto (comienza con
qwiklabs-gcp-…
) y, luego, haz clic en Crear conjunto de datos (Create dataset).

- En el diálogo Crear conjunto de datos, realiza lo siguiente:
- En ID de conjunto de datos, escribe “comercio electrónico”.
- Deja los otros valores en su configuración predeterminada.
- Haz clic en Crear conjunto de datos.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un conjunto de datos nuevo
Tarea 5. Selecciona un tipo de modelo de BigQuery ML y especifica las opciones
Ahora que ya seleccionaste tus atributos iniciales, tienes todo listo para crear tu primer modelo de AA en BigQuery.
Hay dos tipos de modelos para elegir:
Modelo
|
Tipo de modelo
|
Tipo de datos de etiqueta
|
Ejemplo
|
Previsión
|
linear_reg
|
Valor numérico (generalmente un número entero o punto flotante)
|
Previsión de cifras de ventas para el próximo año según los datos históricos de ventas
|
Clasificación
|
logistic_reg
|
0 o 1 para clasificación binaria
|
Clasificación de un correo electrónico como spam o no spam según el contexto
|
Nota: Existen muchos tipos de modelos adicionales que se usan en el aprendizaje automático (como las redes neuronales y los árboles de decisión) y que están disponibles en bibliotecas como TensorFlow. En el momento de la redacción de este lab, BigQuery ML es compatible con los dos mencionados anteriormente.
¿Qué tipo de modelo deberías elegir?
Dado que estás agrupando a los visitantes en “comprarán en el futuro” o “no comprarán en el futuro”, usa logistic_reg
en un modelo de clasificación.
Mediante la siguiente consulta, se creará un modelo y se especificarán las opciones del modelo.
- Ejecútala para entrenar tu modelo:
CREATE OR REPLACE MODEL `ecommerce.classification_model`
OPTIONS
(
model_type='logistic_reg',
input_label_cols = ['will_buy_on_return_visit']
)
AS
#standardSQL
SELECT
* EXCEPT(fullVisitorId)
FROM
# Atributos
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1
AND date BETWEEN '20160801' AND '20170430') # train on first 9 months
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId)
;
- Espera a que el modelo se entrene (de 5 a 10 minutos).
Nota: Durante el entrenamiento, no puedes ingresar en el modelo todos los datos disponibles, ya que debes reservar algunos datos aún no vistos para la evaluación y prueba del modelo. Si deseas lograr esto, agrega una condición de cláusula WHERE para filtrar los datos de sesión correspondientes a los primeros 9 meses de tu conjunto de datos de 12 meses y realizar el entrenamiento solo en función de ellos.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un modelo y especificar sus opciones
Luego del entrenamiento del modelo, verás el mensaje “This statement created a new model named qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_mode”.
-
Haz clic en Ir al modelo.
-
Observa el conjunto de datos de comercio electrónico y confirma que aparezca classification_model.

A continuación, evaluarás el rendimiento del modelo en comparación con nuevos datos de evaluación no vistos.
Tarea 6. Evalúa el rendimiento del modelo de clasificación
Selecciona tus criterios de rendimiento
Para los problemas de clasificación en AA, lo mejor es minimizar la tasa de falsos positivos (predecir que el usuario regresará y comprará, y no lo hace) y maximizar la tasa de verdaderos positivos (predecir que el usuario regresará y comprará, y sí lo hace).
Esta relación se visualiza con una curva ROC (característica operativa del receptor) como la que se muestra aquí, en la que intentas maximizar el área bajo la curva o AUC:

En BigQuery ML, roc_auc es simplemente un campo que puedes usar para consultas cuando evalúas tu modelo de AA entrenado.
- Ahora que el entrenamiento se completó, ejecuta esta consulta para evaluar qué tan bien se desempeña el modelo a través de
ML.EVALUATE
:
SELECT
roc_auc,
CASE
WHEN roc_auc > .9 THEN 'good'
WHEN roc_auc > .8 THEN 'fair'
WHEN roc_auc > .7 THEN 'decent'
WHEN roc_auc > .6 THEN 'not great'
ELSE 'poor' END AS model_quality
FROM
ML.EVALUATE(MODEL ecommerce.classification_model, (
SELECT
* EXCEPT(fullVisitorId)
FROM
# features
(SELECT
fullVisitorId,
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site
FROM
`data-to-insights.ecommerce.web_analytics`
WHERE
totals.newVisits = 1
AND date BETWEEN '20170501' AND '20170630') # eval on 2 months
JOIN
(SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM
`data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid)
USING (fullVisitorId)
));
Deberías ver el siguiente resultado:
Fila
|
roc_auc
|
model_quality
|
1
|
0.7238561438561438
|
decent
|
Después de evaluar tu modelo, obtienes un roc_auc de 0.72, que muestra que el modelo tiene un poder predictivo aceptable, pero no excelente. Dado que el objetivo es lograr que el área bajo la curva se acerque lo más posible a 1.0, quedan aspectos por mejorar.
Haz clic en Revisar mi progreso para verificar el objetivo.
Evaluar el rendimiento del modelo de clasificación
Tarea 7. Mejora el rendimiento del modelo con ingeniería de atributos
Como se indicó anteriormente, hay muchos más atributos en el conjunto de datos que pueden ayudar a que el modelo comprenda mejor la relación entre la primera sesión de un visitante y la probabilidad de que compre en una visita posterior.
- Agrega atributos nuevos y crea un segundo modelo de aprendizaje automático denominado
classification_model_2
:
- Qué tan lejos llegó el visitante en el proceso de confirmación de la compra en su primera visita
- De dónde vino el visitante (fuente de tráfico: búsqueda orgánica, sitio de referencia, etcétera)
- Categoría del dispositivo (dispositivo móvil, tablet, computadora de escritorio)
- Información geográfica (país)
- Crea este segundo modelo haciendo clic en el ícono "+" (Consulta en SQL):
CREATE OR REPLACE MODEL `ecommerce.classification_model_2`
OPTIONS
(model_type='logistic_reg', input_label_cols = ['will_buy_on_return_visit']) AS
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
# Agrega nuevos atributos
SELECT * EXCEPT(unique_session_id) FROM (
SELECT
CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
# input_label_cols
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# Comportamiento en el sitio
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
IFNULL(totals.pageviews, 0) AS pageviews,
# Origen del visitante
trafficSource.source,
trafficSource.medium,
channelGrouping,
# Dispositivos móviles o computadoras
device.deviceCategory,
# Ubicación geográfica
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE 1=1
# Predice solo las visitas nuevas
AND totals.newVisits = 1
AND date BETWEEN '20160801' AND '20170430' # Entrena el modelo según los datos de 9 meses
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
);
Nota: Todavía estás entrenando el modelo a partir de los mismos primeros 9 meses de datos, incluso con este modelo nuevo. Es importante tener el mismo conjunto de datos de entrenamiento para garantizar que un mejor resultado del modelo se puede atribuir a mejores atributos de entrada y no a datos de entrenamiento nuevos o diferentes.
Un nuevo atributo clave que se agregó a la consulta del conjunto de datos de entrenamiento es el progreso máximo en el proceso de confirmación de la compra que cada visitante alcanzó en su sesión, que se registra en el campo hits.eCommerceAction.action_type
. Si lo buscas en las definiciones de los campos, verás que tiene la asignación de campo de “compra completada = 6”.
Nota:
El conjunto de datos de estadísticas web anidó y repitió campos como ARRAYS que deben dividirse en filas separadas en tu conjunto de datos. Esto se logra con el uso de la función UNNEST(), que puedes ver en la consulta anterior.
- Espera a que el modelo nuevo termine el entrenamiento (de 5 a 10 minutos).
Haz clic en Revisar mi progreso para verificar el objetivo.
Mejorar el rendimiento del modelo con la ingeniería de atributos (Crear un segundo modelo)
- Evalúa este modelo nuevo para ver si tiene mejor poder predictivo:
#standardSQL
SELECT
roc_auc,
CASE
WHEN roc_auc > .9 THEN 'good'
WHEN roc_auc > .8 THEN 'fair'
WHEN roc_auc > .7 THEN 'decent'
WHEN roc_auc > .6 THEN 'not great'
ELSE 'poor' END AS model_quality
FROM
ML.EVALUATE(MODEL ecommerce.classification_model_2, (
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
# Agrega nuevos atributos
SELECT * EXCEPT(unique_session_id) FROM (
SELECT
CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id,
# input_label_cols
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# Comportamiento en el sitio
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# Origen del visitante
trafficSource.source,
trafficSource.medium,
channelGrouping,
# Dispositivos móviles o computadoras
device.deviceCategory,
# Ubicación geográfica
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE 1=1
# Predice solo las visitas nuevas
AND totals.newVisits = 1
AND date BETWEEN '20170501' AND '20170630' # Evalúa 2 meses
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
)
));
Resultado:
Fila
|
roc_auc
|
model_quality
|
1
|
0.9094875124875125
|
good
|
Con este nuevo modelo, ahora obtienes un roc_auc de 0.91, que es significativamente mejor que el primer modelo.
Ahora que tienes un modelo entrenado, es hora de hacer algunas predicciones.
Haz clic en Revisar mi progreso para verificar el objetivo.
Mejorar el rendimiento de los modelos con la ingeniería de atributos (mejor poder predictivo)
Tarea 8. Predice qué nuevos visitantes regresarán y realizarán una compra
A continuación, escribirás una consulta para predecir qué nuevos visitantes regresarán y realizarán una compra.
- La siguiente consulta de predicción utiliza el modelo de clasificación mejorado para predecir la probabilidad de que un visitante nuevo de Google Merchandise Store realice una compra en una próxima visita:
SELECT
*
FROM
ml.PREDICT(MODEL `ecommerce.classification_model_2`,
(
WITH all_visitor_stats AS (
SELECT
fullvisitorid,
IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit
FROM `data-to-insights.ecommerce.web_analytics`
GROUP BY fullvisitorid
)
SELECT
CONCAT(fullvisitorid, '-',CAST(visitId AS STRING)) AS unique_session_id,
# input_label_cols
will_buy_on_return_visit,
MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress,
# Comportamiento en el sitio
IFNULL(totals.bounces, 0) AS bounces,
IFNULL(totals.timeOnSite, 0) AS time_on_site,
totals.pageviews,
# Origen del visitante
trafficSource.source,
trafficSource.medium,
channelGrouping,
# Dispositivos móviles o computadoras
device.deviceCategory,
# Ubicación geográfica
IFNULL(geoNetwork.country, "") AS country
FROM `data-to-insights.ecommerce.web_analytics`,
UNNEST(hits) AS h
JOIN all_visitor_stats USING(fullvisitorid)
WHERE
# Predice solo las visitas nuevas
totals.newVisits = 1
AND date BETWEEN '20170701' AND '20170801' # Prueba 1 mes
GROUP BY
unique_session_id,
will_buy_on_return_visit,
bounces,
time_on_site,
totals.pageviews,
trafficSource.source,
trafficSource.medium,
channelGrouping,
device.deviceCategory,
country
)
)
ORDER BY
predicted_will_buy_on_return_visit DESC;
Las predicciones se realizan en función de los datos del último mes (de un total de 12 meses) del conjunto de datos.
Haz clic en Revisar mi progreso para verificar el objetivo.
Predecir qué nuevos visitantes regresarán y realizarán una compra
Tu modelo ahora mostrará el resultado de sus predicciones para las sesiones de comercio electrónico de julio de 2017. Puedes ver tres campos recién agregados:
- predicted_will_buy_on_return_visit: si el modelo considera que el visitante comprará después (1 = sí)
- predicted_will_buy_on_return_visit_probs.label: el clasificador binario para sí/no
- predicted_will_buy_on_return_visit.probs.prob: la confianza que el modelo tiene en su predicción (1 = 100%)

Tarea 9. Analiza los resultados y la información adicional
Resultados
- Del 6% principal de los visitantes nuevos (ordenados en forma decreciente de probabilidad prevista), más del 6% realiza una compra en una visita posterior.
- Estos usuarios representan casi el 50% de todos los visitantes nuevos que realizan una compra en una visita posterior.
- En general, solo el 0.7% de los visitantes nuevos realizan una compra en una visita posterior.
- Segmentar las campañas para el 6% principal de los visitantes nuevos aumenta 9 veces el ROI de marketing en comparación con segmentarlas para todos.
Información adicional
Sugerencia: Agrega warm_start = true
a las opciones de tu modelo si vuelves a entrenar datos nuevos en un modelo existente para lograr tiempos de entrenamiento más rápidos. Ten en cuenta que no puedes cambiar las columnas de atributos (esto requeriría un nuevo modelo).
roc_auc es solo una de las métricas de rendimiento disponibles durante la evaluación del modelo. También están disponibles las de exactitud, precisión y recuperación. Saber en qué métrica de rendimiento confiar depende en gran medida de cuál es tu objetivo o meta general.
Otros conjuntos de datos para explorar
Puedes utilizar el proyecto bigquery-public-data si deseas explorar el modelado en otros conjuntos de datos, como las tarifas de previsión para viajes en taxi.
- Para abrir el conjunto de datos bigquery-public-data, haz clic en +Agregar. Haz clic en Destaca un proyecto por nombre dentro de Fuentes adicionales.
- Luego, escribe el nombre de
bigquery-public-data
.
- Haz clic en Destacar.
El proyecto bigquery-public-data
aparecerá en la sección Explorador.
Tarea 10. Pon a prueba tus conocimientos
Para poner a prueba tus conocimientos sobre Google Cloud Platform, realiza nuestro cuestionario.
¡Felicitaciones!
Creaste con éxito un modelo de aprendizaje automático en BigQuery ML para clasificar visitantes de comercio electrónico y predecir sus hábitos de compra.
Próximos pasos y más información
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Actualización más reciente del manual: 13 de septiembre de 2024
Prueba más reciente del lab: 13 de septiembre de 2024
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.