Sistemas de Recomendação Usando Mahout - Dia 2
-
Upload
alison-marczewski -
Category
Technology
-
view
238 -
download
1
description
Transcript of Sistemas de Recomendação Usando Mahout - Dia 2
![Page 1: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/1.jpg)
Sistemas de Recomendação usando Mahout
Alison MarczewskiÁlvaro Reis Neto
Workshop de Mineração de DadosJulho de 2012
![Page 2: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/2.jpg)
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
![Page 3: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/3.jpg)
Agenda
● Explorando métricas de similaridade● Correlação de Pearson● Distância Euclidiana● Correlação de Spearman● Coeficiente de Tanimoto
● Recomendação baseada em item● O algoritmo● Explorando recomendação baseada em item
● Recomendador Slope-one
![Page 4: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/4.jpg)
Pensando rápido...
Por que não perguntamos ao usuário do que ele gosta?
![Page 5: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/5.jpg)
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!
![Page 6: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/6.jpg)
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.
![Page 7: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/7.jpg)
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.
![Page 8: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/8.jpg)
Explorando recomendação baseada em usuários
● Algoritmo
para cada item i que u não tem avaliado aindapara cada outro usuario v que tem avaliado i
calcular a similaridade s entre u e vincorporar as preferencias de v para i, levando em consideração a similaridade s
retornar os itens ordenados de forma decrescente pela nota
![Page 9: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/9.jpg)
Explorando recomendação baseada em usuários
● GenericUserBasedRecommender
para cada outro usuario wcalcular a similaridade s entre u e wguardar 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 icalcular a similaridade s entre u e vincorporar as preferencias de v para i, levando em
consideração a similaridade sretornar os itens ordenados de forma descrescente pela nota
![Page 10: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/10.jpg)
Explorando recomendação baseada em usuários
● Neighborhood
![Page 11: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/11.jpg)
Explorando recomendação baseada em usuários
● Explorando user neighborhoods● Neighborhoods de tamanho fixo● NearestNUserNeighborhood(100, similarity,
model);
![Page 12: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/12.jpg)
Explorando recomendação baseada em usuários
● Explorando user neighborhoods● Neighborhoods por limite de similaridade● ThresholdUserNeighborhood(0.7, similarity,
model)
![Page 13: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/13.jpg)
Explorando recomendação baseada em usuários
• Explorando user neighborhoodsDataModel model = new GroupLensDataModel (new File("ratings.dat"));RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator ();RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {@Overridepublic 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);
![Page 14: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/14.jpg)
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
![Page 15: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/15.jpg)
Explorando métricas de similaridade
● Correlação de Pearson
![Page 16: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/16.jpg)
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
![Page 17: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/17.jpg)
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?
![Page 18: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/18.jpg)
Explorando métricas de similaridade
● Distância Euclidiana
![Page 19: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/19.jpg)
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)
![Page 20: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/20.jpg)
Explorando métricas de similaridade
● Correlação de Spearman
![Page 21: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/21.jpg)
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
![Page 22: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/22.jpg)
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
![Page 23: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/23.jpg)
Explorando métricas de similaridade
● Correlação de Tanimoto
![Page 24: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/24.jpg)
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!
![Page 25: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/25.jpg)
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
![Page 26: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/26.jpg)
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?
![Page 27: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/27.jpg)
Recomendação baseada em item
●Algoritmo
para cada item i que u não avaliou aindapara cada item j que u avaliou
calcular a similaridade s entre i e jguardar as preferencias de u para j, levando em consideração a similaridade s
retornar os itens ordenados de forma decrescente pela nota.
vizinhança?
![Page 28: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/28.jpg)
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);
}
![Page 29: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/29.jpg)
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.
![Page 30: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/30.jpg)
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?
![Page 31: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/31.jpg)
Recomendador slope-one
● Algoritmo:
para cada item ipara cada outro item j
para cada usuario u que avaliou i e jadicionar a diferenca nas preferencias de u para i e j em média
para cada item i que o usuario u nao avalioupara cada item j que o usuario u avaliou
encontrar a diferenca média na preferencia entre j e iadd esta diferenca nas preferencia de u para jadd tal diferença para a media em execucao
retornar os itens ranqueados por essas medias
![Page 32: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/32.jpg)
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.
![Page 33: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/33.jpg)
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
![Page 34: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/34.jpg)
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?
![Page 35: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/35.jpg)
Análise de dados
● Análise de dados - limbiseti
![Page 36: Sistemas de Recomendação Usando Mahout - Dia 2](https://reader031.fdocumentos.tips/reader031/viewer/2022020105/558e0f1f1a28abfc768b457a/html5/thumbnails/36.jpg)