Sistemas de Recomendação: Introdução (Parte 1)
Sistemas de recomendação são algoritmos de Machine Learning que identificam padrões nas preferências dos usuários e recomendam itens de seu interesse de forma personalizada.
Estes algoritmos estão presentes em uma grande variedade de aplicações na internet, desde redes sociais, sites de e-commerce, plataformas streaming e muitos outros.
Toda vez que um item, um banner, um vídeo, uma música, uma sugestão de amizade, ou até mesmo o próximo post de seu feed é apresentado ao usuário, isso acontece em razão dos sistemas de recomendação.
Há alguns anos a Netflix propôs um prêmio de um milhão de dólares para quem pudesse melhorar seu algoritmo de recomendação. Este prêmio ficou conhecido como Netflix Prize e impulsionou algumas evoluções nos algoritmos de recomendação.
Os algoritmos de recomendação têm uma relação próxima com algoritmos de busca, porém a ideia principal é a personalização dos resultados com base em dados do comportamento do próprio usuário, diferente dos algoritmos que busca que precisam de um input em forma de consulta.
Dada a importância e a vasta aplicabilidade destes algoritmos, esta é uma área de estudo ampla e engloba diversos tipos e categorias de modelos, cada um aplicável a um tipo específico de problema, considerando as fontes de dados disponíveis e quais tarefas a serem realizadas.
Neste artigo darei uma introdução básica aos sistemas de recomendação para quem quer entender um pouco mais sobre como isso funciona do ponto da ciência de dados. A ideia é trazer os conceitos iniciais sem entrar muito na matemática por traz e nas complexidades dos sistemas mais sofisticados.
Vamos começar com uma intuição básica de como eles funcionam.
Intuição Básica
Os algoritmos de sistemas de recomendação (SR) partem da ideia básica de que usuários que avaliam itens de forma similar tem interesses similares.
Imagine uma pessoa que avaliou alguns filmes com base em seu gosto pessoal, dando notas de 1 a 5 (uma a cinco estrelas, por exemplo). Vamos chamar essa pessoa de usuário “A”.
A ideia destes algoritmos é pesquisar em sua base de dados (de outras avaliações), usuários similares ao usuário A, com base em avaliações feitas para os mesmos filmes.
Feito isso, o algoritmo irá listar os filmes que não foram vistos pelo usuário A, mas que foram bem avaliados pelos usuários similares, e então fará a sugestão.
Este é um exemplo de uma categoria de sistemas de recomendação chamada Collaboative Filtering, ou Filtragem Colaborativa, onde a ideia é que as avaliações de todos os usuários colaboram para realizar a recomendação.
Existem outras categorias que abordam o problema de forma diferente de acordo com diversos fatores, como: qual é a forma de avaliação dos usuários, se existem dados suficientes, qual métrica de similaridade será utilizada etc. Falaremos destas outras categorias durante o artigo.
Base de Dados
O ponto de partida para qualquer algoritmo de machine learning são os dados. Sem dados não há nada o que se possa fazer, portanto neste tópico vou dar detalhes dos dados de input de algoritmos de recomendação, suas peculiaridades e desafios.
As fontes de dados para sistemas de recomendação normalmente são as próprias avaliações dos usuários e os atributos característicos tanto dos usuários quanto dos itens.
Em relação as avaliações, ou ratings, podem ser explícitos ou implícitos. Os ratings explícitos são aqueles em que o usuário externaliza sua avaliação através de uma nota, que pode ser uma nota discreta (de 1 a 5, por exemplo), um like, um valor contínuo, ou uma avaliação categórica ordenada (bom, regular, alto).
A grande maioria dos sistemas de recomendação utilizam notas discretas, ou transformam as notas em outros formatos em números discretos em fase de pré-processamento, incluindo os “likes” que são transformados em valores binários (0 ou 1).
Vale comentar que como qualquer transformação dos dados, isso pode significar perda de informação e causar vieses. Mas as técnicas de pré-processamento (normalização, padronização etc.), são as mesmas que conhecemos no contexto de ciência de dados.
O usuário pode expressar seu interesse também de forma implícita, através de seu comportamento, por exemplo: compra, visualização, clique etc. Neste caso estas informações podem ser transformadas em dados binários (compra ou não, por exemplo) ou métricas referente ao interesse podem ser utilizadas (tempo de visualização, números de cliques etc.).
Além dos dados das avaliações (explícitas ou implícitas), também são utilizados dados característicos e demográficos dos usuários e os atributos dos itens, que são tratados como “features” em alguns tipos de modelo.
Outros dados de contexto também podem ser incluídos nos sistemas de recomendação, como informações temporais e de localização.
Uma peculiaridade em relação aos dados de input dos sistemas de recomendação é que normalmente eles estão estruturados em forma de matriz, onde as linhas são usuários (m) e as colunas itens (n), e os valores são as notas das avaliações.
Tarefas dos Algoritmos
O objetivo dos sistemas de recomendação é encontrar itens de interesse do usuário, com base em suas preferências.
Este objetivo pode ser atingido com duas abordagens diferentes: prever as avaliações de itens ainda não avaliados (rating predicting) ou identificar os top-N itens que são relevantes (rank predicting), cada uma delas possui estratégias diferentes e métodos de avaliação diferentes.
Embora o objetivo seja apresentar um ranking, os algoritmos que fazem previsão do rating podem ser utilizados pois posteriormente as avaliações preditas são utilizadas para a criação do ranking, e como os algoritmos preditivos são abundantes na área de machine learning, esta tarefa (previsão de rankings) acaba sendo a mais utilizada.
Fazendo um paralelo com algoritmos preditivos tradicionais, a base de dados de input possui uma diferença significativa: a variável target pode estar em qualquer coluna da matrix de input, ou seja, diferente dos modelos tradicionais que existem as features explicativas e a variável target, algoritmos de recomendação devem prever valores em diferentes colunas (itens).
No entanto a tarefa de previsão ainda pode ser abordada de acordo com conceitos tradicionais de ciência de dados, separando os dados de “treino” e “teste”, aplicando algoritmos de otimização, e identificando os valores através de avaliação de métricas de perda e erro.
A tarefa de predição de ratings é uma abordagem tradicionalmente realizada quando os feedbacks são explícitos, mas também podem ser aplicados em feedback implícitos, neste caso os valores na matriz serão binários (0 ou 1).
Diferentes abordagens, tipos de dados utilizados, algoritmos de similaridade, regressão ou classificação permeiam o universo dos sistemas de recomendação há depender dos dados disponíveis e da estratégia de recomendação. Na próxima sessão falaremos um pouco destas diferentes categorias.
Categorias de Sistema de Recomendação
Atualmente existem 4 categorias de sistemas de recomendação: Collaborative Filtering, Content-Based Recommender, Knowledge-Based recommender e os híbridos, Hybrids Systems Recommenders.
Sistemas de recomendação do tipo Collaborative Filtering são os mais empregados atualmente, porém demandam da existência de uma base de dados significativa para que o algoritmo seja robusto ao encontrar usuários similares e realizar a recomendação.
Já algoritmos do tipo Content-Based abordam o problema de uma forma diferente, estes algoritmos utilizam as preferências do próprio usuário e itens similares com base em seu conteúdo (atributos), a principal diferença do Collaborative Filtering é que apenas as avaliações do próprio usuário são levadas em consideração, e não de usuários similares.
Além disso os atributos dos itens são utilizados como features explicativas e incluídas no modelo, sendo que podem vir de catálogos e/ou reviews textuais, neste último caso passível de pré-processamento com utilização de processamento de linguagem natural.
Algoritmos Knowledge-Based são ideais nos casos em que não há dados de avaliação disponíveis, estes algoritmos utilizam as similaridades dos itens, através de seus atributos e usuários, através de suas características.
A última categoria, os Hybrids Recommender Systems, são como o próprio nome diz, uma mistura e integração entre as três primeiras categorias. Podem ser aplicados de diversas formas, com métodos ensembles, integrados ou concatenados, a depender da necessidade.
Sistemas de recomendação produtivos em larga escala normalmente são híbridos pois precisam endereçar diversos desafios com grandes volumes de dados, e geralmente uma estratégia híbrida é adotada.
Referências
Recommender Systems The Text Book — Aggarwal, Charu C. — 2016
Recent Developments in Recommender Systems: A Survey — Li et al — 2023
Coursera: Machine Learning Specialization — Recommenders — 2023
Divisões do texto
Como este tema é extenso, e acredito que vale comentar vários pontos interessantes, vou quebrar o texto em 3 partes: