Recommendation System
Um sistema de recomendação prevê quais os itens que um utilizador vai querer e ordena-os. Filtragem colaborativa e baseada em conteúdo, pipelines, desafios e código.
Um sistema de recomendação, ou recomendador, é um software que prevê quais os itens que um utilizador provavelmente vai querer — como produtos, vídeos, músicas, artigos ou publicações — e os ordena para esse utilizador. Aprende com feedback explícito, como classificações por estrelas, e, muito mais frequentemente, com feedback implícito, como cliques, tempo de visualização e compras, o que faz dele uma das aplicações de aprendizagem automática mais implementadas. Dois marcos moldaram a área: a descrição da filtragem colaborativa item a item da Amazon, em 2003, e o Prémio Netflix (2006–2009), que atribuiu 1 milhão de dólares à equipa que melhorou em 10% as previsões das classificações de filmes da Netflix.
Como funcionam os sistemas de recomendação#
A filtragem colaborativa usa apenas os padrões de quem interagiu com o quê. Os métodos baseados em utilizadores encontram utilizadores com históricos semelhantes, os métodos baseados em itens encontram itens de que os mesmos utilizadores gostaram e a fatorização de matrizes, popularizada durante o Prémio Netflix, aprende um vetor para cada utilizador e item, cujo produto escalar prevê a interação. Em vez disso, a filtragem baseada em conteúdo descreve os itens através dos seus atributos, como o género, o texto processado com processamento de linguagem natural (NLP) ou os embeddings de imagens, e recomenda itens semelhantes aos de que o utilizador já gostou, o que também funciona com itens com os quais ninguém interagiu. Os sistemas híbridos combinam ambos os sinais, para que as características do conteúdo possam posicionar um novo item até se acumularem interações suficientes.
Este exemplo aplica a filtragem colaborativa item a item a uma pequena matriz de classificações e prevê as classificações que um utilizador atribuirá aos filmes que ainda não classificou, com base na similaridade do cosseno entre as colunas de classificações dos filmes:
import numpy as np
# Ratings from 4 users (rows) for 5 movies (columns); 0 means not rated
ratings = np.array(
[
[5, 4, 0, 1, 0],
[4, 5, 1, 0, 1],
[1, 0, 5, 4, 5],
[0, 1, 4, 5, 0],
]
)
# Item-item cosine similarity between the movies' rating columns
norms = np.linalg.norm(ratings, axis=0)
item_sim = ratings.T @ ratings / np.outer(norms, norms)
# Predict user 3's rating of each movie as a similarity-weighted average of their own ratings
user = ratings[3]
rated = user > 0
scores = item_sim[:, rated] @ user[rated] / item_sim[:, rated].sum(axis=1)
for movie in np.flatnonzero(~rated):
print(f"Movie {movie}: predicted rating {scores[movie]:.2f}")O utilizador 3, a última linha, classificou bem os filmes 2 e 3 e mal o filme 1. Assim, o filme 4, cujas classificações acompanham as dos filmes 2 e 3, recebe uma classificação prevista de 4.10, enquanto o filme 0, cujas classificações acompanham as do filme 1, recebe 2.09. O sistema recomenda o filme 4.
Os recomendadores de aprendizagem profunda aprendem estas representações de ponta a ponta. As redes de duas torres criam embeddings de utilizadores e itens em separado, pelo que a recuperação de candidatos se torna uma pesquisa vetorial dos embeddings de itens mais próximos do embedding de um utilizador; os modelos sequenciais, como os transformers, leem o histórico do utilizador por ordem para prever a interação seguinte.
O pipeline em várias etapas#
Os grandes serviços não conseguem executar um modelo pesado sobre milhões de itens a cada pedido, por isso recomendam em várias etapas. A geração de candidatos, ou recuperação, reduz o catálogo a algumas centenas de itens usando sinais simples, como filtragem colaborativa ou pesquisa de embeddings. Em seguida, um modelo de classificação atribui uma pontuação a cada candidato com características mais detalhadas, para prever a probabilidade de um clique, visualização ou compra; uma etapa final de reordenação acrescenta diversidade, atualidade e regras de negócio. O YouTube descreveu esta conceção em duas etapas em 2016. Cada recomendação apresentada também gera o feedback usado para treinar o modelo seguinte, por isso o sistema aprende com dados moldados pelas suas próprias escolhas anteriores.
Os sistemas recentes aumentam a escala dos modelos de classificação e recuperação, à semelhança dos modelos de linguagem. Os recomendadores generativos da Meta, publicados na ICML 2024, tratam as ações de cada utilizador como uma sequência, atingiram 1,5 biliões de parâmetros e melhoraram as métricas em testes A/B online em 12,4%.
Recomendações visuais#
Os catálogos de moda, mobiliário e arte recomendam com base na aparência, por isso as funcionalidades de «mais deste tipo» comparam embeddings de imagens de fotografias de produtos, enquanto as funcionalidades de «criar um conjunto» usam primeiro a deteção de objetos para recortar cada item de uma fotografia de uma cena e, depois, procuram produtos visualmente semelhantes no catálogo. A mesma recuperação também ajuda a encontrar dados de treino: a funcionalidade Encontrar imagens semelhantes da Ultralytics Platform mostra até 24 das imagens mais próximas de conjuntos de dados públicos e de equipas, cada uma com uma pontuação de similaridade; ignora imagens que já estão no conjunto de dados e pode começar pelas imagens de validação com pior desempenho de um modelo.
Aplicações#
- Comércio a retalho e comércio eletrónico: As páginas de produtos mostram listas do tipo «os clientes que compraram este produto também compraram» e páginas iniciais personalizadas com base no histórico de navegação e compras.
- Conteúdos em streaming: Os serviços de vídeo e música ordenam títulos e criam listas de reprodução com base no histórico de visualização e audição; a Netflix também personaliza a imagem apresentada para cada título.
- Feeds sociais e notícias: As plataformas ordenam publicações, vídeos curtos e artigos segundo o envolvimento previsto e atualizam a ordenação sempre que um utilizador abre o feed.
- Moda: A pesquisa por similaridade visual sugere peças de roupa que combinam com o estilo, a cor ou o padrão de um artigo que o cliente viu ou fotografou.
Sistemas de recomendação vs. conceitos relacionados#
- Pesquisa: Um motor de pesquisa responde a uma consulta explícita, enquanto um recomendador antecipa o que um utilizador quer sem que este o peça; os sistemas modernos partilham os componentes de recuperação e ordenação.
- Pesquisa vetorial e bases de dados vetoriais: Encontram os embeddings armazenados mais próximos de um embedding de consulta; este é o elemento básico que um recomendador usa para a recuperação.
- Reordenadores: Modelos de segunda etapa que voltam a pontuar uma lista curta de candidatos com maior precisão; desempenham o papel da etapa de ordenação num recomendador.
- Modelação preditiva: A etapa de ordenação é um modelo preditivo da probabilidade de interação, enquanto o recomendador completo também gere a recuperação, a ordenação e o ciclo de feedback.
Desafios#
- Problema de arranque a frio: Os novos utilizadores e itens não têm histórico de interações, por isso os sistemas recorrem à popularidade, a perguntas iniciais ou a características do conteúdo.
- Esparsidade: Cada utilizador interage com uma pequena fração de um catálogo extenso, por isso a maior parte da matriz utilizador-item está vazia.
- Enviesamento para a popularidade e ciclos de feedback: O treino com interações registadas favorece os itens que já eram apresentados com frequência, limitando o que os utilizadores veem e podendo criar bolhas de filtro.
- Avaliação: As métricas offline, como precisão@k e NDCG calculados com dados históricos, muitas vezes não coincidem com os testes A/B online, que medem o que os utilizadores realmente fazem com novas recomendações.
- Privacidade: Os perfis comportamentais detalhados são dados pessoais protegidos por leis de proteção de dados na UE e noutras jurisdições.
- Regulamentação: O Regulamento dos Serviços Digitais da UE exige que as plataformas online de muito grande dimensão e os motores de pesquisa disponibilizem, para cada sistema de recomendação, pelo menos uma opção que não se baseie na definição de perfis.










