sistemas de recomendação usando mahout - dia 2

36
Sistemas de Recomendação usando Mahout Alison Marczewski Álvaro Reis Neto Workshop de Mineração de Dados Julho de 2012

Upload: alison-marczewski

Post on 27-Jun-2015

236 views

Category:

Technology


1 download

DESCRIPTION

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).

TRANSCRIPT

Page 1: Sistemas de Recomendação Usando Mahout - Dia 2

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

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

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

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

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

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

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

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

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

Explorando recomendação baseada em usuários

● Neighborhood

Page 11: Sistemas de Recomendação Usando Mahout - Dia 2

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

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

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

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

Explorando métricas de similaridade

● Correlação de Pearson

Page 16: Sistemas de Recomendação Usando Mahout - Dia 2

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

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

Explorando métricas de similaridade

● Distância Euclidiana

Page 19: Sistemas de Recomendação Usando Mahout - Dia 2

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

Explorando métricas de similaridade

● Correlação de Spearman

Page 21: Sistemas de Recomendação Usando Mahout - Dia 2

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

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

Explorando métricas de similaridade

● Correlação de Tanimoto

Page 24: Sistemas de Recomendação Usando Mahout - Dia 2

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

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

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

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

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

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

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

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

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

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

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

Análise de dados

● Análise de dados - limbiseti

Page 36: Sistemas de Recomendação Usando Mahout - Dia 2