SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
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ário
●
●
●

O algoritmo
GenericUserBasedRecommender
Explorando user neighborhoods
●
Neighborhoods de tamanho fixo
●
Neighborhoods por limite de similaridade
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
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
●

➢

➢

➢

➢
➢
➢

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!
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.
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.
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
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
Explorando recomendação
baseada em usuários
●

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

Explorando user neighborhoods
●
Neighborhoods de tamanho fixo
●
NearestNUserNeighborhood(100, similarity,
model);
Explorando recomendação
baseada em usuários
●

Explorando user neighborhoods
●
Neighborhoods por limite de similaridade
●
ThresholdUserNeighborhood(0.7, similarity,
model)
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);
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
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 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
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?
Explorando métricas de
similaridade
●

Distância Euclidiana
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)
Explorando métricas de
similaridade
●

Correlação de Spearman
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
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
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 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!
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
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?
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?
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);
}
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.
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?
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
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.
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
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?
Análise de dados
●

Análise de dados - limbiseti
Sistemas de Recomendação Usando Mahout - Dia 2

Mais conteúdo relacionado

Destaque

Um Modelo de Negociação de Privacidade para Sistemas de Recomendação Social
Um Modelo de Negociação de Privacidade para Sistemas de Recomendação SocialUm Modelo de Negociação de Privacidade para Sistemas de Recomendação Social
Um Modelo de Negociação de Privacidade para Sistemas de Recomendação SocialAnderson Kanegae Soares Rocha
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisNatã Melo
 
Conceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de RecomendaçãoConceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de RecomendaçãoJoel Pinho Lucas
 
Co-occurrence Based Recommendations with Mahout, Scala and Spark
Co-occurrence Based Recommendations with Mahout, Scala and SparkCo-occurrence Based Recommendations with Mahout, Scala and Spark
Co-occurrence Based Recommendations with Mahout, Scala and Sparksscdotopen
 
Sistemas de Recomendação e Inteligência Coletiva
Sistemas de Recomendação e Inteligência ColetivaSistemas de Recomendação e Inteligência Coletiva
Sistemas de Recomendação e Inteligência ColetivaMarcel Caraciolo
 
Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendaçãoAnderson Dantas
 
Técnicas de Mineração de Dados Aplicadas a Sistemas de Recomendação
Técnicas de Mineração de Dados Aplicadas a Sistemas de RecomendaçãoTécnicas de Mineração de Dados Aplicadas a Sistemas de Recomendação
Técnicas de Mineração de Dados Aplicadas a Sistemas de Recomendaçãosaspi2
 
Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...
Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...
Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...Alan Said
 
Apache Mahout Tutorial - Recommendation - 2013/2014
Apache Mahout Tutorial - Recommendation - 2013/2014 Apache Mahout Tutorial - Recommendation - 2013/2014
Apache Mahout Tutorial - Recommendation - 2013/2014 Cataldo Musto
 
How to Build a Recommendation Engine on Spark
How to Build a Recommendation Engine on SparkHow to Build a Recommendation Engine on Spark
How to Build a Recommendation Engine on SparkCaserta
 

Destaque (13)

Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendação
 
Um Modelo de Negociação de Privacidade para Sistemas de Recomendação Social
Um Modelo de Negociação de Privacidade para Sistemas de Recomendação SocialUm Modelo de Negociação de Privacidade para Sistemas de Recomendação Social
Um Modelo de Negociação de Privacidade para Sistemas de Recomendação Social
 
Sistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes SociaisSistemas Recomendação em Redes Sociais
Sistemas Recomendação em Redes Sociais
 
Conceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de RecomendaçãoConceitos e práticas em Sistemas de Recomendação
Conceitos e práticas em Sistemas de Recomendação
 
Co-occurrence Based Recommendations with Mahout, Scala and Spark
Co-occurrence Based Recommendations with Mahout, Scala and SparkCo-occurrence Based Recommendations with Mahout, Scala and Spark
Co-occurrence Based Recommendations with Mahout, Scala and Spark
 
Sistemas de Recomendação e Inteligência Coletiva
Sistemas de Recomendação e Inteligência ColetivaSistemas de Recomendação e Inteligência Coletiva
Sistemas de Recomendação e Inteligência Coletiva
 
Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendação
 
Sistemas de Recomendação
Sistemas de Recomendação Sistemas de Recomendação
Sistemas de Recomendação
 
Técnicas de Mineração de Dados Aplicadas a Sistemas de Recomendação
Técnicas de Mineração de Dados Aplicadas a Sistemas de RecomendaçãoTécnicas de Mineração de Dados Aplicadas a Sistemas de Recomendação
Técnicas de Mineração de Dados Aplicadas a Sistemas de Recomendação
 
Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...
Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...
Comparative Recommender System Evaluation: Benchmarking Recommendation Frame...
 
Apache Mahout Tutorial - Recommendation - 2013/2014
Apache Mahout Tutorial - Recommendation - 2013/2014 Apache Mahout Tutorial - Recommendation - 2013/2014
Apache Mahout Tutorial - Recommendation - 2013/2014
 
Shideshare
ShideshareShideshare
Shideshare
 
How to Build a Recommendation Engine on Spark
How to Build a Recommendation Engine on SparkHow to Build a Recommendation Engine on Spark
How to Build a Recommendation Engine on Spark
 

Semelhante a Sistemas de Recomendação Usando Mahout - Dia 2

Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2Ralph Rassweiler
 
WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...
WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...
WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...Celso Crivelaro
 
WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...
WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...
WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...Celso Crivelaro
 
Tchêlinux Porto Alegre 2013 - Sistemas de Recomendação
Tchêlinux  Porto Alegre 2013 - Sistemas de RecomendaçãoTchêlinux  Porto Alegre 2013 - Sistemas de Recomendação
Tchêlinux Porto Alegre 2013 - Sistemas de RecomendaçãoMárcio Bortolini dos Santos
 
Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1Ralph Rassweiler
 
Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...
Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...
Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...Leandro Ciuffo
 
Collaborative filtering
Collaborative filteringCollaborative filtering
Collaborative filteringZhang Yi Ling
 
Oferecendo soluções mais assertivas para os usuários de um serviço combinan...
Oferecendo soluções mais assertivas  para os usuários de um serviço  combinan...Oferecendo soluções mais assertivas  para os usuários de um serviço  combinan...
Oferecendo soluções mais assertivas para os usuários de um serviço combinan...belaamaral
 
Choose your weapon - TDC Floripa 2019
Choose your weapon - TDC Floripa 2019Choose your weapon - TDC Floripa 2019
Choose your weapon - TDC Floripa 2019Alex Lattaro
 
SC-cap15-recomendacao-apresentacao.ppt
SC-cap15-recomendacao-apresentacao.pptSC-cap15-recomendacao-apresentacao.ppt
SC-cap15-recomendacao-apresentacao.pptJadna Almeida
 
Minerando dados com Python
Minerando dados com PythonMinerando dados com Python
Minerando dados com PythonRamiro Luz
 
[Jose Ahirton Lopes] Algoritmos de Recomendacao
[Jose Ahirton Lopes] Algoritmos de Recomendacao[Jose Ahirton Lopes] Algoritmos de Recomendacao
[Jose Ahirton Lopes] Algoritmos de RecomendacaoAhirton Lopes
 

Semelhante a Sistemas de Recomendação Usando Mahout - Dia 2 (16)

Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2
 
WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...
WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...
WTA2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recome...
 
WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...
WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...
WTA 2012 - Proposta de Modelo Adaptativo para Geração de Contextos na Recom...
 
Sistemas de Recomendação na web
Sistemas de Recomendação na webSistemas de Recomendação na web
Sistemas de Recomendação na web
 
Tchêlinux Porto Alegre 2013 - Sistemas de Recomendação
Tchêlinux  Porto Alegre 2013 - Sistemas de RecomendaçãoTchêlinux  Porto Alegre 2013 - Sistemas de Recomendação
Tchêlinux Porto Alegre 2013 - Sistemas de Recomendação
 
Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1
 
Personalização: O que é?
Personalização: O que é?Personalização: O que é?
Personalização: O que é?
 
Palestra unesp 2012
Palestra unesp 2012Palestra unesp 2012
Palestra unesp 2012
 
Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...
Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...
Um Estudo de Caso para verificar a suscetibilidade a incentivos de avaliadore...
 
Talk conexao
Talk conexaoTalk conexao
Talk conexao
 
Collaborative filtering
Collaborative filteringCollaborative filtering
Collaborative filtering
 
Oferecendo soluções mais assertivas para os usuários de um serviço combinan...
Oferecendo soluções mais assertivas  para os usuários de um serviço  combinan...Oferecendo soluções mais assertivas  para os usuários de um serviço  combinan...
Oferecendo soluções mais assertivas para os usuários de um serviço combinan...
 
Choose your weapon - TDC Floripa 2019
Choose your weapon - TDC Floripa 2019Choose your weapon - TDC Floripa 2019
Choose your weapon - TDC Floripa 2019
 
SC-cap15-recomendacao-apresentacao.ppt
SC-cap15-recomendacao-apresentacao.pptSC-cap15-recomendacao-apresentacao.ppt
SC-cap15-recomendacao-apresentacao.ppt
 
Minerando dados com Python
Minerando dados com PythonMinerando dados com Python
Minerando dados com Python
 
[Jose Ahirton Lopes] Algoritmos de Recomendacao
[Jose Ahirton Lopes] Algoritmos de Recomendacao[Jose Ahirton Lopes] Algoritmos de Recomendacao
[Jose Ahirton Lopes] Algoritmos de Recomendacao
 

Sistemas de Recomendação Usando Mahout - Dia 2

  • 1. Sistemas de Recomendação usando Mahout Alison Marczewski Álvaro Reis Neto Workshop de Mineração de Dados Julho de 2012
  • 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. 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. Pensando rápido... Por que não perguntamos ao usuário do que ele gosta?
  • 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. 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. 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. 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. 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. Explorando recomendação baseada em usuários ● Neighborhood
  • 11. Explorando recomendação baseada em usuários ● Explorando user neighborhoods ● Neighborhoods de tamanho fixo ● NearestNUserNeighborhood(100, similarity, model);
  • 12. Explorando recomendação baseada em usuários ● Explorando user neighborhoods ● Neighborhoods por limite de similaridade ● ThresholdUserNeighborhood(0.7, similarity, model)
  • 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. 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
  • 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. 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?
  • 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)
  • 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. 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Análise de dados ● Análise de dados - limbiseti