Sistemas de Recomendação usando Mahout

Alison Marczewski
Álvaro Reis Neto
Workshop de Mineração de Dados
Julho de 2012
Agenda
Fazendo Recomendações

●

●
●

Entendendo Recomendação Baseada em usuário
Explorando Recomendação baseada em usuári...
Agenda
●

Explorando métricas de similaridade
●
●
●
●

●

Recomendação baseada em item
●
●

●

Correlação de Pearson
Distâ...
Pensando rápido...

Por que não perguntamos ao
usuário do que ele gosta?
Entendendo recomendação
baseada em usuários
Entendendo Recomendação
Baseada em usuário
●
Situação I
●

➢

➢

➢

➢
➢
➢

adu...
Entendendo recomendação
baseada em usuários
●

➢

➢

➢

➢

➢

Situação II
adulto: Quero comprar um CD para
um adolescente
...
Entendendo recomendação
baseada em usuários
●

➢

➢

➢

➢

➢

Situação III
adulto: Quero comprar um CD para um
adolescente...
Explorando recomendação
baseada em usuários
●

Algoritmo
para cada item i que u não tem avaliado ainda
para cada outro usu...
Explorando recomendação
baseada em usuários
●

GenericUserBasedRecommender
para cada outro usuario w
calcular a similarida...
Explorando recomendação
baseada em usuários
●

Neighborhood
Explorando recomendação
baseada em usuários
●

Explorando user neighborhoods
●
Neighborhoods de tamanho fixo
●
NearestNUse...
Explorando recomendação
baseada em usuários
●

Explorando user neighborhoods
●
Neighborhoods por limite de similaridade
●
...
Explorando recomendação
baseada em usuários
•

Explorando user neighborhoods
DataModel model = new GroupLensDataModel (new...
Explorando métricas de
similaridade
●

Correlação de Pearson
●
PearsonCorrelationSimilarity
●
Varia entre -1 e 1. Mede a t...
Explorando métricas de
similaridade
●

Correlação de Pearson
Explorando métricas de
similaridade
●

Correlação de Pearson
●
Problemas apresentados
●
Usa como base apenas itens que amb...
Explorando métricas de
similaridade
●

Distância Euclidiana
●
EuclideanDistanceSimilarity
●
Calcula-se a “distância” d ent...
Explorando métricas de
similaridade
●

Distância Euclidiana
Explorando métricas de
similaridade
●

Correlação de Spearman
●
SpearmanCorrelationSimilarity
●
Variante da correlação de ...
Explorando métricas de
similaridade
●

Correlação de Spearman
Explorando métricas de
similaridade
●

Correlação de Tanimoto
●
TanimotoCoefficientSimilarity
●
Ignora preferência de valo...
Explorando métricas de
similaridade
●

Correlação de Tanimoto
●

similarity = C / (A + B – C)
●
A = Num.Itens avaliados po...
Explorando métricas de
similaridade
●

Correlação de Tanimoto
Recomendação baseada em
item
●

Entendendo a recomendação baseada em item
●
Situação
➢
➢
➢

➢

➢

adulto: Quero comprar um...
Recomendação baseada em
item
●

Pandora
●
Eles acreditam que uma música é composta por
uma série de características
●
Assi...
Recomendação baseada em
item
●

Diferença entre recomendação baseada em usuário
e por item
●
Usuário: Quem é similar a est...
Recomendação baseada em
item
●

Algoritmo
para cada item i que u não avaliou ainda
para cada item j que u avaliou
calcular...
Recomendação baseada em
item
●

Explorando recomendação baseada em item
●

As métricas de similaridade também funcionam pa...
Recomendador slope-one
Ideia:

A maioria das pessoas que gostam do filme A
também gostam do filme B. Mas as pessoas
tendem...
Recomendador slope-one
●

Exemplo:

Vamos imaginar que as pessoas avaliaram, em
média, o filme Scarface com um ponto a mai...
Recomendador slope-one
●

Algoritmo:
para cada item i
para cada outro item j
para cada usuario u que avaliou i e j
adicion...
Recomendador slope-one
●
●

●
●
●

SlopeOneRecommender
É uma ótima escolha em contextos onde as
preferências mudam rapidam...
Recomendador slope-one
●

Sistemas de recomendação que usam essa métrica
●
Hitflip: sistema de recomendação de dvds
●
InDi...
Pensando mais um pouco...
●

●
●

●

Como será a métrica de recomendação do(a):
●
Last.fm
●
Stumbleupon
●
Amazon
●
Limbíse...
Análise de dados
●

Análise de dados - limbiseti
Sistemas de Recomendação Usando Mahout - Dia 2
Próximos SlideShares
Carregando em…5
×

Sistemas de Recomendação Usando Mahout - Dia 2

493 visualizações

Publicada em

Minicurso de 3 dias sobre um pouco da teoria em sistemas de recomendação e uso do framework mahout no desenvolvimento dos mesmos.

Esse minicurso faz parte de um dos trabalhos realizados no projeto de cooperação em sistemas inteligentes em nuvem entre o Instituto Nokia de Tecnologia(INdT) e o Instituto de Computação(IComp) da Universidade Federal do Amazonas(UFAM).

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
493
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Sistemas de Recomendação Usando Mahout - Dia 2

  1. 1. Sistemas de Recomendação usando Mahout Alison Marczewski Álvaro Reis Neto Workshop de Mineração de Dados Julho de 2012
  2. 2. Agenda Fazendo Recomendações ● ● ● Entendendo Recomendação Baseada em usuário Explorando Recomendação baseada em usuário ● ● ● O algoritmo GenericUserBasedRecommender Explorando user neighborhoods ● Neighborhoods de tamanho fixo ● Neighborhoods por limite de similaridade
  3. 3. Agenda ● Explorando métricas de similaridade ● ● ● ● ● Recomendação baseada em item ● ● ● Correlação de Pearson Distância Euclidiana Correlação de Spearman Coeficiente de Tanimoto O algoritmo Explorando recomendação baseada em item Recomendador Slope-one
  4. 4. Pensando rápido... Por que não perguntamos ao usuário do que ele gosta?
  5. 5. Entendendo recomendação baseada em usuários Entendendo Recomendação Baseada em usuário ● Situação I ● ➢ ➢ ➢ ➢ ➢ ➢ adulto: Quero comprar um CD para um adolescente vend: qual tipo de música ou banda que ele gosta? adulto: de tudo que os jovens gostam hoje em dia vend: qual tipo de música ou banda? adulto: não sei, pra mim é tudo barulhento. vend: bom, muitos adolescentes estão comprando o cd da banda restart. adulto: vou querer esse!
  6. 6. Entendendo recomendação baseada em usuários ● ➢ ➢ ➢ ➢ ➢ Situação II adulto: Quero comprar um CD para um adolescente vend: qual tipo de música ou banda que ele gosta? adulto: eu não sei, mas o seu melhor amigo gosta de metal vend: bom, iron maiden é a banda mais famosa de metal. adulto: então vou querer o álbum mais recente dessa banda.
  7. 7. Entendendo recomendação baseada em usuários ● ➢ ➢ ➢ ➢ ➢ Situação III adulto: Quero comprar um CD para um adolescente vend: qual tipo de música ou banda que ele gosta? adulto: música? Bom, eu não sei. Mas anotei o nome das bandas presentes nos posters que tem no quarto dele. São as bandas: sonata arctica, rammstein, helloween, blind guardian, rhapsody of fire, soad. vend: bom, meu filho também gosta muito dessas bandas. Ultimamente ele tem comentado sobre a banda stratovarius. adulto: interessante, vou querer um CD deles.
  8. 8. Explorando recomendação baseada em usuários ● Algoritmo para cada item i que u não tem avaliado ainda para cada outro usuario v que tem avaliado i calcular a similaridade s entre u e v incorporar as preferencias de v para i, levando em consideração a similaridade s retornar os itens ordenados de forma decrescente pela nota
  9. 9. Explorando recomendação baseada em usuários ● GenericUserBasedRecommender para cada outro usuario w calcular a similaridade s entre u e w guardar em n(vizinhança) os usuários mais similares para cada item i que algum usuário em n tenha avaliado, mas que u não tenha avaliado ainda para cada outro usuario v em n que tem avaliado i calcular a similaridade s entre u e v incorporar as preferencias de v para i, levando em consideração a similaridade s retornar os itens ordenados de forma descrescente pela nota
  10. 10. Explorando recomendação baseada em usuários ● Neighborhood
  11. 11. Explorando recomendação baseada em usuários ● Explorando user neighborhoods ● Neighborhoods de tamanho fixo ● NearestNUserNeighborhood(100, similarity, model);
  12. 12. Explorando recomendação baseada em usuários ● Explorando user neighborhoods ● Neighborhoods por limite de similaridade ● ThresholdUserNeighborhood(0.7, similarity, model)
  13. 13. Explorando recomendação baseada em usuários • Explorando user neighborhoods DataModel model = new GroupLensDataModel (new File("ratings.dat")); RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator (); RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity, model); return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; double score = evaluator.evaluate(recommenderBuilder, null, model, 0.95, 0.05); System.out.println(score);
  14. 14. Explorando métricas de similaridade ● Correlação de Pearson ● PearsonCorrelationSimilarity ● Varia entre -1 e 1. Mede a tendência que duas séries possuem de se descolocarem juntas
  15. 15. Explorando métricas de similaridade ● Correlação de Pearson
  16. 16. Explorando métricas de similaridade ● Correlação de Pearson ● Problemas apresentados ● Usa como base apenas itens que ambos avaliaram ● Não faz o cálculo caso tenha apenas um item em comum ● Se todos os valores de uma série forem idênticos, o cálculo também não é realizado
  17. 17. Explorando métricas de similaridade ● Distância Euclidiana ● EuclideanDistanceSimilarity ● Calcula-se a “distância” d entre dois usuários ● Cada item é uma dimensão ● Retorna 1 / (1 + d) ● 1: os usuários possuem preferências idênticas (d = 0) ● Quanto mais próximo de 0(valor de d aumentando), menos similares. Cosseno?
  18. 18. Explorando métricas de similaridade ● Distância Euclidiana
  19. 19. Explorando métricas de similaridade ● Correlação de Spearman ● SpearmanCorrelationSimilarity ● Variante da correlação de Pearson ● Retorna sempre -1 ou 1 ● Para a menor nota, atribui 1. Para segunda menor, atribui 2 e assim por diante. Após esse processo, aplicar pearson sobre os valores transformados ● Muito lento ● Muito usado para fins de análise, mas para comerciais não ● Pode-se usar o CachingUserSimilarity(faz um préprocessamento e armazena o resultado em cache)
  20. 20. Explorando métricas de similaridade ● Correlação de Spearman
  21. 21. Explorando métricas de similaridade ● Correlação de Tanimoto ● TanimotoCoefficientSimilarity ● Ignora preferência de valores ● Retorna valores entre 0 e 1 ● É possível transformar esse resultado para [-1, 1]. ● similarity = 2 * similarity - 1
  22. 22. Explorando métricas de similaridade ● Correlação de Tanimoto ● similarity = C / (A + B – C) ● A = Num.Itens avaliados por a ● B = Num.Itens avaliados por b ● C = Item avaliados por a e b
  23. 23. Explorando métricas de similaridade ● Correlação de Tanimoto
  24. 24. Recomendação baseada em item ● Entendendo a recomendação baseada em item ● Situação ➢ ➢ ➢ ➢ ➢ adulto: Quero comprar um CD para um adolescente vend: qual tipo de música ou banda que ele gosta? adulto: não sei, mas ele está sempre usando alguma blusa do Serj Tankian vend: bom, quase todo mundo que eu conheço que gosta de escutar Serj Tankian, parece gostar da banda Scars on Broadway adulto: vou querer um CD deles!
  25. 25. Recomendação baseada em item ● Pandora ● Eles acreditam que uma música é composta por uma série de características ● Assim como o genoma descreve uma pessoa, essas características descrevem uma música ● Aproximadamente 400 parâmetros, como: melodia, harmonia, ritmo, instrumentação, performance vocal... ● Análise feita manualmente(gargalo) ● Como resolver? ● Rede de confiança ● Gostou/não gostou da música
  26. 26. Recomendação baseada em item ● Diferença entre recomendação baseada em usuário e por item ● Usuário: Quem é similar a esta pessoa e que gosta do que ela gosta? ● Item: O que é similar ao que ele gosta?
  27. 27. Recomendação baseada em item ● Algoritmo para cada item i que u não avaliou ainda para cada item j que u avaliou calcular a similaridade s entre i e j guardar as preferencias de u para j, levando em consideração a similaridade s retornar os itens ordenados de forma decrescente pela nota. vizinhança?
  28. 28. Recomendação baseada em item ● Explorando recomendação baseada em item ● As métricas de similaridade também funcionam para item, pois implementam a interface ItemSimilarity public Recommender buildRecommender(DataModel model) throws TasteException { ItemSimilarity similarity = new PearsonCorrelationSimilarity(model); return new GenericItemBasedRecommender(model, similarity); }
  29. 29. Recomendador slope-one Ideia: A maioria das pessoas que gostam do filme A também gostam do filme B. Mas as pessoas tendem a gostar um pouco mais do filme B. Agora vamos imaginar que a maioria das pessoas que avaliaram o filme A com 4, avaliaram o filme B com 5 e a maioria das que avaliaram o filme A com 3, avaliaram o filme B com 4. Podemos concluir que em média, o filme B é avaliado com um ponto a mais em relação a A.
  30. 30. Recomendador slope-one ● Exemplo: Vamos imaginar que as pessoas avaliaram, em média, o filme Scarface com um ponto a mais que Carlito's Way. Vamos imaginar também que todos avaliaram, em média, com a mesma nota os filmes Scarface e The Godfather. Supomos agora que há um usuário que avaliou Carlito's Way com 2 e The Godfather com 4. Qual a estimativa de nota desde usuário para o filme Scarface?
  31. 31. Recomendador slope-one ● Algoritmo: para cada item i para cada outro item j para cada usuario u que avaliou i e j adicionar a diferenca nas preferencias de u para i e j em média para cada item i que o usuario u nao avaliou para cada item j que o usuario u avaliou encontrar a diferenca média na preferencia entre j e i add esta diferenca nas preferencia de u para j add tal diferença para a media em execucao retornar os itens ranqueados por essas medias
  32. 32. Recomendador slope-one ● ● ● ● ● SlopeOneRecommender É uma ótima escolha em contextos onde as preferências mudam rapidamente Esté método funciona muito bem em muitos casos O algoritmo não faz uso de métricas de similaridade O DiffStorage consome muita memória. Para resolver tal problema, os dados são pré-processados e armazenados em uma base de dados ● Tal pré-processamento demanda muito processador. É aconselhável que este préprocessamento seja realizado de forma distribuída.
  33. 33. Recomendador slope-one ● Sistemas de recomendação que usam essa métrica ● Hitflip: sistema de recomendação de dvds ● InDiscover: sistema de recomendação de mp3 ● Value Investing News ● AllTheBests ● AllFamo ● Qué libro me recomiendas
  34. 34. Pensando mais um pouco... ● ● ● ● Como será a métrica de recomendação do(a): ● Last.fm ● Stumbleupon ● Amazon ● Limbíseti ● Curiosidades: vinhança(2, dist. euclidiana) e filtro ● Outros? Recomendação baseada em contexto Recomendação baseada em rede de confiança. ● E a desconfiança? Sugestões?
  35. 35. Análise de dados ● Análise de dados - limbiseti

×