Sistemas de
Recomendação
AULA 17
DATA MINING
Sandra de Amo
Esquema Geral
Aula 1:
 Introdução:
 Filtragem Colaborativa versus Baseados em Conteúdo
 Sistemas baseados em conteúdo
Aula 2:
 Sistemas baseados em filtragem colaborativa
Aula 3:
 Um sistema Hibrido: PrefRec
 Fatores latentes
Aula 4:
 Sistemas baseados em filtragem colaborativa híbridos: vizinhança e
fatores latentes
Aula 5:
 Sistemas de Recomendação Sociais: introdução, conceitos sobre redes
complexas
Aula 6:
 Um exemplo de Sistema de Recomendação Social
Referências
Anand Rajaraman, Jure Leskovec, Jeffrey D. Ullman - Mining
Massive Datasets, Cambridge University Press, 2012. – Capitulo 9
Yehuda Koren: Matrix Factorization Techniques for Recommender
Systems – 2009
Yehuda Koren: Factorization meets the neighborhood: A
multifaceted collaborative filtering model – KDD 2008
O que é um Sistema de
Recomendação ?
DADOS DE TREINAMENTO
gostei
não gostei
Odiei
Gostei muito
USUÁRIOS
ITEMS
USUÁRIOS AVALIAM ITEMS
O que é um Sistema de
Recomendação ?
DADOS DE
TREINAMENTO
MODELO DE
RECOMENDAÇÃO M
Algoritmo de
Aprendizagem
+
Uma sequência de items
<I1,I2,…,IK> que u ainda
não avaliou e que lhe serão
recomendados
Usuário ativo u
e algumas de
suas
avaliações
Principais Desafios
Esparsidade dos dados de treinamento (sparsity) :
Cold-start de usuário
alguns usuários avaliam poucos items
alguns items são avaliados por poucos usuários.
Dificil recomendar items para um usuário que não avaliou nenhum item.
Cold-start de item
Dificil recomendar items que nunca foram avaliados por nenhum usuário
ainda
O que é um “bom” Sistema de
Recomendação
Tem boa acurácia: Recomenda items que são do agrado
do novo usário
Recomendação é um processo rápido executado online.
Recomenda items que “surpreendem” o usuário
Recomenda items que não são populares.
Consegue recomendar items e agradar o usuário sem
exigir um grande número de avaliações prévias do novo
usuário.
Consegue recomendar novos items que ainda não foram
avaliados por nenhum usuário.
Aplicações de SR
Recomendações de produtos:
 Livros (Amazon, Liv. Cultura, etc)
 Música (Itunes)
Recomendações de filmes
 Netflix
 Concurso Netflix em 2006: 1 milhão de dólares para o primeiro
algoritmo que superasse em 10% a acurácia de seu SR
(Cinematch)
Prêmio vencido em 2009 pelo grupo de pesquisadores “Bellkor’s
Pragmatic Chaos” – 3 anos de trabalho.
Algoritmo vencedor nunca foi utilizado: baixissima escalabilidade.
Recomendações de artigos de notícias ou outro conteúdo
 New York Times
 Blogs
 You Tube
Um modelo simples de SR
Dados de entrada (treinamento) :
Duas entidades principais: usuários e items
Relacionamento: Preferências (notas)
Matriz de utilidade (MU) : usuários versus items
HP1
A
4
B
5
HP2
HP3 TW
5
5
C
3
ITEMS (FILMES)
1
4
4
D
SW1 SW2 SW3
2
2
3
USUARIOS
Característica da MU: muito esparsa
Ex. : filmes SW2, SW3, HP3 foram avaliados por somente 1 usuário
Um modelo simples de SR
Objetivo:
predizer os lugares vagos na MU
Ex: Qual seria a nota que o usuário C daria para o
filme HP1 ?
Predizer notas é dificil. SR que predizem notas
normalmente não têm boa acurácia.
Não é necessário predizer todos os lugares vagos
(notas), mas sim, fornecer um ranking de alguns
items que seriam recomendados para o usuário.
Para fornecer um ranking, não é necessário predizer
uma nota exata para os items.
Como predizer as notas que seriam dadas
por A para o filme SW2 ?
Examinando filmes parecidos com SW2 a partir de seus conteúdos:
diretor, gênero,...
Examinando filmes que tiveram avaliações parecidas com as de
SW2
SW2 é parecido com SW1.
A não gostou de SW1, logo podemos concluir que A não gostaria de SW2.
Por exemplo: C avaliou SW1 e SW2 e gostou de ambos
Assim, infere-se que os usuários normalmente tem preferências similares por
estes dois filmes
Como A não gostou de SW1 então não gostaria de SW2.
Examinando usuários parecidos com A em termos de gosto:
O usuário C avaliou os mesmos filmes que A avaliou, e ambos deram notas
parecidas para tais filmes.
C não gostou de SW2.
Logo poderíamos concluir que A também não gostaria.
Porque Sistemas de
Recomendação são necessários ?
Lojas fisicas versus lojas virtuais
 Fisicas: Estoque disponivel << estoque real
Virtuais:Estoque disponivel = estoque real
Recomendações no “mundo fisico”: baseada na
popularidade dos items
 Lojas fisicas só podem mostrar os items populares.
 Somente os livros best-sellers são expostos
 Somente notícias que atraem a maioria dos leitores
são divulgadas nos jornais fisicos
Número de avaliações
O Fenômeno da “Cauda
Longa”
Items
Popularidade de um item = Número de avaliações do item
Sistemas de Recomendação são
imprescindíveis no mundo online
Lojas online não tem problemas para disponibilizar tudo o
que têm.
Usuários não tem condições de verificar tudo o que está
disponível
Usuários precisam ter uma idéia se gostariam ou não de
um produto que desconhecem.
Um exemplo típico da utilidade
dos sistemas de recomendação
Livros “Touching the void” e “Into the air” sobre montanhismo
 "Touching the void “ : nada popular quando publicado
 Anos depois, “Into the air” é publicado
Sistema de recomendação da Amazon:
 Notou alguns usuários que compravam os dois livros.
 Começou a recomendar “Touching the Void” a clientes que
compraram “ Into the air”
 Resultado: Popularidade de “ Touching the Void” aumenta –
ultrapassa “ Into the air”
Sem um sistema de recomendação, usuários dificilmente
conheceriam “Touching the Void”
Técnicas
Filtragem Colaborativa
 Clusterização
 Usuários similares são agrupados: itens apreciados por um usuário
similar a mim (cujas avaliações passadas são parecidas com as
minhas) são recomendados para mim.
 Items similares são agrupados: items similares àqueles que eu avaliei
positivamente são recomendados.
 Modelos de Fatores Latentes
Baseada em Conteúdo
 Mineração de Preferências
 Utiliza informações sobre as características dos items para criar um
modelo de recomendação
 Modelos enfrentam bem o desafio do cold-start de item.
Híbrida
 Mescla filtragem colaborativa e técnicas baseadas em conteúdo.
Dados de treinamento:
Como obtê-los ?
Dados de treinamento: = matriz de utilidade
Técnicas para preencher a MU:
 Diretas
 Pedir a um grupo de usuários que avalie items de um conjunto
fixado.
 A maioria dos usuários não gosta de dar notas
 Os dados obtidos desta maneira são tendenciosos: provém de um
tipo preciso de usuário que gosta de avaliar produtos
 Indiretas: fazer inferências sobre preferências a partir de ações
tomadas pelo usuário
 Viu um filme, leu um artigo  gostou !
 Viu informações sobre um livro na Amazon  tem interesse no livro !
 Avaliações são do tipo 1 ou 0.
 Somente o valor 1 tem significado.
 Valor zero = ausência de nota
SISTEMAS BASEADOS EM
CONTEÚDO
Técnicas
Similaridade de perfis: item x usuário
Recomenda-se items cujo perfil é mais próximo do perfil do usuário.
Não se cria um modelo de recomendação
Vantagem: rapidez na recomendação
Desvantagem: acurácia baixa
Classificadores:
Cria-se um modelo de recomendação para cada usuário.
Classes: notas ou “gosta/não-gosta”
Para cada usuário:
Treina-se um classificador onde os dados de treinamento são os items com
suas características e sua classe (com o valor da preferência deste usuário:
gosta/não-gosta)
Recomenda-se items a um usuário utilizando o classificador treinado para
este usuário.
Vantagem: acurácia melhor do que a técnica de similaridade de perfis.
Desvantagem: treinamento para cada usuário pode levar tempo.
Técnica de Similaridade de
Perfis
Perfil do item: atributos importantes dos items são selecionados
Filme: Diretor, Gênero, Ano, Ator principal
Livro: Autor, Pais, Gênero, Ano
Música: Gênero, Compositor, Tipo, Ano
Características : Atributo = Valor
Exemplo: características escolhidas são Ator = X, onde X é o nome de
um ator. Existem infinitas características deste tipo, uma para cada
possivel ator.
Um filme que tem os atores Julia Roberts e Mel Gibson, teria valores 1
para as caracteristicas Ator = Julia Roberts e Ator = Mel Gibson
Perfil do usuário: vetor que sumariza as preferências do usuário
com relação às características dos items.
Exemplo: a coordenada referente à característica Ator = Julia Roberts é 20%
(0.2), significando que 20% dos filmes que o usuário gosta têm a atriz Julia
Roberts
Como representar o perfil do
item
Vetor: coordenadas boleanas, coordenadas numéricas
Exemplo:
 Items = filmes.
 Atributo = ator.
 A = conjunto de todos os atores.
 Seja
 f1: filme com 5 atores A2,A3,A5,A6,A8
 f2: filme com 5 atores A1,A2,A4,A6,A7
 Média de notas de f1 = 3; Média de notas de f2 = 4
 As características escolhidas são 9: Ator = A1, Ator = A2, ..., Ator =
A8 e Média.
 Perfil de f1 = p1 = (0,1,1,0,1,1,0,1,3)
 Perfil de f2 = p2 = (1,1,0,1,0,1,1,0,4)
Como medir a similaridade
entre dois perfis
Medida de similaridade entre os perfis dos items = cosseno(p1,p2) =
p1.p2/ |p1||p2|
Obervação: p1 e p2 têm infinitas coordenadas, mas somente as mostradas no
perfil são distintas de zero para ambos os vetores. As outras coordenadas que não
aparecem não influenciam no cálculo do cosseno.
Cuidado com escala utilizada em coordenadas com valores numéricos (como a
média das notas):
Exemplo: suponha que se utilize um fator de escala ɑ > 0 para a média das notas.
Logo p1 = (0,1,1,0,1,1,0,1,3ɑ) e p2 = (1,1,0,1,0,1,1,0,4ɑ)
Cosseno(p1,p2) = 2 + 12ɑ2 / 25 + 125ɑ2 + 144ɑ4
Se ɑ = 1 : cosseno(p1,p2) = 0.816
Se ɑ = 2 : cosseno(p1,p2) = 0.940
Se ɑ = 1/2 : cosseno(p1,p2) = 0.619
A similaridade entre os vetores depende da escala utilizada para os valores
numéricos.
Como representar o perfil do
usuário ?
Vetor contendo as preferências do usuário
Uma coordenada por característica do produto
Caso em que a MU só contém 1’s ou 0’s
Valor da coordenada = X%
X por cento dos produtos que o usuário gosta tem a característica
representada pela coordenada.
Exemplo (preferência do usuário é binária: gostou/não gostou
Supondo Items = filmes; Atributo = Ator; características escolhidas
Ator = A1, Ator = A2, ..., Ator = A8
Para cada i = 1,...,8, seja xi = porcentagem de filmes contendo o
ator Ai que o usuário u gostou.
Perfil de u = (x1,x2,...,x8)
Como representar o perfil do
usuário ?
Exemplo (preferência do usuário é uma nota de 1 a 5):
 Supondo Items = filmes; Atributo = Ator; características escolhidas Ator =
A1, Ator = A2, ..., Ator = A8
 A média das notas dadas pelo usuário u é 3
 Suponha que dos filmes avaliados por u, 3 deles contém o ator A1, com
notas 5, 4 e 3
 Então o valor da coordenada 1 (referente ao ator A1) no perfil de u é a
média entre 5-3, 4-3 e 3-3 = 1
Exercício: suponha usuário V avaliou 3 filmes com o ator A1, com notas 2,
3 e 5. Qual a componente relativa ao ator A1 para o perfil do usuário A1 ?
Como recomendar items utilizando a
técnica da similaridade de perfis ?
“grau” de preferência de um usuário u sobre um item i =
similaridade entre perfil(u) e perfil(i)
Itens com perfis mais próximos ao perfil(u) serão
recomendados.
Exercício: Proponha outras maneiras de recomendar itens
a um usuário a partir de seus perfis.
Exercício
Exercicio 9.2.1 – Capítulo 9 livro texto
Calcular similaridade entre perfis de items, com
atributos numéricos
Items não convencionais:
documentos, imagens
Documentos podem ser items a serem recomendados: artigos, notícias, blogs,
web pages, ...
Que atributos utilizar para caracterizar um documento ?
 Seja BD = {D1,D2,...,Dn} um banco de dados de documentos.
 Di = conjunto de palavras = {w1,w2, ..., wn} (após eliminação de stop
words)
Stop words = pronomes, conectivos, ... (dizem muito pouco sobre o documento,
estão presentes na maioria dos documentos)
Para cada palavra wi de Dj, calcula-se seu score TF.IDF (Term Frequency
times Inverse Document Frequency)
Tij = fij/max fkj (fij = número de vezes que wi aparece no documento Di)
IDFi = log2(n/ni) onde ni = número de documentos do BD onde wi aparece
O TF.IDF de wi em Di = Tij . IDFi
Um score TF.IDF alto de wi em Di significa que wi aparece muito em Di e pouco
em outros documentos.
Perfil de um documento D
Considera-se as n palavras de D com os mais altos scores TD.IDF.
W_D = {w1,...,wn}
Por exemplo: se D é uma notícia, estas palavras incluiriam os
nomes das pessoas que aparecem na notícia, palavras
descrevendo os eventos que aparecem na notícia, etc
Considera-se W = união dos W_D = conjunto das palavras que têm
alto score TD.IDF em algum documento do BD.
Seja K = tamanho de W.
Perfil(D) = vetor de K coordenadas = (0,1,1,....)
Uma coordenada por palavra de W.
Se a palavra aparece em D, a coordenada = 1 (e zero em caso
contrário)
Perfil de uma imagem I
Imagem = vetores caracteristica (histograma de cores, forma, textura)
Imagem = conjunto de tags = palavras que descrevem a imagem
Por-do-sol em Malibu, Praça da Sé, ...
Exemplo: site del.icio.us pede aos usuários para associar tags para páginas
web
Objetivo inicial de del.icio.us:
novo método de busca de páginas:
1. usuário entra um conjunto de tags,
2. Sistema busca páginas web com perfis similares
Uso de tags para recomendação
1.
Para cada usuário temos um conjunto P de páginas
por onde ele navegou ou que guardou em seu
bookmark.
2.
Recomenda-se páginas cujo perfil é similar ao perfil
das páginas de P.
Exercicio: propor novas maneiras de recomendar
páginas para um usuário, utilizando informações sobre
tags.