Design clássico · Pleno
Anúncios similares em plataformas de aluguel de temporada
Projeto de entrevista clássico. Pontos centrais: item2vec por sessão, amostragem negativa, ANN e personalização em tempo real.
Resposta curta
Projeto de entrevista clássico. Pontos centrais: item2vec por sessão, amostragem negativa, ANN e personalização em tempo real. Segundo a fonte, o ranking da busca e o carrossel de anúncios similares respondem juntos por 99% das conversões em reserva.
01 · CONTEXTO
O problema: anúncios parecidos e busca personalizada
Segundo a fonte, o ranking da busca e o carrossel de anúncios similares respondem juntos por 99% das conversões em reserva.
A ideia central é tratar a sequência de ações de uma pessoa como contexto, do mesmo jeito que se treinam embeddings de palavras a partir de frases. O resultado são vetores de anúncios aprendidos de sessões de busca, que permitem medir a similaridade entre anúncios.
O caso une sistemas de aprendizado de máquina e busca, e se divide em: treinar vetores a partir de sessões, ajustar o treino ao marketplace, servir anúncios similares e personalizar a busca em tempo real.
02 · SESSÕES E TREINO
De cliques a vetores
Os dados de treino são sessões de clique. Cada sessão é uma sequência ininterrupta de ids de anúncios clicados pela mesma pessoa, e uma nova sessão começa sempre que há uma pausa de mais de 30 minutos entre dois cliques consecutivos.
O treino usa amostragem negativa: o vetor do anúncio central é aproximado dos vetores dos anúncios clicados antes e depois dele, dentro de uma janela, e afastado de anúncios sorteados ao acaso.
Cada anúncio vira um vetor de 32 números reais, que codificam localização, preço, tipo, arquitetura e estilo. A fonte justifica o tamanho como um equilíbrio entre desempenho offline e a memória necessária para guardar os vetores na RAM das máquinas de busca, para cálculos de similaridade em tempo real.
A escala relatada é de vetores para 4.5 milhões de anúncios ativos, treinados com mais de 800 milhões de sessões de cliques.
03 · AJUSTES E AVALIAÇÃO
Adaptando o treino ao marketplace
Primeiro ajuste: em sessões que terminam com a reserva do anúncio, o anúncio reservado entra como contexto global, de modo que, a cada passo, o treino prevê não só os vizinhos clicados mas também o anúncio que acabou sendo reservado.
Segundo ajuste: quem busca costuma ficar em um único mercado. Assim, os contextos positivos são majoritariamente do mesmo mercado, enquanto os negativos, sorteados ao acaso, são majoritariamente de outros mercados. Esse desequilíbrio levava a similaridades subótimas dentro do mercado, e a correção foi acrescentar negativos sorteados do mercado do anúncio central.
| Variante | Como foi treinada |
|---|---|
| Regular | Sem modificações no algoritmo original de embeddings. |
| Reserva como contexto global | Com as reservas como contexto global. |
| Reserva global e negativos do mercado | Com as reservas como contexto global e negativos explícitos do mesmo mercado. |
Anúncios novos não têm vetor porque não estavam nos dados de treino. A fonte cria o vetor com a média dos 3 vizinhos geográficos mais próximos que já têm embedding, do mesmo tipo e da mesma faixa de preço do anúncio novo.
Na avaliação offline, calculam-se similaridades de cosseno entre os vetores do anúncio clicado e dos anúncios candidatos, ranqueiam-se os candidatos e observa-se a posição do anúncio reservado. A variante com reserva como contexto global e negativos do mercado teve posição média menor e superou as outras duas.
O diagrama começa pelo registro de cliques e reservas.
As sessões são montadas a partir dos cliques; uma nova sessão começa quando há uma pausa de mais de 30 minutos entre dois cliques consecutivos.
O treino aproxima o vetor do anúncio central dos anúncios clicados ao redor e o afasta de anúncios sorteados ao acaso.
Nas sessões que terminam em reserva, o anúncio reservado entra como contexto global, e o treino ganha negativos sorteados do mesmo mercado do anúncio central.
Um anúncio novo recebe o vetor médio de vizinhos geográficos próximos que já têm vetor, do mesmo tipo e da mesma faixa de preço.
A avaliação offline ranqueia os candidatos por similaridade de cosseno com o anúncio clicado e observa a posição do anúncio reservado.
04 · SIMILARES NA PÁGINA
Servindo o carrossel de anúncios similares
Cada página de anúncio tem um carrossel de similares que recomenda anúncios parecidos e disponíveis para as mesmas datas. Na época do teste com embeddings, o algoritmo existente chamava o modelo principal de ranking da busca para o mesmo local e filtrava por faixa de preço e tipo.
Com os vetores, os similares de um anúncio vêm da similaridade de cosseno entre o vetor dele e os vetores de todos os anúncios do mesmo mercado disponíveis para as mesmas datas, quando check-in e check-out estão definidos. Os 12 de maior similaridade aparecem no carrossel.
No teste A/B, a solução baseada em vizinhos mais próximos no espaço de embeddings aumentou o CTR do carrossel em 21% e levou 4.9% mais hóspedes a descobrir, no carrossel, o anúncio que acabaram reservando.
O diagrama começa pela página do anúncio.
Cada página de anúncio tem um carrossel que recomenda anúncios parecidos e disponíveis para as mesmas datas.
Os similares vêm da similaridade de cosseno entre o vetor do anúncio e os vetores de todos os anúncios do mesmo mercado disponíveis nas mesmas datas.
Os vetores ficam na memória das máquinas de busca, para cálculos de similaridade em tempo real.
Os 12 anúncios de maior similaridade aparecem no carrossel; no teste A/B, o CTR do carrossel subiu 21%.
O algoritmo existente na época do teste chamava o ranking principal da busca para o mesmo local e filtrava por faixa de preço e tipo.
05 · PERSONALIZAÇÃO EM TEMPO REAL
Usando os vetores dentro do ranking da busca
Para cada usuário, a fonte mantém em tempo real, com Kafka, dois conjuntos de eventos recentes. Um guarda os anúncios clicados nas últimas 2 semanas. O outro guarda os ignorados, definidos como anúncios bem ranqueados que a pessoa pulou em favor de um clique em posição mais baixa.
A cada busca calculam-se 2 medidas de similaridade para cada candidato. EmbClickSim usa centroides por mercado dos anúncios clicados e escolhe a similaridade máxima; EmbSkipSim mede a similaridade com os anúncios ignorados.
As duas medidas entram como sinais adicionais no modelo de ranking de busca. Nos gráficos de dependência parcial, maior EmbClickSim leva a maior pontuação do modelo e maior EmbSkipSim leva a menor pontuação.
Nesta arquitetura, vale pensar em filas de mensagens para os eventos do usuário e em cache para o histórico recente.
O diagrama começa pelo cliente de busca.
Para cada usuário, a fonte mantém em tempo real, com Kafka, dois conjuntos de eventos recentes.
Um conjunto guarda os anúncios clicados nas últimas 2 semanas; o outro guarda os ignorados, isto é, bem ranqueados mas pulados por um clique em posição mais baixa.
A cada busca calculam-se 2 medidas de similaridade para cada candidato: com os clicados, usando centroides por mercado e a similaridade máxima, e com os ignorados.
As duas similaridades entram como sinais adicionais no modelo de ranking de busca.
Os gráficos de dependência parcial mostraram que maior EmbClickSim eleva a pontuação e maior EmbSkipSim a reduz.
Depois de um experimento online bem-sucedido, o recurso foi lançado em produção no verão de 2017, segundo a fonte.
Perguntas frequentes
O que é Anúncios similares em plataformas de aluguel de temporada?
Projeto de entrevista clássico. Pontos centrais: item2vec por sessão, amostragem negativa, ANN e personalização em tempo real.
O que o design de Anúncios similares em plataformas de aluguel de temporada cobre?
Ele está organizado nestas seções: O problema: anúncios parecidos e busca personalizada, De cliques a vetores, Adaptando o treino ao marketplace, Servindo o carrossel de anúncios similares e Usando os vetores dentro do ranking da busca.
Quanto tempo leva Anúncios similares em plataformas de aluguel de temporada e qual é o nível?
Leva cerca de 14 minutos para ler e tem nível Pleno.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.