Como usar o BigQuery ML para prever o peso de recém-nascidos

Este tutorial ensina analistas de dados a usar o BigQuery ML. Com o BigQuery ML, usuários podem criar e executar modelos de machine learning no BigQuery usando consultas SQL. O objetivo é democratizar o machine learning, 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 a natalitytabela de amostras para criar um modelo que prevê o peso ao nascer de uma criança com base em seu sexo, na duração da gestação e nas informações demográficas da mãe. A tabela de amostras natality contém informações sobre todos os nascimentos nos Estados Unidos dos últimos 40 anos.

Objetivos

Neste tutorial, você usará:

  • o BigQuery ML para criar um modelo de regressão linear 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

Componentes faturáveis do Cloud Platform são usados neste tutorial, como os seguintes:

  • BigQuery
  • BigQuery ML

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

Para saber mais sobre os custos do BigQuery ML, veja a página de preços do BigQuery ML.

Antes de começar

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

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

  2. No Console do GCP, na página do seletor de projetos, selecione ou crie um projeto do GCP.

    Acesse a página do seletor de projetos

  3. Verifique se o faturamento foi ativado no projeto do Google Cloud Platform. Saiba como confirmar que o faturamento está ativado para seu projeto.

  4. O BigQuery é ativado automaticamente em novos projetos. Para ativar o BigQuery em um projeto atual, acesse Ative a(s) BigQuery API necessária(s).

    Ativar a(s) API

Etapa 1: criar um conjunto de dados

A primeira etapa é criar um conjunto de dados do BigQuery para armazenar seu modelo de ML. Para criar o conjunto de dados, faça o seguinte:

  1. Acesse a IU da Web do BigQuery no Console do Cloud.

    Acesse a IU da Web do BigQuery

  2. Na seção Recursos do painel de navegação, clique no nome do seu projeto.

  3. No painel de detalhes, à direita, clique em 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.
    • Para Local dos dados, escolha Estados Unidos (EUA). Atualmente, os conjuntos de dados públicos são armazenados no local multirregional US. Para simplificar, coloque seu conjunto de dados no mesmo local.

      Página Criar conjunto de dados

  5. Mantenha todas as outras configurações padrão e clique em Criar conjunto de dados.

Etapa 2: criar modelo

Agora, crie um modelo de regressão linear usando a tabela amostra de natalidade do BigQuery. Com a consulta SQL padrão abaixo, você cria o modelo usado para prever o peso ao nascer de uma criança.

#standardSQL
CREATE MODEL `bqml_tutorial.natality_model`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['weight_pounds']) AS
SELECT
  weight_pounds,
  is_male,
  gestation_weeks,
  mother_age,
  CAST(mother_race AS string) AS mother_race
FROM
  `bigquery-public-data.samples.natality`
WHERE
  weight_pounds IS NOT NULL
  AND RAND() < 0.001

Além de criar o modelo, a execução do comando CREATE MODEL treina o modelo criado.

Detalhes da consulta

A cláusula CREATE MODEL é usada para criar e treinar o modelo chamado bqml_tutorial.natality_model.

A cláusula OPTIONS(model_type='linear_reg', input_label_cols=['weight_pounds']) indica que você está criando um modelo de regressão linear. Regressão linear é um tipo de modelo de regressão que gera um valor contínuo a partir de uma combinação linear de recursos de entrada. A coluna weight_pounds é a coluna do rótulo de entrada. Para modelos de regressão linear, é preciso que a coluna de rótulo tenha valor real, isto é, os valores da coluna precisam ser números reais.

A instrução SELECT dessa consulta usa as colunas abaixo para prever o peso de uma criança ao nascer:

  • weight_pounds: o peso da criança, em libras (FLOAT64);
  • is_male: TRUE para crianças do sexo masculino, FALSE para sexo feminino (BOOL);
  • gestation_weeks: o número de semanas da gestação (INT64);
  • mother_age: a idade informada da mãe ao dar à luz (INT64);
  • mother_race: um valor inteiro que corresponde à raça da mãe (INT64 - o mesmo que child_race no esquema da tabela). Para que o BigQuery ML trate mother_race como um recurso não numérico, com cada valor distinto representando uma categoria diferente, a consulta converte mother_race em uma STRING. Isso é importante porque é mais provável que a raça funcione mais como categoria do que como um número inteiro, que tem ordenação e escala.

A cláusula FROMbigquery-public-data.samples.natality — indica que você está consultando a tabela de amostras de natalidade no conjunto de dados de amostras. Esse conjunto de dados está no projeto bigquery-public-data.

A cláusula WHEREWHERE weight_pounds IS NOT NULL AND RAND() < 0.001 — exclui linhas em que o peso é NULL e usa a função RAND para desenhar uma amostra aleatória dos dados.

Executar a consulta CREATE MODEL

Para executar a consulta CREATE MODEL para criar e treinar seu modelo:

  1. Na IU da Web do BigQuery, clique em Escrever nova consulta.

  2. Insira a seguinte consulta SQL padrão na área de texto do Editor de consultas.

    #standardSQL
    CREATE MODEL `bqml_tutorial.natality_model`
    OPTIONS
      (model_type='linear_reg',
        input_label_cols=['weight_pounds']) AS
    SELECT
      weight_pounds,
      is_male,
      gestation_weeks,
      mother_age,
      CAST(mother_race AS string) AS mother_race
    FROM
      `bigquery-public-data.samples.natality`
    WHERE
      weight_pounds IS NOT NULL
      AND RAND() < 0.001
    
  3. Clique em Executar.

    A consulta leva por volta 30 segundos para ser concluída. Depois disso, o modelo (natality_model) aparece no painel de navegação da IU da Web do BigQuery. Como a consulta usa uma instrução CREATE MODEL para criar uma tabela, não é possível ver os resultados da consulta.

Etapa 3 (opcional): receber estatísticas de treinamento

Para ver os resultados do treinamento de modelo, é possível usar a função ML.TRAINING_INFO ou visualizar as estatísticas na IU da Web do BigQuery. Neste tutorial, você usará a IU da Web do BigQuery.

Para criar um modelo, um algoritmo de machine learning examina vários exemplos e tenta encontrar 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 treinamento de um modelo visa encontrar um conjunto de ponderações e tendências com uma média de perda menor em todos os exemplos.

Para ver as estatísticas de treinamento do modelo que foram geradas quando você executou a consulta CREATE MODEL:

  1. Na IU da Web do BigQuery, vá até a seção Recursos, expanda [PROJECT_ID] > bqml_tutorial e clique em natality_model.

  2. Clique na guia Treinamento e depois Tabela. Os resultados terão o seguinte formato:

    Saída de ML.TRAINING_INFO

    A coluna Perda de dados de treinamento representa a métrica da perda, calculada depois de o modelo ser treinado no conjunto de dados de treinamento. Como você executou uma regressão linear, essa coluna é o erro quadrático médio. A coluna Perda de dados de avaliação é a mesma métrica de perda calculada no conjunto de dados de validação, ou seja, dados do treinamento mantidos para validar o modelo. Como a estratégia de otimização "normal_equation" é usada automaticamente para o treinamento aqui, apenas uma iteração é exigida para convergir no modelo final. Para mais detalhes sobre a opção optimize_strategy, consulte a Instrução CREATE MODEL.

    Para mais detalhes sobre a função ML.TRAINING_INFO e a opção de treinamento "optimize_strategy", consulte a referência de sintaxe do BigQuery ML.

Etapa 4: avaliar o modelo

Depois de criar o modelo, utilize a função ML.EVALUATE para avaliar o desempenho do classificador. A função ML.EVALUATE avalia os valores previstos em relação aos dados reais.

A consulta usada para avaliar o modelo é a seguinte:

#standardSQL
SELECT
  *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.natality_model`,
    (
    SELECT
      weight_pounds,
      is_male,
      gestation_weeks,
      mother_age,
      CAST(mother_race AS STRING) AS mother_race
    FROM
      `bigquery-public-data.samples.natality`
    WHERE
      weight_pounds IS NOT NULL))

Detalhes da consulta

A principal instrução SELECT recupera as colunas do modelo.

A cláusula FROM usa a função ML.EVALUATE no modelo: bqml_tutorial.natality_model.

A cláusula FROM e a instrução SELECT aninhada dessa consulta são as mesmas da consulta CREATE MODEL.

A cláusula WHEREWHERE weight_pounds IS NOT NULL — exclui linhas em que o peso é NULL.

Também é possível pode chamar ML.EVALUATE sem fornecer os dados de entrada. Ela usará as métricas de avaliação calculadas durante o treinamento:

#standardSQL
SELECT
  *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.natality_model`)

Executar a consulta ML.EVALUATE

Para executar a consulta ML.EVALUATE que avalia o modelo:

  1. Na IU da Web do BigQuery, clique em Escrever nova consulta.

  2. Digite a consulta SQL padrão abaixo na área de texto Editor de consultas.

    #standardSQL
    SELECT
      *
    FROM
      ML.EVALUATE(MODEL `bqml_tutorial.natality_model`,
        (
        SELECT
          weight_pounds,
          is_male,
          gestation_weeks,
          mother_age,
          CAST(mother_race AS STRING) AS mother_race
        FROM
          `bigquery-public-data.samples.natality`
        WHERE
          weight_pounds IS NOT NULL))
    
  3. (Opcional) Para definir o local de processamento, clique em Mais > Configurações de consulta. Para Local de processamento, escolha US. Essa etapa é opcional, já que o local de processamento é detectado automaticamente de acordo com o local do conjunto de dados.

    Configurações de consulta

  4. Clique em Executar.

  5. Após concluir a consulta, clique na guia Resultados abaixo da área de texto da consulta. Os resultados terão o seguinte formato:

    Saída de ML.EVALUATE

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

    • mean_absolute_error
    • mean_squared_error
    • mean_squared_log_error
    • median_absolute_error
    • r2_score
    • explained_variance

Uma métrica importante nos resultados da avaliação é a pontuação R2. A pontuação R2 é uma medida estatística que determina se as previsões de regressão linear se aproximam dos dados reais. 0 indica que o modelo não explica a variabilidade dos dados de resposta em torno da média. 1 indica que o modelo explica toda a variabilidade dos dados de resposta em torno da média.

Etapa 5: usar o modelo para prever resultados

Agora que você avaliou seu modelo, a próxima etapa é usá-lo para prever um resultado. Use-o para prever o peso no nascimento de todos os bebês em Wyoming.

A consulta usada para prever o resultado é a seguinte:

#standardSQL
SELECT
  predicted_weight_pounds
FROM
  ML.PREDICT(MODEL `bqml_tutorial.natality_model`,
    (
    SELECT
      is_male,
      gestation_weeks,
      mother_age,
      CAST(mother_race AS STRING) AS mother_race
    FROM
      `bigquery-public-data.samples.natality`
    WHERE
      state = "WY"))

Detalhes da consulta

A principal instrução SELECT recupera a coluna predicted_weight_pounds. Essa coluna é gerada pela função ML.PREDICT. Ao usar a função ML.PREDICT, o nome da coluna de saída para o modelo é predicted_<label_column_name>. Para modelos de regressão linear, predicted_label é o valor estimado de label. Para modelos de regressão logística, predicted_label é um dos dois rótulos de entrada, dependendo de qual rótulo tem a maior probabilidade prevista.

A função ML.PREDICT é usada para prever resultados usando o modelo: bqml_tutorial.natality_model.

A cláusula FROM e a instrução SELECT aninhada dessa consulta são as mesmas da consulta CREATE MODEL.

A cláusula WHEREWHERE state = "WY" — indica que você está limitando a previsão ao estado de Wyoming.

Executar a consulta ML.PREDICT

Veja como executar a consulta que usa o modelo para prever um resultado:

  1. Na IU da Web do BigQuery, clique em Escrever nova consulta.

  2. Digite a consulta SQL padrão abaixo na área de texto Editor de consultas.

    #standardSQL
    SELECT
      predicted_weight_pounds
    FROM
      ML.PREDICT(MODEL `bqml_tutorial.natality_model`,
        (
        SELECT
          is_male,
          gestation_weeks,
          mother_age,
          CAST(mother_race AS STRING) AS mother_race
        FROM
          `bigquery-public-data.samples.natality`
        WHERE
          state = "WY"))
    
  3. (Opcional) Para definir o local de processamento, clique em Mais > Configurações de consulta. Para Local de processamento, escolha US. Essa etapa é opcional, já que o local de processamento é detectado automaticamente de acordo com o local do conjunto de dados.

    Configurações de consulta

  4. Clique em Executar.

  5. Após concluir a consulta, clique na guia Resultados abaixo da área de texto da consulta. Os resultados terão o seguinte formato:

    Saída de ML.PREDICT

Como fazer a limpeza

Para evitar que os recursos usados neste tutorial sejam cobrados na conta do Google Cloud Platform, faça uma das coisas a seguir:

  • Exclua o projeto que você criou.
  • Mantenha o projeto e exclua o conjunto de dados.

Como excluir seu conjunto de dados

A exclusão do seu projeto removerá todos os conjuntos de dados e tabelas no projeto. Caso prefira reutilizá-lo, exclua o conjunto de dados criado neste tutorial:

  1. Se necessário, abra a IU da Web do BigQuery.

    Acesse a IU da Web do BigQuery

  2. Na navegação, clique no conjunto de dados bqml_tutorial criado.

  3. Clique em Excluir conjunto de dados no lado direito da janela. Essa ação exclui o conjunto, a tabela e todos os dados.

  4. Na caixa de diálogo Excluir conjunto de dados, confirme o comando de exclusão digitando o nome do seu conjunto de dados (bqml_tutorial) e clique em Excluir.

Como excluir o projeto

Para excluir o projeto, faça o seguinte:

  1. No Console do GCP, acesse a página Gerenciar recursos.

    Acessar a página Gerenciar recursos

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID 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…