Introdução aos Sistemas de Recomendação
Estamos iniciando uma série de artigos sobre sistemas de recomendação, um dos temas mais atuais e relevantes de Machine Learning. O objetivo deste primeiro artigo é fazer uma breve introdução aos sistemas de recomendação. Vamos conversar sobre a sua importância, onde são utilizados e quais as estratégias são comumente usadas para representar os dados de recomendação.
Introdução
Com o advento da Web 2.0 a maior parte das atividades cotidianas passaram a ser realizadas online: hoje é possível realizar cursos, fazer compras, assistir a filmes e séries, jogar, dentre muitas outras. Como temos tudo na palma da mão, a quantidade de informação disponível explodiu e somos bombardeados o tempo todo com todo o tipo de produtos e serviços. A tarefa de escolher um tênis para comprar, um jogo de videogame para jogar ou uma série para assistir se transformou numa tarefa de dificuldade monstruosa. O que deveria ser algo trivial, agora pode levar várias horas até encontrar o que de fato queremos consumir. Afinal, quem nunca acessou a Netflix e ficou tanto tempo procurando que acabou desistindo sem de fato assistir a nada?
É nesse contexto que surgem os sistemas de recomendação e seu objetivo nada mais é do que ajudar o usuário a identificar itens que ele possa gostar (nesse artigo, vamos chamar de itens quaisquer produtos, serviços, filmes que possam ser recomendados). Então, com base no histórico de visualizações/consumo do usuário, o sistema de recomendação consegue predizer o grau de preferência do usuário pelos itens que ele ainda não viu, e com base nisso, consegue apresentar os itens que ele tem maior probabilidade de gostar.
Os benefícios dos sistemas de recomendação são inúmeros, tanto para usuários, quanto para vendedores/provedores de conteúdo. Para usuários, fica muito mais fácil encontrar o que consumir. Para os vendedores/provedores de conteúdo, há um aumento do número de vendas e/ou itens consumidos, porque os usuários conseguem encontrar com relativa facilidade o que procuram.
A importância dada a esses sistemas é tanta que em 2006 a Netflix lançou um desafio: o time que desenvolvesse um algoritmo que superasse o seu próprio em 10% seria premiado em US$1,000,000. Essa competição ficou conhecida como Netflix Prize, e só foi finalizada em 2009, quando o time BellKor’s Pragmatic Chaos finalmente conseguiu superar o algoritmo da Netflix em 10,06%. Os investimentos nessa área só aumentaram desde então, e é por isso que os sistemas de recomendação têm sido utilizados pela maioria das grandes empresas, como Netflix, Amazon, Google, Facebook, Spotify, e muitas outras.
Mas e então, como podemos implementar um sistema de recomendação? Quais são os dados utilizados e que tipo de técnicas de Machine Learning podemos fazer uso?
Definição do problema
A ideia principal por trás dos sistemas de recomendação é tentar predizer o quanto um usuário irá gostar de um determinado item. Para isso, são utilizadas informações passadas do consumo dos usuários. Considere o exemplo de um serviço de streaming de filmes:
João deu a nota 5 (excelente) para o filme Harry Potter 1
João deu a nota 3 (regular) para o filme Missão Impossível
João deu a nota 4 (bom) para o filme Animais Fantásticos
Maria deu a nota 2 (ruim) para o filme Harry Potter 2
Maria deu a nota 1 (péssimo) para o filme Animais Fantásticos
Flávia deu a nota 5 (excelente) para o filme Harry Potter 1
A maneira mais tradicional para representar esses dados computacionalmente é por meio de uma matriz de avaliações, R, tal que Rᵤᵥ representa a nota que o usuário u deu.
Nesse caso, a tarefa de recomendação seria então predizer um valor para as entradas faltantes da matriz. Algumas técnicas para isso serão apresentadas no segundo artigo desta série sobre sistemas de recomendações.
Existem maneiras alternativas para fazer a representação dos dados em sistemas de recomendação. E uma delas é por meio de uma tabela atributo-valor, assim como geralmente é utilizado em Machine Learning.