Usando embeddings e sinais de navegação para identificar apartamentos similares

Victor Matheo
Loft
Published in
11 min readApr 29, 2021

Dentro do contexto de negócios é muito importante entender como os produtos presentes no portfólio de uma empresa se relacionam: Quais são complementares? Quais são desenhados para públicos completamente distintos? Quais podem substituir um ao outro?

Conseguir responder essas perguntas nos permite ter ganhos em áreas como:

  • Gestão de portfólio: Conhecendo melhor o portfólio e o seus elementos podemos ter uma melhor gestão de recursos e estoque, permitindo uma diminuição de custos.
  • Satisfação de clientes: Ter e conseguir recomendar o produto certo para clientes, não só gera aumento de receita e conversão, como também aumenta a satisfação de clientes. Quem não gosta de receber aquela sugestão ideal de filme no Netflix?
  • Alavancagem de receita: Melhores recomendações e gestão de portfólio levam a mais vendas, uma vez que conseguimos ter o produto que a pessoa usuária precisa e conseguimos recomendá-lo na hora certa!

Construir essa capacidade de negócio é um desafio tão importante quanto complexo em uma empresa como a Loft. Em geral, a maior parte da literatura de recomendação e revenue management (gestão de receita) traz casos de uso em mercados mais digitais e de transações mais frequentes, como varejo (e.g. Amazon) e mídia (e.g. Netflix).

No nosso caso, fazemos parte de uma das maiores transações na vida das pessoas, onde cada produto (imóvel) é único. Dessa forma, entender o que faz dois imóveis serem parecidos é um grande desafio que exige um bom entendimento do mercado imobiliário e das necessidades das pessoas que usam nossa plataforma, além de exercitar diversas áreas de estudo em data science, como agrupamentos, sistemas de recomendação e embeddings.

Similaridade a partir das variáveis dos apartamentos

Para resolver o problema de dizer se o apartamento X é parecido com o apartamento Y, iniciamos por uma abordagem de calcular a magnitude das diferenças entre as variáveis que caracterizam apartamentos. Por exemplo, suponha dois apartamentos:

  • Apartamento X: área de 120m2, preço de R$ 800 mil, bairro Pinheiros
  • Apartamento Y: área de 80m2, preço de R$ 660 mil, bairro Jardim América

A diferença entre as áreas dos apartamentos é de 40m2, enquanto a diferença de preço é de R$ 140 mil. Vamos supor também que a distância entre eles (Pinheiros vs. Jardim América) é de 4km. Usando essas informações, podemos criar um “score de dissimilaridade”, colocando diferentes pesos para as diferenças observadas entre estes apartamentos:

Esta abordagem, no entanto, gera problemas. Por exemplo, apartamentos podem ter preços muito similares, sendo completamente diferentes do ponto de vista de clientes. Além disso, a maioria das abordagens tradicionais atribui pesos fixos para cada variável, sendo que o efeito das variáveis pode mudar muito de acordo com a situação. Por exemplo, a localização pode apresentar um comportamento não linear, uma vez que atravessar uma avenida pode ter um impacto maior no interesse das pessoas compradoras do que atravessar várias ruas de um mesmo bairro.

A distância de interação

Para tentar definir da melhor maneira a similaridade entre apartamentos resolvemos sair de uma abordagem mais baseada nas características dos apartamentos e partimos para uma abordagem mais centrada na pessoa compradora. Para nós a resposta da pergunta o que faz o apartamento X ser parecido com o apartamento Y é se as mesmas pessoas que interagem com o apartamento X também interagem com o apartamento Y. Matematicamente podemos definir a similaridade entre dois apartamentos como:

Onde U(X) é o conjunto das pessoas que interagiram com o apartamento X. Consideramos uma interação qualquer evento que indique preferência de uma pessoa por um apartamento, como cliques, visitas, “favoritadas” e outros. Atualmente temos mais de um milhão de pessoas utilizando nossa plataforma todos os meses, o que faz com que esses dados de interação sejam muito ricos e volumosos.

Consequentemente podemos definir uma nova métrica de distância ou dissimilaridade entre apartamentos como sendo:

Dessa forma definimos uma nova distância entre apartamentos que não é baseada na geografia ou em alguma característica em particular que arbitramos, mas uma métrica baseada única e exclusivamente no interesse de pessoas que navegaram no site da Loft.

Assim é possível captar comportamentos não lineares que citamos antes, se por exemplo atravessar uma avenida muda completamente o público comprador de um apartamento, mesmo esses apartamentos sendo próximos, isso faz com a similaridade entre essas duas regiões seja baixa e consequentemente, a distância de interação seja alta.

O próximo passo: Embeddings

Nosso próximo desafio foi tentar entender como essa distância de cliques se relacionava com as características dos apartamentos e com o conhecimento prévio do mercado imobiliário. Para realizar essas comparações em escala e de maneira visual, resolvemos atacar o problema recriando o espaço latente que gerou as distâncias de interação por meio de um algoritmo de redução de dimensionalidade. Essa abordagem nos permite:

  • Entender as estruturas locais perto de um apartamento, uma vez que os vizinhos nesse espaço devem ser os apartamentos com menor distância.
  • Visualizar estruturas globais, o que são os grandes agrupamentos desse novo espaço? Apartamentos dos mesmos bairros? Apartamentos de tamanho parecido?
  • Visualização e validação de insights com pessoas com conhecimento prévio do mercado imobiliário. Podemos reduzir esse espaço para duas dimensões e tentar entender como o conhecimento prévio é demonstrado nesse novo “mapa de interações”.
  • Extrair insights a partir de similaridades com o nosso conhecimento prévio.

Para atacar esse problemas fizemos uso do UMAP (Uniform Manifold Approximation and Projection for Dimension Reduction), algoritmo de redução de dimensionalidade não linear, muito utilizado para simplificar visualizações de espaços de elevada dimensão e complexidade, mas que tem a característica de manter estruturas locais e globais dos espaços originais.

O UMAP aplicado no dataset de dígitos escritos à mão (MNIST). O algoritmo projeta as imagens para um espaço 3D que consegue recuperar muito bem as nuances dos dados. Fonte: documentação do UMAP.

O UMAP basicamente recebe um dataset em uma dimensão muito elevada ou uma matriz quadrada de distâncias e devolve um novo dataset com o mesmo número de amostras em um espaço de dimensão determinada, normalmente muito mais baixa que a dimensão original. Esse novo espaço onde o dataset de dimensão reduzida se encontra é chamado de embedding. Recomendamos esse vídeo para quem quiser entender mais sobre o algoritmo.

Depois de transformar nossa base de apartamentos usando esse pipeline conseguimos então gerar nosso embedding de apartamentos. Para tentar entender o comportamento desse novo espaço de embedding tentamos relacionar as features que consideramos importantes para o problema com as coordenadas extraídas a partir da métrica de distância de interação.

Para exemplificar aqui vamos mostrar a relação do espaço do embedding com 3 variáveis que consideramos relevantes para o problema de similaridade entre apartamentos:

  • Localização geográfica, que será mostrada de maneira simplificada como bairro.
  • Preço, que será representado pelo preço do anúncio dividido pela metragem.
  • Tamanho do apartamento, representado pela área útil do anúncio.

O primeiro gráfico, feito para estudar a relação entre o embedding e a localização geográfica dos apartamentos, mostra que o modelo conseguiu gerar um espaço latente que tem coordenadas muito correlacionadas com a geografia, mesmo que nunca tenha recebido diretamente a posição geográfica dos apartamentos. (Isso deve acontecer pois o bairro deve influenciar bastante a navegação das pessoas no nosso site).

Aqui cada apartamento é um ponto do gráfico e sua cor é dada pelo bairro onde esse apartamento se encontra.

Plot da representação apartamentos do site da loft no embedding. Apartamentos coloridos por bairro.

Alguns insights interessantes do modelo aqui são:

  • O modelo automaticamente separa as cidades do Rio de Janeiro e São Paulo;
  • O modelo consegue separar muito bem aglomerações de bairros da cidade de São Paulo.
  • O modelo consegue unir bairros em clusters. (Por exemplo a parte do Jardins pintada na cor rosa não é constituída de um bairro apenas, mas de um conjunto de bairros que constitui uma agregação de Jardins)

Um detalhe importante desse tipo de gráfico é que as dimensões construídas não tem uma interpretação simples do ponto de vista de negócio, isso quer dizer que a dimensão X aqui não tem um significado prático no mundo real. Inclusive ela pode ter significados diferentes em localidades diferentes dos gráficos. (X poderia ser relacionado com a área para o cluster da esquerda e com preço por metro quadrado no cluster da direita)

No gráfico a seguir, cada apartamento é um ponto e sua cor é dada pelo preço por metro quadrado. Onde cores mais próximas do vermelho representam valores mais altos e cores mais próximas do azul representam valores mais baixos.

Plot da representação apartamentos do site da loft no embedding. Apartamentos coloridos por preço.

Podemos então observar que a distância de interação consegue se relacionar muito bem com o valor do preço por metro quadrado, uma vez que apartamentos de cores parecidas formam clusters próximos na representação.

Outro ponto interessante a ser notado é que nem todos os apartamentos com preços parecidos são agrupados no mesmo lugar. Por exemplo, conseguimos notar que existe toda uma borda do mapa pintada de vermelho. Isso é um indício que o modelo consegue levar em conta pelo menos 2 variáveis ao mesmo tempo, localização e preço. Por mais que apartamentos tenham preços parecidos, outras características além do preço fazem com que eles sejam apartados na visualização.

O próximo gráfico é semelhante ao anterior, mas dessa vez a cor de cada apartamento é dada pela sua área, maiores áreas são representadas por cores mais próximas do vermelho e áreas menores são representadas por cores mais próximas do azul.

Plot da representação apartamentos do site da loft no embedding. Apartamentos coloridos por metragem.

Aqui mais uma vez conseguimos ver que a distância de interação consegue capturar informações relacionadas com a área dos apartamentos.

Vale lembrar que em nenhuma etapa até aqui incluímos bairros, variáveis geográficas ou características do apartamento no modelo, apenas descobrimos que a distância de interação consegue abstrair questões de geografia a partir do comportamento das pessoas compradoras. Esse tipo de análise pode ser estendida por um conjunto maior de características do portfólio e em diferentes regiões da cidade e nos ajuda a entender melhor:

  • Com quais variáveis a distância de interação se correlaciona.
  • Nos ajuda a validar se a própria distância e os resultados do modelo fazem sentido, dadas as hipóteses de negócio que temos hoje.
  • Propor e validar novas hipóteses de negócio.

Alguns insights que conseguimos identificar e validar hipóteses previstas foram:

  • Bairros semelhantes podem aparecer juntos no embedding, uma vez que se distinguem pouco para a pessoa que navega em nosso site.
  • O mesmo bairro, ou bairros muito próximos, podem ser separados por padrões de comportamentos muito diferentes dos clientes e se mostrarem em regiões diferentes do espaço latente.
  • Outras variáveis importantes também se demonstram no embedding, via comportamento local, em vizinhanças, ou comportamento global.

Um exemplo de como fazemos isso para validar uma hipótese em específico vem no próximo gráfico, nele é criada uma visualização que compara a distância média do embedding para áreas próximas de um apartamento de referência, representado pelo círculo amarelado.

Regiões de similaridade em São Paulo para um apartamento de referência. Regiões azuis são mais similares e vermelhas menos similares.

As regiões mais similares ao apartamento de referência são representadas pelas cores azuis mais fortes, já as mais distintas são representadas pelas cores mais avermelhadas.

Apenas com essa visualização conseguimos ver que o embedding consegue captar comportamentos não lineares em relação à localização, uma vez que a distância no embedding muda de maneira assimétrica quando nos movemos para regiões em diferentes direções. No caso em questão, as recomendações mais a oeste e ao sul fazem mais sentido que recomendações ao leste e ao norte.

A visualização também nos ajuda a confirmar as hipóteses do time de negócio, nesse caso é que os bairros de Santa Cecília e República, embora próximos de Higienópolis, têm um público comprador muito diferente, justificando assim a assimetria do embedding em diferentes direções.

Além da avaliação visual também foram levantadas métricas desse embedding de algumas características que gostaríamos de ter nele, como por exemplo baixa variância em algumas features e relação com variáveis importantes para nosso negócio.

O próximo desafio: oque fazer com apartamentos recém-listados?

Conseguimos construir o embedding para os apartamentos que já estão no site da loft, mas o que fazer quando um apartamento é muito novo no portfólio e ainda tem poucas interações e menos ainda interações concorrentes com outros apartamentos? O que fazer quando o apartamento ainda nem chegou no site?

Esse problema é chamado de cold start. Solucionamos ele por meio de um grupo de modelos que correlaciona as características que possuímos dos apartamentos antes da listagem com as coordenadas no embedding. Utilizamos esses modelos para estimar onde acreditamos que os apartamentos vão cair no embedding, até que vejamos o comportamento real deles e seja possível descobrir onde de fato eles vão parar.

Finalmente: Aplicações e resultados!

As aplicações e resultados dessa sequência de modelos são variadas, algumas com resultados tangíveis e outras menos, mas algumas das principais são:

  • Incremento da performance em campanhas de marketing e na navegação do site. Podemos usar o embedding em campanhas, gerando ganhos de conversão medidos via teste A/B . Também temos um ganho intangível de melhora na experiência de navegação e na facilidade de encontrar o apartamento ideal para as pessoas usuárias do nosso site.
  • Recomendações fora do site. Como o negócio da loft tem uma forte característica de mundo físico, podemos usar o mapa para recomendar visitas e ajudar na jornada “offline” da pessoa compradora.
  • Equilíbrio do marketpalce. Podemos agrupar os apartamentos no embedding de cliques e usar esses agrupamentos para guiar decisões operacionais visando o equilíbrio do nosso marketplace.
  • Políticas e features. As coordenadas desse embedding ou mesmo grupo de vizinhos podem ser utilizados para balizar políticas internas ou mesmo como features internas para outros modelos.

E os próximos passos?

Como próximos passos queremos incluir duas grandes melhorias no processo de modelagem:

  • Introduzir as variáveis dos apartamentos no processo de modelagem. Atualmente apenas os dados de navegação entram no modelo, portanto, utilizamos as variáveis dos apartamentos apenas para validar a saída do embedding. Acreditamos que essa inclusão pode melhorar nossa performance e tornar o modelo mais robusto.
  • Expandir o conjunto de métricas de validação do embedding. Nossa validação até aqui é muito baseada em conhecimento de negócio ou em medição de ganho a partir de Teste A/B, estamos buscando entender qual deve ser uma boa métrica para avaliar evoluções no modelo sem ter que sempre recorrer a esses métodos.

Uma abordagem que parece muito promissora para atacar esse problema são as redes siamesas, uma arquitetura de redes neurais especializadas em aprender funções de similaridade.

Se tiverem qualquer comentário e/ou dúvidas sobre Embeddings de Interação de Cliente ou nossos Sistemas de Recomendação, podem nos contatar através do email bandits@loft.com.br. Todo feedback é bem-vindo! Esperamos escutar de vocês o que acharam!

Quer fazer parte da Loft e nos ajudar a simplificar o mercado imobiliário?

Confira nossas vagas! — https://jobs.lever.co/loft (ps.: estamos com vagas abertas no nosso time de ciência de dados!)

Acesso: carreiras.loft.com.br e saiba mais! #TransformeComAGente #OJeitoLoft

--

--