Primeiros passos com o BigQuery ML para cientistas de dados

Neste tutorial, apresentamos aos cientistas de dados o BigQuery ML. Com ele, os usuários poderão criar e executar modelos de aprendizado de máquina no BigQuery usando consultas SQL. O objetivo é democratizar o aprendizado de máquina, de modo que os especialistas em SQL criem modelos usando as respectivas ferramentas e aumentem a velocidade de desenvolvimento ao eliminar a necessidade de movimentar os dados.

Neste tutorial, você usa o conjunto de dados de amostra do Google Analytics para BigQuery e cria um modelo que prevê se um visitante do site fará uma transação. Para informações sobre o esquema do conjunto de dados do Google Analytics, veja o esquema do BigQuery Export na Central de Ajuda do Google Analytics.

Objetivos

Neste tutorial, você usará:

  • o BigQuery ML para criar um modelo de regressão logística binária usando a instrução CREATE MODEL;
  • a função ML.EVALUATE para avaliar o modelo de ML;
  • a função ML.PREDICT para fazer previsões usando o modelo de ML.

Custos

Este tutorial usa componentes faturáveis do Cloud Platform, incluindo:

  • Google BigQuery
  • BigQuery ML
  • Cloud Datalab

Para ver mais informações sobre custos do BigQuery, consulte a página Preços.

Para saber mais informações sobre os custos do BigQuery ML, consulte a seção de Preços do BigQuery ML na página de preços.

Para ver mais informações sobre os custos do Cloud Datalab, consulte a página Preços do Cloud Datalab.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. Selecione ou crie um projeto do GCP.

    Acessar a página Gerenciar recursos

  3. Verifique se o faturamento foi ativado para o projeto.

    Saiba como ativar o faturamento

  4. O BigQuery é ativado automaticamente nos novos projetos. Para ativar o BigQuery em um projeto existente, acesse Ativar BigQuery API.

    Ativar API

Público

Este é um tutorial de apresentação, destinado a cientistas de dados.

Um cientista de dados usa o SQL padrão do BigQuery e o BigQuery ML para:

  • explorar, analisar e visualizar dados;
  • limpar conjuntos de dados para uso em modelos estatísticos;
  • criar modelos estatísticos e de ML;
  • criar, treinar, avaliar e aprimorar algoritmos e modelos de ML;
  • explorar dados em um armazenamento de dados, como o BigQuery.

Um cientista de dados usa diversas ferramentas, como:

  • a ferramenta de linha de comando do BigQuery, para consultar dados usando o SQL padrão;
  • software estatístico, como o RStudio e o Matlab;
  • o Cloud Datalab (notebooks do Jupyter);
  • AI Platform;
  • linguagens de programação, como Python e Java;
  • bibliotecas de ML, como MLlib e TensorFlow;
  • ferramentas de visualização, como o Cloud Datalab e o Google Data Studio.

Como este tutorial é destinado a cientistas de dados, muitos detalhes relacionados aos conceitos de ML não são explicados. Para ver uma versão mais detalhada deste tutorial que usa a IU da Web do BigQuery, vá para Introdução ao BigQuery ML para analistas de dados.

Consulte as descrições dos conceitos aqui apresentados em:

Etapa 1: configurar o Cloud Datalab

Neste tutorial, você configura o Cloud Datalab usando o Cloud Shell. Com o Cloud Datalab, você tem um ambiente de notebook baseado em Jupyter que poderá usar para trabalhar com o BigQuery ML e o BigQuery.

Antes de configurar o Cloud Datalab é preciso ativar a API Compute Engine e a API Cloud Source Repositories. Para informações sobre como ativar essas APIs, consulte Como ativar e desativar serviços.

Para configurar o Cloud Datalab em uma VM do Compute Engine:

  1. Acesse o Console do GCP.

    Console do GCP

  2. Clique em Ativar o Cloud Shell.

    Ícone "Ativar Cloud Shell"

  3. Na janela do Cloud Shell, insira o comando abaixo para configurar a ferramenta gcloud para usar "us-central1-a" como zona padrão no SDK do Cloud. Essa zona conterá a instância do Cloud Datalab.

    gcloud config set compute/zone us-central1-a
    
  4. Insira o comando abaixo para criar uma VM do Compute Engine (denominada mltutorial) que é usada para executar o contêiner do Cloud Datalab. Esse comando também cria uma conexão SSH com a VM e mapeia a interface da Web do Cloud Datalab remota para a porta localhost 8081. Se solicitado, insira o número correspondente à zona padrão do Compute Engine.

    datalab create mltutorial
    

    Após ver a mensagem The connection to Datalab is now open and will remain until this command is killed, você estará conectado à instância. É possível que a interface de linha de comando deixe de produzir saídas assim que a conexão SSH for estabelecida.

  5. Na janela do Cloud Shell, clique no ícone Visualização da WebÍcone de visualização da Web.

  6. Selecione Alterar porta.

  7. Na caixa de diálogo Alterar porta de visualização, digite 8081 e clique em Alterar e visualizar. Isso abre o Cloud Datalab em uma nova guia.

    gcloud compute ssh --quiet --zone "us-central1-a" --ssh-flag="-N" --ssh-flag="-L" --ssh-flag="localhost:8081:localhost:8080" "${USER}@mltutorial"
    
  8. Clique em Notebook para criar um novo bloco de notas. Ele será aberto em uma nova guia.

  9. Na barra de título, clique em Notebook sem título para alterar o nome do notebook.

  10. Na caixa de diálogo Renomear notebook, digite BigQuery ML tutorial e clique em Ok.

  11. Na primeira célula de código, digite o comando abaixo para atualizar para a versão mais recente da biblioteca de cliente em Python do BigQuery.

    !pip install --upgrade google-cloud-bigquery
    
  12. Clique em Executar > Executar desta célula. Os resultados da consulta são exibidos abaixo do bloco de código. A instalação estará concluída quando você visualizar a seguinte mensagem:

    Successfully installed ...

  13. O código produzirá saída. Para ocultá-la, clique no menu da célula e selecione Recolher.

    Menu da célula

  14. Clique em Adicionar código para criar uma nova célula de código.

  15. Digite o código abaixo para importar a biblioteca de cliente em Python do BigQuery e inicializar um cliente. O cliente do BigQuery é usado para enviar e receber mensagens da API do BigQuery.

    from google.cloud import bigquery
    client = bigquery.Client(location="US")
    
  16. Clique em Executar > Executar desta célula. Esse comando não produz saída.

Etapa 2: criar o conjunto de dados

Veja a seguir como criar um conjunto de dados do BigQuery para armazenar seu modelo de ML. Para criar o conjunto de dados, faça o seguinte:

  1. Clique em Adicionar código para criar uma nova célula de código.

  2. Digite o comando abaixo para criar o conjunto de dados.

    dataset = client.create_dataset('bqml_tutorial')
    
  3. Clique em Run > Run from this cell (Executar > Executar desta célula). Este comando não produz saída.

Etapa 3: criar o modelo

Em seguida, você cria um modelo de regressão logística usando o conjunto de dados de amostra do Google Analytics para o BigQuery. O modelo é usado para prever se um visitante do site fará uma transação. A consulta SQL padrão usa uma instrução CREATE MODEL para criar e treinar o modelo.

Para executar a consulta CREATE MODEL para criar e treinar seu modelo, faça o seguinte:

  1. Clique em Adicionar código para criar uma nova célula de código.

  2. A biblioteca de cliente em Python do BigQuery fornece um comando mágico com que é possível executar consultas com uma codificação mínima. Para carregar os comandos mágicos da biblioteca de cliente, insira o código abaixo:

    %load_ext google.cloud.bigquery
    
  3. Clique em Executar > Executar desta célula. Esse comando não produz saída.

  4. Clique em Adicionar código para criar uma nova célula de código.

  5. A biblioteca de cliente do BigQuery fornece um comando mágico de célula, %%bigquery, que executa uma consulta SQL e retorna os resultados como um DataFrame do Pandas. Na célula, digite a consulta SQL padrão a seguir. O prefixo #standardSQL não é necessário para a biblioteca de cliente. SQL padrão é a sintaxe de consulta padrão.

    %%bigquery
    CREATE OR REPLACE MODEL `bqml_tutorial.sample_model`
    OPTIONS(model_type='logistic_reg') AS
    SELECT
      IF(totals.transactions IS NULL, 0, 1) AS label,
      IFNULL(device.operatingSystem, "") AS os,
      device.isMobile AS is_mobile,
      IFNULL(geoNetwork.country, "") AS country,
      IFNULL(totals.pageviews, 0) AS pageviews
    FROM
      `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
      _TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
    
  6. Clique em Executar > Executar desta célula.

  7. A consulta leva alguns minutos para ser concluída. Depois que a primeira iteração for concluída, seu modelo (sample_model) aparecerá no painel de navegação da IU da Web do BigQuery. Como na consulta é usada uma instrução CREATE MODEL para criar a tabela, você não verá os resultados da consulta. A saída será uma string vazia.

Etapa 4: receber as estatísticas de treinamento

Para ver os resultados do treinamento de modelo, use a função ML.TRAINING_INFO ou visualize as estatísticas na IU da Web do BigQuery. No momento, essa funcionalidade não está disponível na IU da Web do BigQuery Classic. Neste tutorial, você usará a função ML.TRAINING_INFO.

Com um algoritmo de machine learning, você examina muitos exemplos para criar um modelo que minimize a perda. Esse processo é chamado de "minimização de riscos empíricos".

Perda é a penalidade para uma previsão ruim, ou seja, um número que indica como a previsão do modelo foi ruim em um único exemplo. Para uma previsão de modelo perfeita, a perda é zero. Caso contrário, a perda é maior. O objetivo de treinar um modelo é encontrar um conjunto de pesos com baixa perda, em média, em todos os exemplos.

Para ver as estatísticas de treinamento do modelo geradas quando você executou a consulta CREATE MODEL, faça o seguinte:

  1. Clique em Adicionar código para criar uma nova célula de código.

  2. Na célula, digite a consulta SQL padrão a seguir.

    %%bigquery
    SELECT
      *
    FROM
      ML.TRAINING_INFO(MODEL `bqml_tutorial.sample_model`)
    
  3. Clique em Executar > Executar desta célula.

  4. Quando a consulta for concluída, os resultados serão exibidos logo abaixo. Os resultados terão a aparência a seguir:

    Saída de ML.TRAINING_INFO

    A coluna de loss representa a métrica de perda, calculada após a iteração especificada no conjunto de dados de treinamento. Você executou uma regressão logística. Portanto, essa coluna é a perda do registro. A coluna eval_loss é a mesma métrica de perda calculada no conjunto de dados de validação ou seja, os dados que são retidos do treinamento para validar o modelo.

    Para mais detalhes sobre a função ML.TRAINING_INFO, consulte a referência da sintaxe do BigQuery ML.

Etapa 5: avaliar o modelo

Depois de criar o modelo, avalie o desempenho do classificador usando a função ML.EVALUATE. Também é possível usar a função ML.ROC_CURVE para métricas específicas de regressão logística.

Um classificador é um dos valores em um conjunto de valores de destino enumerados para um rótulo. Por exemplo, neste tutorial, você está usando um modelo de classificação binária que detecta transações. As duas classes são os valores na coluna label: 0 (sem transações) e não 1 (transação feita).

Para executar a consulta ML.EVALUATE, que avalia o modelo, faça o seguinte:

  1. Clique em Adicionar código para criar uma nova célula de código.

  2. Na célula, digite a consulta SQL padrão a seguir.

    %%bigquery
    SELECT
      *
    FROM ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IF(totals.transactions IS NULL, 0, 1) AS label,
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(geoNetwork.country, "") AS country,
        IFNULL(totals.pageviews, 0) AS pageviews
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
    
  3. Clique em Executar > Executar desta célula.

  4. Quando a consulta for concluída, os resultados serão exibidos logo abaixo. Os resultados terão a aparência a seguir:

    Saída de ML.EVALUATE

    Como você executou uma regressão logística, os resultados incluem as seguintes colunas:

Etapa 6: usar o modelo para prever resultados

Agora que você avaliou o modelo, a próxima etapa é usá-lo para prever resultados. Use seu modelo para prever o número de transações feitas pelos visitantes do site de cada país. E também use o modelo para prever compras por usuário.

Para executar a consulta que usa o modelo para prever o número de transações:

  1. Clique em Adicionar código para criar uma nova célula de código.

  2. Na célula, digite a consulta SQL padrão a seguir.

    %%bigquery
    SELECT
      country,
      SUM(predicted_label) as total_predicted_purchases
    FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(totals.pageviews, 0) AS pageviews,
        IFNULL(geoNetwork.country, "") AS country
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
      GROUP BY country
      ORDER BY total_predicted_purchases DESC
      LIMIT 10
    
  3. Clique em Executar > Executar desta célula.

  4. Quando a consulta for concluída, os resultados serão exibidos logo abaixo. Os resultados terão a aparência a seguir. Como o treinamento de modelo não é determinístico, seus resultados podem ser diferentes.

    Saída um de ML.PREDICT

No próximo exemplo, você tentará prever o número de transações que os visitantes do site farão. Essa consulta é idêntica à consulta anterior, exceto pela cláusula GROUP BY. Aqui, a cláusula GROUP BY - GROUP BY fullVisitorId - é usada para agrupar os resultados por código de visitante.

Para executar a consulta que prevê compras por usuário:

  1. Clique em Adicionar código para criar uma nova célula de código.

  2. Na célula, digite a consulta SQL padrão a seguir.

    %%bigquery
    SELECT
      fullVisitorId,
      SUM(predicted_label) as total_predicted_purchases
    FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(totals.pageviews, 0) AS pageviews,
        IFNULL(geoNetwork.country, "") AS country,
        fullVisitorId
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
      GROUP BY fullVisitorId
      ORDER BY total_predicted_purchases DESC
      LIMIT 10
    
  3. Clique em Executar > Executar desta célula.

  4. Quando a consulta for concluída, os resultados serão exibidos logo abaixo. Os resultados terão a aparência a seguir:

    Saída dois de ML.PREDICT

Limpeza

Para evitar cobranças dos recursos usados neste tutorial na conta do Google Cloud Platform:

  • exclua o projeto que você criou; ou
  • mantenha-o e exclua a VM do Cloud Datalab.

Como excluir a VM do Cloud Datalab

A exclusão do projeto remove a VM do Cloud Datalab. Se não quiser que o projeto do Cloud Platform seja excluído, exclua a VM do Cloud Datalab.

Para excluir a VM do Cloud Datalab, faça o seguinte:

  1. Abra a página "Instâncias de VMs" do Compute Engine.

    Acessar a página "Instâncias de VMs"

  2. Marque a instância do mltutorial e clique em Excluir.

  3. Quando solicitado, clique em Excluir.

Como excluir o projeto

Para excluir o projeto:

  1. No Console do GCP, acesse a página "Projetos".

    Acessar a página Projetos

  2. Na lista de projetos, selecione um e clique em Excluir projeto.
  3. Na caixa de diálogo, digite o código do projeto e clique em Encerrar para excluí-lo.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.