Photo by Morning Brew on Unsplash

Testei a nova API para Sistemas de Recomendação do Google

Impressões & passo a passo para utilizar a Recommendations AI, API em versão beta disponível na Google Cloud Plataform

Letícia Gerola
Published in
7 min readSep 4, 2020

--

Anunciada na conferência Google Cloud Next 2019, em São Francisco, no ano passado, a versão beta foi liberada em 22 de julho deste ano. Há pouco mais de um mês disponível para o mercado, testei o desenvolvimento de um pipeline dentro da API para um projeto de trabalho — o aprendizado e os desafios foram tantos que resolvi registrar esse processo, quem sabe facilita o caminho dos próximos exploradores da novidade.

A API funciona em AutoML, ou seja, completamente low code: import de dados, check no modelo desejado, clicar em ‘treinar’ e aguardar as predições. Aprendi a primeira lição valiosa nessa exploração: não é porque é low code que é low work.

Impressões gerais

É uma API completamente voltada para o segmento de e-commerce tradicional — em especial aqueles que não possuem dados de collaborative filtering e estão restritos a dados do tipo content based. O processo, então, fica mais complicado quando o objetivo de recomendação é um pouco mais variado (quando o objetivo é recomendar conteúdo ao invés de produto, por exemplo), ou quando os dados que você possui fogem dos requisitos pré- estabelecidos pela API. Suponho que seu funcionamento pleno deve acontecer, provavelmente, quando o import de dados é feito direto via GA 360 ou Google Merchant Center — Google com Google é match certo.

Pipeline da Recommendations AI

1. Criar o projeto.

2. Import dos dados (dois tipos de import são requeridos: dados de catálogo (produtos) e dados de customer (user events no site).

3. Criar o modelo (há 3 modelos com 2 níveis de otimização).

4. Treinar o modelo (2–5 dias).

5. Criar placements e ver um preview das recomendações.

6. Teste A/B (opcional).

Image from: https://cloud.google.com/recommendations

1. Criar o projeto

Setar algumas credenciais são necessárias para a habilitação da API: é preciso criar um Service Account e uma API key. Nesse link você encontra os passos pra essa habilitação.

2. Import dos dados

O import de dados é variado: pode ser feito via Cloud Storage, Big Query, Gerenciador de Tags, Google Merchant Center ou GA 360. Há tantas opções justamente porque os data requirements para a liberação dos modelos é alto, logo, se você não tiver tempo de esperar a API juntar os dados necessários após ‘plugá-la’ no seu site, o import de dados históricos é necessário.

Vantagem

É alta a variedade de dados do tipo customer possível de importar— aqui chamada de ‘user events’ — o que provavelmente contribui para o nível das predições. Há mais de 10 categorias de dados implícitos no estilo content based que os modelos da API aceitam , rankiados por importância:

Image from: https://cloud.google.com/recommendations-ai/docs/user-events

Dá pra notar que não há opções de import de dados do tipo collaborative filtering (rating de produtos, etc), provavelmente pela falta de padrão desse tipo de dado entre os e-commerces: alguns utilizam estrelas, outros nota, etc. A modelagem de um Sistema de Recomendação híbrido, usualmente o mais indicado para atingir melhores predições, já fica descartado com a API. Chuto que tenha sido desenvolvida pensando justamente nos e-commerces que não possuem esse tipo de dado, que, são, no fim das contas, os que mais se beneficiariam de um Sistema de Recomendação. Mais sobre isso aqui.

Challenge 1: especificidade de dados de customer

Para o import dos dados considerados ‘históricos’, ou seja, já consolidados em um arquivo csv, por exemplo, há o trabalho de conversão para o formato específico que a API aceita (um JSON com as devidas chaves). Escolhi importar via Cloud Storage: dei upload dos meus dados dentro do bucket e me deparei com uma chuva especificações quando tentei dar import nos dados dentro da API.

Estudei afundo todos os requirements que a Recommendations AI pede que os dados possuam. Em dados de catálogo, esse padrão não é tanto um problema: são especificações mais gerais e fáceis de atender (id do produto, categoria, nome, etc). Já para o import dos ‘user events’ — que são os dados de customer — a API afunila bem mais como esse JSON precisa estar & seus respectivos atributos. Aqui um exemplo de infos mínimas para o import de um dado de purchase:

Image from: https://cloud.google.com/recommendations-ai/docs/user-events?hl=pt-br

Mais sobre isso aqui. Foram alguns dias até converter/gerar dados no formatinho exato que a API pede. Passada essa fase, passei para a modelagem.

3. Modelagem

Há 3 opções de modelo de recomendação que é possível escolher, cada um com duas opções de otimização (CTR ou CVR — CTR é taxa de cliques e CVR é taxa de conversão). Os modelos disponíveis na API são Recommended for you (a recomendação entra na página inicial), Others you may like (a recomendação aparece na página de detalhes do produto) e Frequently bought together (aqui, a recomendação entra após o user adicionar as compras ao carrinho), com as respectivos data requirements:

Recommended for you: https://cloud.google.com/recommendations-ai/docs/create-models#import-reqs
Others you may like: https://cloud.google.com/recommendations-ai/docs/create-models#import-reqs
Frequently bought together: https://cloud.google.com/recommendations-ai/docs/create-models#import-reqs

Challenge 2: data requirements

‘Minimum data requirement’ foi o campo que foquei em atingir pra poder iniciar a modelagem. Apesar dos requisitos para criação dos modelos terem sido atingidos e apresentarem o ‘check box’ verde de ‘liberado’, ao clicar em ‘criar modelo’, a API continuava me apontando uma insuficiência de dados apropriados.

O primeiro erro apontava a necessidade de pelo menos 100 produtos cadastrados no catálogo, enquanto eu só tinha 5:

Error message (1)

Após adicionar mais produtos e passar dos 100 requisitados, a segunda mensagem de erro pedia pelo menso 10k de user events do tipo detail-page-view pra liberar o modelo que eu queria (os demais modelos também pediam 10k de dados, porém cada um de um tipo):

Error message (2)

Foi um dia inteiro gerando dados aleatórios de detail-page-view para atingir o requisito. Após o upload, me deparei com outra mensagem de erro, pedindo os mesmos 10k de dados para user events no estilo add-to-cart. Não printei esse erro, apenas entrei no modo máquina e gerei os dados restantes pra ver se afinal conseguia modelar.

4. Predições

Finalmente, criação do modelo liberada! Atenção para os verdadeiros data requirements:

  • mim. 100 produtos no catálogo
  • mim. 10k de user events estilo detail-page-view
  • mim. 10k de user events estilo add-to-cart
  • (caso você se interesse pelo terceiro modelo, Frequently Bought Together, substitua os dois requirements anteriores por 10k de user events estilo purchase)

Na hora achei muita coisa e um tanto excludente com e-commerces menores, mas a verdade é que não é um requisito absurdo: são milhaaaaares de dados registrados nos sites de venda diariamente, 20k não é tanta coisa assim. O que realmente fez falta foi ter essa informação na documentação: só descobri dos tais requisitos através das mensagens de erro.

“Model is tuning, new models are estimated to take a total of 2–5 days to tune (1–3 days) and then train (1–2 days)”

Quis tanto ver essa mensagem que nem me importei com o longo prazo de 2 a 5 dias para tunagem e treinamento.

Uma vez treinado, dentro da aba “Colocações” — ou “Placements”, é possível visualizar as recomendações de acordo com o modelo escolhido. No modelo “Recomendado pra você”, por exemplo, basta digitar um id de usuário para visualizar os produtos recomendados pra ele. Já no modelo “Outros que você pode gostar”, o id do usuário é opcional — obrigatório mesmo é um id de produto, para que o modelo recomende outros itens relevantes a partir do que foi selecionado (acredito que funcione como um apriori). A API permite que você tenha até 10 modelos em treinamento ao mesmo tempo.

Por hora, sigo aguardando a finalização do treino para poder conferir as predições! Enquanto isso, me conta: no que você tem trabalhado?

Recommendations AI é uma API ainda em versão beta. As informações e processos compartilhados aqui podem sofrer alteração sem aviso prévio. Acesse o link para a documentação completa.

--

--

Letícia Gerola
Joguei os Dados

Cientista de dados e jornalista. Autora do blog de Data Science ‘Joguei os Dados’.