Obtener información valiosa de un modelo de análisis de contribuciones usando una métrica de ratio resumible

En este tutorial, utilizarás un modelo de análisis de contribución para analizar la contribución de la proporción del coste de las ventas en el conjunto de datos de ventas de bebidas alcohólicas de Iowa. En este tutorial se explica cómo realizar las siguientes tareas:

  • Crea una tabla de entrada basada en datos públicos sobre bebidas alcohólicas de Iowa.
  • Crea un modelo de análisis de contribuciones que use una métrica de ratio resumible. Este tipo de modelo resume los valores de dos columnas numéricas y determina las diferencias de proporción entre los conjuntos de datos de control y de prueba de cada segmento de los datos.
  • Para obtener las estadísticas de la métrica del modelo, usa la función ML.GET_INSIGHTS.

Antes de empezar este tutorial, debes familiarizarte con el caso práctico de análisis de contribuciones.

Permisos obligatorios

  • Para crear el conjunto de datos, necesitas el permiso bigquery.datasets.create de Gestión de Identidades y Accesos (IAM).

  • Para crear el modelo, necesitas los siguientes permisos:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • Para ejecutar la inferencia, necesitas los siguientes permisos:

    • bigquery.models.getData
    • bigquery.jobs.create

Costes

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Para obtener más información sobre los precios de BigQuery, consulta la página Precios de BigQuery en la documentación de BigQuery.

Antes de empezar

  1. 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Crear conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tu modelo de aprendizaje automático.

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a la página de BigQuery

  2. En el panel Explorador, haz clic en el nombre de tu proyecto.

  3. Haga clic en Ver acciones > Crear conjunto de datos.

  4. En la página Crear conjunto de datos, haz lo siguiente:

    • En ID del conjunto de datos, introduce bqml_tutorial.

    • En Tipo de ubicación, selecciona Multirregión y, a continuación, EE. UU. (varias regiones de Estados Unidos).

    • Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.

bq

Para crear un conjunto de datos, usa el comando bq mk con la marca --location. Para ver una lista completa de los parámetros posibles, consulta la referencia del comando bq mk --dataset.

  1. Crea un conjunto de datos llamado bqml_tutorial con la ubicación de los datos definida como US y la descripción BigQuery ML tutorial dataset:

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    En lugar de usar la marca --dataset, el comando usa el acceso directo -d. Si omite -d y --dataset, el comando creará un conjunto de datos de forma predeterminada.

  2. Confirma que se ha 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"
  }
}

BigQuery DataFrames

Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican 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 los DataFrames de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Crear una tabla de datos de entrada

Crea una tabla que contenga los datos de prueba y de control que quieras analizar. La siguiente consulta crea dos tablas intermedias: una tabla de prueba con datos de bebidas alcohólicas del 2021 y una tabla de control con datos de bebidas alcohólicas del 2020. A continuación, realiza una unión de las tablas intermedias para crear una tabla con filas de prueba y de control, así como con el mismo conjunto de columnas.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucción:

    CREATE OR REPLACE TABLE bqml_tutorial.iowa_liquor_sales_data AS
    (SELECT
      store_name,
      city,
      vendor_name,
      category_name,
      item_description,
      SUM(sale_dollars) AS total_sales,
      SUM(state_bottle_cost) AS total_bottle_cost,
      FALSE AS is_test
    FROM `bigquery-public-data.iowa_liquor_sales.sales`
    WHERE EXTRACT(YEAR FROM date) = 2020
    GROUP BY store_name, city, vendor_name, category_name, item_description, is_test)
    UNION ALL
    (SELECT
      store_name,
      city,
      vendor_name,
      category_name,
      item_description,
      SUM(sale_dollars) AS total_sales,
      SUM(state_bottle_cost) AS total_bottle_cost,
      TRUE AS is_test
    FROM `bigquery-public-data.iowa_liquor_sales.sales`
    WHERE EXTRACT(YEAR FROM date) = 2021
    GROUP BY store_name, city, vendor_name, category_name, item_description, is_test);

Crear el modelo

Crea un modelo de análisis de contribución:

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucción:

    CREATE OR REPLACE MODEL bqml_tutorial.liquor_sales_model
    OPTIONS(
      model_type = 'CONTRIBUTION_ANALYSIS',
      contribution_metric = 'sum(total_bottle_cost)/sum(total_sales)',
      dimension_id_cols = ['store_name', 'city', 'vendor_name', 'category_name', 'item_description'],
      is_test_col = 'is_test',
      min_apriori_support = 0.05
    ) AS
    SELECT * FROM bqml_tutorial.iowa_liquor_sales_data;

La consulta tarda unos 35 segundos en completarse. Después, el modelo liquor_sales_model aparece en el conjunto de datos bqml_tutorial del panel Explorador. Como la consulta usa una instrucción CREATE MODEL para crear un modelo, no hay resultados de consulta.

Obtener información valiosa del modelo

Obtén las estadísticas generadas por el modelo de análisis de contribuciones usando la función ML.GET_INSIGHTS.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente instrucción para seleccionar columnas de la salida de un modelo de análisis de contribución de métricas de proporción sumables:

    SELECT
    contributors,
    metric_test,
    metric_control,
    metric_test_over_metric_control,
    metric_test_over_complement,
    metric_control_over_complement,
    aumann_shapley_attribution,
    apriori_support
    contribution
    FROM
      ML.GET_INSIGHTS(
        MODEL `bqml_tutorial.liquor_sales_model`)
    ORDER BY aumann_shapley_attribution DESC;

Las primeras filas de la salida deberían ser similares a las siguientes. Los valores se truncan para mejorar la legibilidad.

tiempo para hablar con nosotros y con los Colaboradores principales rusófonos. metric_test metric_control metric_test_over_metric_control metric_test_over_complement metric_control_over_complement aumann_shapley_attribution apriori_support contribución
todos 0,069 0,071 0,969 null null -0,00219 1.0 0,00219
city=DES MOINES 0,048 0,054 0,88 0,67 0,747 -0,00108 0,08 0,00108
vendor_name=DIAGEO AMERICAS 0,064 0,068 0,937 0,917 0,956 -0,0009 0,184 0,0009
vendor_name=BACARDI USA INC 0,071 0,082 0,857 1,025 1167 -0,00054 0,057 0,00054
vendor_name=PERNOD RICARD USA 0,068 0,077 0,89 0,988 1,082 -0,0005 0,061 0,0005

En el resultado, puede ver que el segmento de datos city=DES MOINES tiene la mayor contribución al cambio en la proporción de ventas. También puede ver esta diferencia en las columnas metric_test y metric_control, que muestran que la proporción ha disminuido en los datos de prueba en comparación con los datos de control. Otras métricas, como metric_test_over_metric_control, metric_test_over_complement y metric_control_over_complement, calculan estadísticas adicionales que describen la relación entre las ratios de control y de prueba, y cómo se relacionan con la población en general. Para obtener más información, consulte Resultados de los modelos de análisis de contribuciones de métricas de ratio resumibles.

Limpieza

  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.