Diagrama do Item-Item CF. À esquerda, um grafo bipartido (usuário-item) mostra usuários conectados a itens. Uma seta de 'projeção' no centro leva a um novo grafo (direita) composto apenas por itens, agora conectados por arestas de similaridade.

Resumo — “Clientes que compraram este item também compraram…”. Esta frase, popularizada pela Amazon, é o resultado de um dos algoritmos de grafos mais elegantes e impactantes do e-commerce: o Item-Item Collaborative Filtering (CF). Em vez de tentar encontrar usuários “gêmeos” (o que é lento e instável), a Amazon focou em calcular a similaridade entre os itens. A ideia é projetar o imenso grafo bipartido (usuário-item) em um novo grafo (item-item), onde as arestas representam a similaridade.


1. O Problema: Um Grafo Bipartido Instável

Como a maioria dos sistemas de recomendação, o problema da Amazon começa com um grafo bipartido, exatamente como vimos no nosso post sobre a Netflix.

  • Nós do tipo A: Usuários.
  • Nós do tipo B: Itens (produtos).
  • Arestas: Interações (comprou, avaliou, clicou).

Uma abordagem inicial popular era o “User-User CF”: para me recomendar algo, o sistema primeiro encontrava “gêmeos” de gosto — outros usuários que compraram e avaliaram coisas de forma parecida comigo. O problema? Os gostos das pessoas mudam constantemente, e encontrar esses “gêmeos” em um grafo de milhões de usuários é computacionalmente caríssimo.

2. A Grande Virada: Focar nos Itens

A equipe da Amazon (liderada por Sarwar et al. em seu famoso paper de 2001) teve uma percepção fundamental: as relações entre os itens são muito mais estáveis do que as relações entre os usuários.

Um livro de “Teoria dos Grafos” será sempre similar a um livro de “Algoritmos”, independentemente de quem os compra. A solução, então, foi mudar a pergunta de “Quais usuários são parecidos com você?” para “Quais itens são parecidos com os que você já comprou?”.

Para isso, eles “projetaram” o grafo bipartido em um novo grafo, muito menor e mais estável: um grafo Item-Item.

3. Construindo o Grafo de Similaridade Item-Item

Neste novo grafo, os nós são apenas os Itens. A aresta entre dois itens (ex: Livro A \leftrightarrow Livro B) representa o quão “similares” eles são.

Mas como calcular essa similaridade? Olhando para os usuários que interagiram com ambos.

Imagine que cada item é um “vetor” onde cada posição corresponde a um usuário, e o valor é a nota que aquele usuário deu. Para saber se o Livro A e o Livro B são similares, o algoritmo compara seus vetores de avaliação.

Em termos técnicos, a métrica de similaridade mais comum é a Similaridade de Cosseno (Cosine Similarity):

\displaystyle s(i, j)_{\text{cos}} = \frac{\vec{r}_i \cdot \vec{r}_j}{||\vec{r}_i|| \cdot ||\vec{r}_j||}

Traduzindo a matemática: Esta equação trata os vetores de avaliação de dois itens (\vec{r}_i e \vec{r}_j) e mede o “ângulo” entre eles. Se as mesmas pessoas avaliaram os dois itens de forma idêntica, o ângulo é zero (similaridade máxima). Se pessoas completamente diferentes avaliaram os itens, o ângulo é de 90 graus (similaridade zero).

Outras métricas, como Adjusted Cosine ou Pearson Correlation, também são usadas para ajustar por bias (ex: usuários que só dão notas altas ou só notas baixas).

Uma vez que essa similaridade s(i, j) é calculada para todos os pares de itens, o grafo Item-Item está pronto.

4. Gerando Recomendações: Uma Soma Ponderada

Agora, a parte mágica e simples. Quando você (u) visita a página de um produto, como o sistema gera a lista “também compraram”?

  1. Ele olha para o seu histórico de compras e avaliações (os itens i que você consumiu).
  2. Para cada item i que você gostou, ele busca no grafo Item-Item os N vizinhos mais similares (ex: os 20 itens mais similares a i).
  3. Ele gera uma “pontuação” para cada item candidato j, somando as similaridades de acordo com o quanto você gostou dos itens originais.

A fórmula de pontuação para um candidato j é uma soma ponderada:

\displaystyle \text{score}(u, j) = \sum_{i \in \text{ItensConsumidos}(u)} s(i, j) \times r_{ui}

Traduzindo a matemática: A “pontuação” de um novo item j para você é uma soma. Se você amou (nota r_{ui}=5) o Livro A, e o Livro B é muito similar (similaridade s(i,j)=0.9) ao Livro A, o Livro B ganha uma pontuação alta (5 * 0.9 = 4.5). O sistema soma essas pontuações de todo o seu histórico e mostra os itens com os maiores scores.

5. Desafios do Mundo Real: Recência e Cold-Start

Esse sistema é poderoso, mas tem dois desafios clássicos que a engenharia precisa resolver:

  • Recência (Recency): Um livro lançado hoje não tem histórico de co-compra. Para evitar que o sistema só recomende itens antigos, as interações mais recentes (compras de ontem) devem ter um “peso” maior do que as do ano passado (usando uma função de decaimento temporal).
  • Cold-Start (Item Novo): Um item novo não tem interações. Como calcular sua similaridade? A solução é um fallback para filtragem baseada em conteúdo. O sistema assume que o novo item é similar a outros itens que compartilham os mesmos atributos (mesma categoria, mesmo autor, mesmas palavras-chave na descrição).

6. Por que Item-Item Ainda é Relevante?

No mundo das GNNs e do Deep Learning, por que esse algoritmo de 2001 ainda é tão importante?

  1. Explicabilidade: É fácil de explicar. “Recomendamos X porque você comprou Y, e pessoas que compraram Y também compraram X.” Isso é muito mais claro do que “Recomendamos X porque o produto vetorial dos fatores latentes 3, 17 e 42 foi alto”.
  2. Escalabilidade: O grafo Item-Item é (relativamente) pequeno e estável. Ele pode ser pré-calculado e atualizado de forma incremental (só recalculando os itens afetados por novas compras) e armazenado em índices esparsos para consulta em milissegundos.
  3. Desempenho: É um baseline (ponto de comparação) extremamente difícil de bater. Muitas soluções complexas de deep learning falham em superá-lo em cenários do mundo real.

Conclusão

O Item-Item Collaborative Filtering da Amazon é uma das ideias mais fundamentais na história da recomendação. É um exemplo perfeito de modelagem de grafos: ele nos ensina que, às vezes, a melhor maneira de resolver um problema em um grafo complexo (o bipartido usuário-item) é projetá-lo em um grafo novo e mais simples (o item-item) que captura a essência da relação que realmente importa.


Referências

Sobre o autor

Rener Menezes
Cofundador & CTO — FitBank

Rener Menezes é cofundador e CTO do FitBank, fintech brasileira de Banking-as-a-Service. Com mais de 25 anos de experiência projetando sistemas financeiros em larga escala, é bacharel em Sistemas de Informação e mestrando na Unifor, onde pesquisa Redes Neurais de Grafos e aprendizado por reforço para detecção de fraude. Interesses: sistemas distribuídos, infraestrutura de pagamentos e graph ML.

Links: LinkedIn · ORCID · contato@grafolab.ia.br

Descubra o poder dos grafos e da IA.

Receba insights, artigos e descobertas sobre Grafos, GNNs e Inteligência Artificial — direto na sua caixa de entrada, uma vez por semana.

Não fazemos spam! Leia nossa política de privacidade para mais informações.

Posted in ,

2 respostas a “Amazon e a Revolução do “Item-Item”: Como Grafos de Similaridade Mudaram o E-commerce”

  1. […] Amazon e a Revolução do “Item-Item”: Como Grafos de Similaridade Mudaram o E-comm… […]

  2. […] (Veja PinSage ou Amazon) Permite armazenar o grafo (Item)-[:SIMILAR_A]-(Item) ou […]

Deixe uma resposta

Descubra mais sobre GrafoLab

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading