Saiba como criar um sistema para prever a propensão do cliente à compra usando o BigQuery ML e o AI Platform.
É possível usar um sistema de propensão à compra para prever os clientes com maior probabilidade de fazer uma compra, a fim de poder personalizar a comunicação com eles. Use predições on-line para realizar ações em tempo real com base no comportamento do usuário no seu site ou predições em lote para informar comunicações menos urgentes, como e-mails.
Neste tutorial, mostramos como criar um modelo de regressão logística para determinar se um cliente fará uma compra. Esse tipo de modelo é usado porque é bom para avaliar a probabilidade de um resultado. O modelo avalia as métricas que refletem o comportamento do cliente em um site e atribui ao cliente a probabilidade de comprar valor entre 0 e 1 com base nesses dados. Em seguida, o modelo define um rótulo que indica "propenso a comprar" para qualquer cliente com uma probabilidade maior que 0,5.
Neste tutorial, usamos o exemplo do Google Analytics e os conjuntos de dados de comércio eletrônico para treinar o modelo. Esses conjuntos de dados são hospedados publicamente no BigQuery. Esses conjuntos de dados disponibilizam 12 meses (de agosto de 2016 a agosto de 2017) de dados ofuscados do Analytics 360 da Google Merchandise Store, uma loja de comércio eletrônico real que vende produtos da marca do Google.
Para aplicar as lições deste tutorial a um caso de uso de produção, você pode usar seus próprios dados do Analytics 360 ou de um sistema semelhante que fornece acesso a métricas sobre o comportamento do cliente no seu site.
Objetivos
A solução envolve as seguintes etapas:
- Processe dados de amostra em um formato adequado para o treinamento do modelo.
- Crie, treine e implante o modelo no BigQuery.
- Avalie o modelo para entender o desempenho dele.
- Use o modelo treinado implantado no BigQuery para receber predições em lote.
- Implante o modelo treinado no AI Platform.
- Use o modelo treinado implantado no AI Platform para receber predições on-line.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
- AI Platform
- BigQuery
- BigQuery ML
- Cloud Storage
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative a API AI Platform Training and Prediction.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative a API AI Platform Training and Prediction.
Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Para mais informações, consulte Limpeza.
Preparar os dados de amostra
Para treinar o modelo, é necessária uma tabela com as seguintes colunas:
fullVisitorId
: contém o ID do cliente.bounces
: identifica o número de vezes que um visitante clicou em um anúncio social ou de pesquisa e iniciou uma sessão no site, mas saiu sem interagir com outras páginas. Essa coluna é usada como um dos recursos do modelo.time_on_site
: identifica o tempo total da sessão do cliente no site, expresso em segundos. Essa coluna é usada como os recursos do modelo.will_buy_on_return_visit
: um rótulo que indica a propensão do cliente à compra. O valor1
indica que o cliente provavelmente comprará. Um valor de0
indica que o cliente provavelmente não comprará.
Siga estas etapas para criar essa tabela usando dados do conjunto de dados de amostra do Google Analytics:
- Abra o conjunto de dados de amostra do Google Analytics no Google Cloud Marketplace e clique em Visualizar conjunto de dados. Isso abre o console do BigQuery com o conjunto de dados de amostra do Google Analytics selecionado.
- Na seção Recursos, selecione o projeto em que você está fazendo este tutorial.
Clique em Criar conjunto de dados.
Na página Criar conjunto de dados, faça o seguinte:
- Em ID do conjunto de dados, digite
bqml
. - Em Local dos dados, escolha o local mais próximo de você.
- Clique em Criar conjunto de dados.
- Em ID do conjunto de dados, digite
No Editor de consultas, execute a seguinte instrução SQL para criar uma tabela com os dados de treinamento.
# select initial features and label to feed into your model CREATE OR REPLACE TABLE bqml.propensity_data AS SELECT fullVisitorId, bounces, time_on_site, will_buy_on_return_visit FROM ( # select features SELECT fullVisitorId, IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site FROM `data-to-insights.ecommerce.web_analytics` WHERE totals.newVisits = 1 AND date BETWEEN '20160801' # train on first 9 months of data AND '20170430' ) JOIN ( SELECT fullvisitorid, IF ( COUNTIF ( totals.transactions > 0 AND totals.newVisits IS NULL ) > 0, 1, 0 ) AS will_buy_on_return_visit FROM `bigquery-public-data.google_analytics_sample.*` GROUP BY fullvisitorid ) USING (fullVisitorId) ORDER BY time_on_site DESC;
Execute a seguinte instrução SQL para ver uma amostra da data na tabela
bqml.propensity_data
resultante:SELECT * FROM bqml.propensity_data LIMIT 10;
Os resultados serão semelhantes aos exibidos abaixo:
Criar e treinar o modelo
Crie um modelo que faça previsões sobre a propensão do cliente à compra, com base no comportamento on-line do cliente, como identificado pelos dados bounces
e time_on_site
.
Execute a instrução SQL CREATE MODEL para criar, treinar e implantar o modelo de regressão logística:
CREATE OR REPLACE MODEL `bqml.rpm_bqml_model`
OPTIONS(MODEL_TYPE = 'logistic_reg',
labels = [ 'will_buy_on_return_visit' ]
)
AS
SELECT * EXCEPT (fullVisitorId)
FROM `bqml.propensity_data`;
O treinamento pode levar vários minutos. Após a conclusão do treinamento, o modelo treinado é implantado no BigQuery como bqml.rpm_bqml_model
.
Avalie o modelo
Para ter uma ideia do desempenho do modelo, observe a métrica de desempenho AUC: Área sob a curva ROC. O valor de AUC de um modelo pode variar entre 0, indicando que nenhuma previsão estava correta, e 1, indicando que todas as previsões estavam corretas.
Em um tutorial como esse com um modelo não otimizado, provavelmente você terá bons resultados, mas não ótimos. Para um caso de uso de produção, é melhor otimizar o modelo usando ajuste de hiperparâmetro, engenharia de atributos e outras técnicas para atingir uma pontuação de 0,9 ou mais.
Execute a instrução SQL ML.EVALUATE para avaliar o modelo:
SELECT
roc_auc,
# evaluating the auc value based on the scale at http://gim.unmc.edu/dxtests/roc3.htm
CASE WHEN roc_auc >.9 THEN 'excellent' WHEN roc_auc >.8 THEN 'good'
WHEN roc_auc >.7 THEN 'fair' WHEN roc_auc >.6 THEN 'poor' ELSE 'fail' END
AS modelquality
FROM ML.EVALUATE(MODEL `bqml.rpm_bqml_model`);
Os resultados serão semelhantes aos exibidos abaixo:
Usar o modelo treinado para receber previsões em lote
Use previsões em lote para acessar dados de uma campanha de e-mail ou outro cenário sem ser em tempo real.
Execute a instrução SQL ML.PREDICT para conseguir previsões em lote para os dados de amostra na tabela bqml.propensity_data
:
# predict the inputs (rows) from the input table
SELECT
fullVisitorId,
predicted_will_buy_on_return_visit
FROM ML.PREDICT(MODEL bqml.rpm_bqml_model,
(
SELECT
fullVisitorId,
bounces,
time_on_site
from bqml.propensity_data
))
Os resultados serão semelhantes aos exibidos abaixo:
A instrução ML.PREDICT
acima usa o nível threshold
padrão de 0,5. O valor threshold
determina o limite entre os dois valores do rótulo possíveis. As previsões acima do valor de threshold
são rotuladas como positivas. Para um modelo de produção, considere ajustar o valor threshold
em conjunto com outras técnicas, como o ajuste de hiperparâmetros para otimizar o modelo.
Usar o modelo treinado para receber previsões on-line
Use previsões on-line para realizar ações em tempo real com base no comportamento do usuário no seu site. Para receber previsões on-line, é preciso exportar o modelo do BigQuery para o Cloud Storage e implantá-lo no AI Platform. Em seguida, é possível enviar solicitações de previsão para o modelo implantado.
Siga estas etapas para exportar e implantar o modelo:
- Ativar o Cloud Shell
No Cloud Shell, execute o comando abaixo para criar um bucket do Cloud Storage para armazenar o modelo exportado. Substitua myProject pelo ID do projeto que você está usando para concluir este tutorial.
gsutil mb 'gs://myProject-bucket'
Exporte o modelo para um bucket do Cloud Storage, substituindo myBucket pelo nome do bucket criado na Etapa 2:
bq extract -m bqml.rpm_bqml_model gs://myBucket/V_1
Crie o modelo no AI Platform:
gcloud ai-platform models create rpm_bqml_model
Implante o modelo exportado para o AI Platform, substituindo myBucket pelo nome do bucket criado na Etapa 2:
gcloud ai-platform versions create --model=rpm_bqml_model V_1 --framework=tensorflow --python-version=3.7 --runtime-version=1.15 --origin=gs://myBucket/V_1/ --staging-bucket=gs://myBucket
Crie um arquivo
input.json
contendo dados de exemplo de clientes:echo "{\"bounces\": 0, \"time_on_site\": 7363}" > input.json
Solicite as previsões:
gcloud ai-platform predict --model rpm_bqml_model --version V_1 --json-instances input.json
Esse comando produz um resultado semelhante ao seguinte:
PREDICTED_WILL_BUY_ON_RETURN_VISIT WILL_BUY_ON_RETURN_VISIT_PROBS WILL_BUY_ON_RETURN_VISIT_VALUES ['1'] [0.661069205638202, 0.33893079436179796] ['1', '0']
O modelo retorna
1
paraPREDICTED_WILL_BUY_ON_RETURN_VISIT
, prevendo que esse cliente de exemplo tem a propensão de comprar, com uma probabilidade de 66%.É possível usar o valor da probabilidade de um cliente com uma previsão positiva para decidir se você oferece um cupom ou outro incentivo. Por exemplo, suponha que os clientes com probabilidade acima de 80% têm probabilidade de comprar sem um incentivo. Portanto, use os incentivos para clientes com probabilidades entre 50% e 80%.
Próximas etapas opcionais
Integrar a solução a um sistema de CRM
Se quiser, expanda essa solução integrando as previsões de propensão à compra com os dados do sistema de Gestão de relacionamento com o cliente (CRM, na sigla em inglês), como endereços de e-mail, para facilitar o contato com o cliente. Para ver um exemplo desse tipo de integração, consulte Integração de público da Salesforce Marketing Cloud. Este artigo descreve como integrar o Google Analytics 360 à Salesforce Marketing Cloud e, assim, você pode usar os públicos do Analytics 360 nas campanhas de marketing direto do Salesforce por e-mail e SMS.
Automatizar o fluxo de trabalho com um pipeline
Opcionalmente, automatize a preparação de dados -> criação de modelos e treinamento -> solicitação do fluxo de trabalho de previsões, mostrados neste tutorial criando um pipeline do AI Platform. Use o notebook bqml_kfp_retail_propensity_to_purchase para receber instruções passo a passo sobre como automatizar um fluxo de trabalho de aprendizado de máquina da propensão à compra.
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que contém os recursos ou mantenha o projeto, mas exclua apenas esses recursos.
Seja como for, remova esses recursos para que não sejam faturados no futuro. Nas seções a seguir, você verá como excluir esses recursos.
Excluir o projeto
A maneira mais fácil de eliminar o faturamento é excluir o projeto criado para o tutorial.
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Excluir os componentes
Se você não quiser excluir o projeto, use as seguintes seções para excluir os componentes faturáveis deste tutorial.
Excluir o conjunto de dados do BigQuery
- Abra o console do BigQuery
- Na seção Recursos, expanda o projeto em que você fez este tutorial e selecione o conjunto de dados bqml.
- Clique em Excluir conjunto de dados no cabeçalho do painel do conjunto de dados.
- Na janela de sobreposição que aparece, digite bqml e clique em Excluir.
Excluir o modelo do AI Platform
- Abra a página de modelos do AI Platform
- Na lista de modelos, clique em rpm_bqml_model.
- Na página Detalhes do modelo, marque a caixa de seleção da versão V_1 (padrão).
- Clique em Mais e em Excluir.
- Quando a exclusão da versão for concluída, clique em Voltar para retornar à lista de modelos.
- Marque a caixa de seleção do modelo rpm_bqml_model.
- Clique em Mais e em Excluir.
Excluir o bucket do Cloud Storage
- Abra o navegador do Cloud Storage
- Marque a caixa de seleção do bucket <myProject>-bucket.
- Clique em Excluir.
- Na janela de sobreposição exibida, digite
DELETE
e clique em Confirmar.
A seguir
- Revise o código de amostra no repositório Como criar uma solução de ponta a ponta de propensão de compra usando o BigQuery ML e os pipelines do Kubeflow (em inglês) no GitHub.
- Saiba mais sobre outras soluções de previsão preditiva.
- Saiba mais sobre o BigQuery ML.
- Saiba mais sobre o Google Analytics 360.