Sistemas de recomendação

Os dados que conhecem o usuário

Com o grande volume de dados coletados através de Big Data, chega a ser assustador o quanto os sistemas conhecem sobre nossas preferências e gostos pessoais. Existem inúmeras vantagens para uma empresa investir nesta abordagem, como exemplo, um sistema e-commerce que conhece melhor o seu usuário, consegue sugerir itens que anteriormente o usuário possivelmente não notaria.

Na equipe no qual eu trabalho estávamos com dificuldades de identificar qual era a nomenclatura do tipo de sistema que iriamos desenvolver, já que ele se encaixava em vários tipos diferentes. Durante um brainstorm surgiram várias nomenclaturas, e uma delas foi: Sistema de recomendação. A partir deste ponto, eu me interessei por entender melhor sobre este tipo de sistema e compartilho neste post o resultado desta pesquisa.

O que é um sistema de recomendação?

Um sistema de recomendação é uma tecnologia implantada em uma ambiente no qual itens (produtos, filmes, eventos, artigos, games, etc) devem ser recomendados para usuários (clientes, visitantes, usuários de aplicativos, leitores, etc) ou o contrário (usuários são recomendados para itens).

Imagine como funciona em uma lógica física. Para ser capaz de fazer recomendações de alta qualidade, um bom vendedor deve conhecer as preferências de seus clientes. Agora, se fizermos um paralelo com o mundo online, podemos dizer que:

Um sistema de recomendação é o “vendedor experiente” que conhece seus clientes e sabe do que cada um pode gostar.
Fonte

Tipos de sistema de recomendação

Os sistemas de recomendação funcionam baseados em dois tipos de informações:

  • Informações de características: informação sobre os itens (palavras chaves, categorias, descrição, etc) e usuários (preferências, perfis, etc).
  • Interações entre usuário e item: informação do relacionamento entre estas duas entidades, como por exemplo avaliações, número de compras, likes, etc.

Com base nisso, chegamos na primeira classificação de sistemas de recomendação:

  • Recomendação baseada em conteúdo, que usa informações de características.
  • Filtragem colaborativa, que usa informações de interações entre usuário e item.
Também existem as recomendações híbridas que, como o nome demonstra, combina os dois tipos de informações.

Agora vamos entender um pouco mais dos detalhes sobre as recomendações baseadas em conteúdo e as filtragens colaborativas.

Recomendações baseadas em conteúdo

Figura 1 — Recomendações baseadas em conteúdo.

Esse tipo de sistema recomenda ao usuário itens similares à aqueles que ele tenha gostado (interagido, comprado, visualizado, etc) no passado. Nele as informações analisadas podem ser provindas de duas maneiras:

Explícita: quando o usuário intencionalmente informa ao sistema se ele gosta ou não de determinado item (assunto, categoria, produto, etc). Esta informação pode chegar com um simples curtir, com avaliações (☆☆☆), etc. Contudo, muitas vezes é difícil obter esse tipo de dados, pelo simples fato do usuário não estar disposto a informar isto.

Implícita: aqui entra informações como “itens visualizados”, “itens adquiridos”, “itens na cesta de compra”, etc.

É importante citar que as recomendações baseadas em conteúdo trabalham apenas com as interações passadas do usuário em questão (não levando em consideração os outros usuários). A ideia principal é calcular a similaridade dos atributos entre itens e fazer recomendações com base nisso.

Filtragens colaborativas

Figura 2 — Sistema de filtragens colaborativas

Esse tipo de sistema utiliza as interações dos usuários para filtrar os possíveis itens de interesse. Em outras palavras, esse método é baseado em fazer previsões sobre os interesses do usuário analisando o gosto de usuários que são similares. Essa forma de recomendação pressupõe que:

Se a pessoa A possui a mesma opinião que a pessoa B em determinada questão, é provável que A possua a mesma opinião de B em outra questão.

A filtragem colaborativa é dividida em duas técnicas, conforme é possível visualizar na imagem abaixo:

Figura 3 — técnicas de filtragem colaborativa (adaptado deste artigo)

Abordagem baseada em memória

A abordagem baseada em memória resolve o problema de filtragem colaborativa usando o conjunto de dados inteiro. Essa técnica tenta encontrar usuários semelhantes ao usuário ativo (ou seja, os usuários para os quais queremos fazer previsões) e usa suas preferências para prever classificações para o usuário ativo.

Abordagem baseada em modelos

Os sistemas de recomendação baseados em memória nem sempre são tão rápidos e escalonáveis quanto gostaríamos que fossem, especialmente no contexto de sistemas reais que geram recomendações em tempo real com base em conjuntos de dados muito grandes. Para atingir esses objetivos, são usados sistemas de recomendação baseados em modelos.

Os sistemas de recomendação baseados em modelos envolvem a construção de um modelo com base no conjunto de dados de classificações. Em outras palavras, extraímos algumas informações do conjunto de dados e usamos isso como um “modelo” para fazer recomendações sem ter que usar o conjunto de dados completo todas as vezes. Essa abordagem oferece potencialmente os benefícios da velocidade e escalabilidade.

Conclusão

O objetivo deste post foi aprender um pouco mais sobre o que são os sistemas de recomendação, quais são os tipos existentes e quais as técnicas para implementar um. Antes de escrever este post, eu sabia da existência desta inteligência para recomendar os itens, contudo não sabia da existência destas diferentes abordagens para resolver o mesmo problema.

Ao continuar explorando este assunto, aviso que a partir daqui o assunto começa a entrar no mundo de Data science e Machine learning. Inclusive, durante os estudos para elaborar este post, me deparei com duas bibliotecas Python que acho interessante citar aqui: fastai e surprise. A fastai é uma biblioteca para auxiliar no desenvolvimento de soluções Deep learning. A surprise é uma biblioteca focada em sistemas de recomendações — estou pensando em testar ela e fazer um post sobre no futuro 😊.

Para finalizar, deixo aqui algumas referências que foram uteis durante a elaboração deste post:


Se quiser trocar uma ideia ou entrar em contato comigo, pode me achar no Twitter(@e_ferreirasouza) ou Linkedin.

Grande abraço e até a próxima!