Receber insights de dados de um modelo de análise de contribuição usando uma métrica de proporção somável

Neste tutorial, você vai usar um modelo de análise de contribuição para analisar a contribuição da proporção do custo de vendas no conjunto de dados de vendas de bebidas alcoólicas de Iowa. Este tutorial vai orientar você nas tarefas a seguir:

  • Crie uma tabela de entrada com base nos dados de bebidas alcoólicas de Iowa disponíveis publicamente.
  • Crie um modelo de análise de contribuição que use uma métrica de proporção somável. Esse tipo de modelo resume os valores de duas colunas numéricas e determina as diferenças de proporção entre os conjuntos de dados de controle e de teste para cada segmento dos dados.
  • Receba os insights de métricas do modelo usando a função ML.GET_INSIGHTS.

Antes de começar este tutorial, familiarize-se com o caso de uso da análise de contribuição.

Permissões necessárias

  • Para criar o conjunto de dados, você precisa da permissão bigquery.datasets.create do Identity and Access Management (IAM).

  • Para criar o modelo, você precisa das seguintes permissões:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • Para executar a inferência, você precisa das seguintes permissões:

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

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

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

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para um teste sem custo financeiro.

Para mais informações, consulte Preços do BigQuery na documentação do BigQuery.

Antes de começar

  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

crie um conjunto de dados

Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.

Console

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar a página do BigQuery

  2. No painel Explorer, clique no nome do seu projeto.

  3. Clique em Conferir ações > Criar conjunto de dados.

  4. Na página Criar conjunto de dados, faça o seguinte:

    • Para o código do conjunto de dados, insira bqml_tutorial.

    • Em Tipo de local, selecione Multirregião e EUA (várias regiões nos Estados Unidos).

    • Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.

bq

Para criar um novo conjunto de dados, utilize o comando bq mk com a sinalização --location. Para obter uma lista completa de parâmetros, consulte a referência comando bq mk --dataset.

  1. Crie um conjunto de dados chamado bqml_tutorial com o local dos dados definido como US e uma descrição de BigQuery ML tutorial dataset:

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

    Em vez de usar a flag --dataset, o comando usa o atalho -d. Se você omitir -d e --dataset, o comando vai criar um conjunto de dados por padrão.

  2. Confirme se o conjunto de dados foi criado:

    bq ls

API

Chame o método datasets.insert com um recurso de conjunto de dados definido.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.

import google.cloud.bigquery

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

Criar uma tabela de dados de entrada

Crie uma tabela com dados de teste e controle para analisar. A consulta a seguir cria duas tabelas intermediárias, uma de teste com dados de bebidas alcoólicas de 2021 e outra de controle com dados de 2020. Em seguida, ela faz uma união das tabelas intermediárias para criar uma tabela com linhas de teste e de controle e o mesmo conjunto de colunas.

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte instrução:

    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);

Criar o modelo

Crie um modelo de análise de contribuição:

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte instrução:

    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;

A consulta leva cerca de 35 segundos para ser concluída. Depois disso, o modelo liquor_sales_model aparece no conjunto de dados bqml_tutorial no painel Explorer. Como a consulta usa uma instrução CREATE MODEL para criar um modelo, não há resultados de consulta.

Receber insights do modelo

Receba insights gerados pelo modelo de análise de contribuição usando a função ML.GET_INSIGHTS.

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte instrução para selecionar colunas da saída de um modelo de análise de contribuição de métrica de proporção somável:

    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;

As primeiras linhas da saída serão parecidas com esta: Os valores são truncados para melhorar a legibilidade.

russo. metric_test metric_control metric_test_over_metric_control metric_test_over_complement metric_control_over_complement aumann_shapley_attribution apriori_support contribuição
todas 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 1.167 -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

Na saída, é possível ver que o segmento de dados city=DES MOINES tem a maior contribuição de mudança na proporção de vendas. Você também pode conferir essa diferença nas colunas metric_test e metric_control, que mostram que a proporção diminuiu nos dados de teste em comparação com os dados de controle. Outras métricas, como metric_test_over_metric_control, metric_test_over_complement e metric_control_over_complement, calculam estatísticas adicionais que descrevem a relação entre as proporções de controle e teste e como elas se relacionam com a população geral. Para mais informações, consulte Saída para modelos de análise de contribuição de métricas de proporção somáveis.

Limpar

  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.