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

Neste tutorial, você vai usar um modelo de análise de contribuição para analisar as mudanças nas tarifas de táxis entre 2011 e 2012 na cidade de Nova York. Este tutorial vai orientar você a realizar as seguintes tarefas:

  • Criação de uma tabela de entrada com base em dados de táxis disponíveis publicamente.
  • Crie um modelo de análise de contribuição que use uma métrica com somável. Esse tipo de modelo resume uma determinada métrica para uma combinação de uma ou mais dimensões nos dados, para determinar como essas dimensões contribuem para o valor da métrica.
  • Receba os insights de métricas do modelo usando a função ML.GET_INSIGHTS.

Antes de iniciar este tutorial, você precisa conhecer 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ê 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 uma avaliação gratuita.

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.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery API.

    Enable the API

Criar um conjunto de dados

Crie um conjunto de dados do BigQuery para armazenar o modelo de ML:

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

    Acesse 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.

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

      Os conjuntos de dados públicos são armazenados na multirregião US. Para simplificar, armazene seus conjuntos de dados no mesmo local.

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

      Página Criar conjunto de dados.

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 táxis de 2012 e uma de controle com dados de táxis de 2011, e realiza 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.taxi_control_and_test
    AS (
      SELECT
        vendor_id,
        passenger_count,
        payment_type,
        pickup_location_id,
        EXTRACT(MONTH FROM pickup_datetime) AS month,
        AVG(total_amount) AS avg_total_fare,
        FALSE AS is_test
      FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2011`
      WHERE total_amount > 0
      GROUP BY vendor_id, passenger_count, payment_type, pickup_location_id, month, is_test
    )
    UNION ALL
    (
      SELECT
        vendor_id,
        passenger_count,
        payment_type,
        pickup_location_id,
        EXTRACT(MONTH FROM pickup_datetime) AS month,
        AVG(total_amount) AS avg_total_fare,
        TRUE AS is_test
      FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2012`
      WHERE total_amount > 0
      GROUP BY vendor_id, passenger_count, payment_type, pickup_location_id, month, 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.taxi_contribution_analysis_model`
      OPTIONS (
        MODEL_TYPE = 'CONTRIBUTION_ANALYSIS',
        CONTRIBUTION_METRIC = 'SUM(avg_total_fare)',
        DIMENSION_ID_COLS =
          ['vendor_id', 'passenger_count', 'pickup_location_id', 'payment_type', 'month'],
        IS_TEST_COL = 'is_test',
        MIN_APRIORI_SUPPORT = 0.05)
    AS
    SELECT * FROM bqml_tutorial.taxi_control_and_test;

A consulta leva cerca de 20 segundos para ser concluída. Depois disso, o modelo taxi_contribution_analysis_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:

    SELECT
      *
    FROM
      ML.GET_INSIGHTS(
        MODEL `bqml_tutorial.taxi_contribution_analysis_model`)
    ORDER BY unexpected_difference DESC;

    As primeiras linhas da saída vão ser parecidas com esta:

    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    |           contributors           | vendor_id | passenger_count | payment_type | pickup_location_id | month |    metric_test    |  metric_control  |    difference    | relative_difference | unexpected_difference | relative_unexpected_difference | apriori_support |
    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["all"]                          | NULL      |            NULL | NULL         | NULL               |  NULL | 1305121.630946658 | 983978.603443601 | 321143.027503057 |         0.326371962 |      321143.027503057 |                    0.326371962 |               1 |
    | ["payment_type=5","vendor_id=2"] | 2         |            NULL | 5            | NULL               |  NULL |    82996.99307095 |                0 |   82996.99307095 |                NULL |        82996.99307095 |                           NULL |     0.063593301 |
    | ["payment_type=5"]               | NULL      |            NULL | 5            | NULL               |  NULL |    82996.99307095 |           138.26 |   82858.73307095 |       599.296492629 |       82825.246757081 |                  482.253417818 |     0.063593301 |
    | ["payment_type=3","vendor_id=1"] | 1         |            NULL | 3            | NULL               |  NULL |   82167.169133767 |                0 |  82167.169133767 |                NULL |       82167.169133767 |                           NULL |      0.06295748 |
    | ["payment_type=3"]               | NULL      |            NULL | 3            | NULL               |  NULL |   82167.169133767 |                0 |  82167.169133767 |                NULL |       82167.169133767 |                           NULL |      0.06295748 |
    | ["payment_type=4","vendor_id=1"] | 1         |            NULL | 4            | NULL               |  NULL |   67418.589902631 |                0 |  67418.589902631 |                NULL |       67418.589902631 |                           NULL |      0.05165694 |
    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    

    Como você realizou a análise de contribuição em uma métrica somável, os resultados contêm as colunas de saída de métricas 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.