Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Aluno do Programa de Pós Graduação em Informática da Universidade Federal da Paraı́ba
fabriciosoares@cc.ci.ufpb.br
1. Introdução
Este artigo discute a implementação e avaliação de um Sistema de Recomendação de Filmes
que utiliza dados disponibilizados pelo MovieLens e abordagens de Filtragem Colaborativa
oferecidas por bibliotecas internas da linguagem R. Os dados do conjunto em questão são sepa-
rados em usuários e filmes, o que os tornam ideais para oferecer recomendações baseadas nos
usuários, método conhecido como Filtragem Colaborativa, que tende a oferecer recomendações
mais ricas ao não se basear apenas no histórico de um usuário, mas no histórico de todos os
usuários aos quais há dados disponı́veis.
O artigo segue a seguinte estrutura:
2. Sistemas de Recomendação
O crescimento na quantidade de informação digital disponı́vel e no número de acessos à Internet
criou um desafio em relação à sobrecarga de dados que dificulta acessos viáveis quanto a tempo
e itens de interesse de um indivı́duo ou grupo. Sistemas de buscas, como Google, Bing e
DuckDuckGo resolvem parcialmente esse problema ao priorizar conteúdos por interesses em
relação ao termo de busca ou histórico, mas qualquer aspecto de personalização - processo
ocorrido quando o sistema mapeia conteúdo disponı́vel aos interesses e preferências do usuário
é ausente [Konstan and Riedl 2012].
Este fato trouxe um aumento por demanda por Sistemas de Recomendação, que lidam
com o problema da sobrecarga de dados ao filtrar informações vitais de acordo com as pre-
ferências, interesses e comportamentos observados sobre o item. Sistemas de recomendação
possuem a habilidade de predizer se um usuário preferirá um item ou não baseado em
seu perfil ou comportamento [Pan and Li 2010]. Podem também ser enxergados como uma
estratégia de Tomada de Decisão para usuários sob ambientes informacionais complexos
[Rashid et al. 2002], assistindo e melhorando o processo social de utilizar recomendações
de outrém quando não há conhecimento pessoal suficiente ou experiência com alternativas
[Resnick and Varian 1997].
Apesar das origens dos Sistemas de Recomendação poderem ser traçadas a traba-
lhos em Ciência Cognitiva [Rich 1979], Teoria da Aproximação [Powell 1981], Recuperação
de Informação (Information Retrieval) [Salton 1989], e com conexões com a Ciência Ge-
rencial [Murthi and Sarkar 2003] e Modelagem de Escolhas de Consumo em Marketing
[Lilien et al. 1995], tais sistemas emergiram como uma área independente durante os anos 1990
quando pesquisadores começaram a focar-se em problemas de recomendação que se baseavam
explicitamente na estrutura de avaliações.
Na sua formulação mais comum, um problema de recomendação é redutı́vel a um pro-
blema de estimar avaliações para itens desconhecidos ou não vistos pelo usuário. Intuitiva-
mente, essa estimação é geralmente baseada em avaliações prévias do usuário em questão, ou
de outros usuários, em conjunto com alguma informação de relacionamento entre usuários e
itens. Ao conseguir estimar avaliações para itens ainda não avaliados, se pode recomendar ao
usuário os items de maior avaliação estimada.
Definição 1 Problema de Recomendação:
Seja C o conjunto de todos os usuários e S o conjunto de todos os possı́veis itens que
podem ser recomendados. Seja u a função utilidade que mede o benefı́cio utilitário do item s ao
usuário c, isto é, u : C × S → R, onde R é um conjunto ordenado. Para cada usuário c ∈ C,
a solução do Problema de Recomendação consiste em encontrar o item s0 ∈ S que maximize a
função u:
Onde C 0 denota o conjunto dos N usuários mais semelhantes ao usuário c e que avalia-
ram o item s (1 ≤ N ≤ |usuários|). Algumas funções de agregação incluem:
1 X
rc,s = rc0 ,s (4)
N c0 ∈C 0
sem(c, c0 ) × rc0 ,s
X
rc,s = k (5)
c0 ∈C 0
3. MovieLens
Os conjuntos de dados MovieLens [Harper and Konstan 2016], oferecidos desde 1998, descre-
vem preferências pessoais para filmes. Tais preferências aparecem na forma de tuplas no for-
mato <usuário, item, avaliação, data>, cada uma representando as preferências
de um usuário (numa avaliação de 0 a 5 estrelas) para um filme num momento em particular.
Esses dados foram capturados historicamente pelo Sistema de Recomendação que o próprio
serviço oferece 1 . Os conjuntos de dados são baixados com frequência (mais de 140.000 em
2014) e possuem grande números de referências na literatura (mais de 7500 resultados para
”movielens” no Google Scholar). Essa popularidade reflete (i) O crescimento de sistemas de
recomendação personalizados em que esse tipo de dado tem valor substancial ao permitir explo-
rar e validar ideias; (ii) a flexibilidade dos dados de avaliação presentes, que naturalmente são
adequados para o uso em sistemas de recomendação, mas também para disciplinas da chamada
ciência de dados como sumarização, identificação de padrões e visualização e (iii) a acessibi-
lidade de filmes como conteúdo que constitui um interesse comum e bem conhecido, simplifi-
cando a discussão da saı́da dos algoritmos.
Limitações Os conjuntos de dados do MovieLens incluem apenas dados de usuários
com pelo menos 20 avaliações, de forma que introduz um viés em relação a usuários ”bem-
sucedidos”. Isto é, usuários menos interessados no serviço (que não suficientemente utilizaram
a ele) não compõe parte importante dos dados. É possı́vel que esses usuários possuam dados
fundamentalmente diferentes dos outros usuários que permaneceram. Os conjuntos também
associam datas (timestamps) a cada avaliação, que não representam a data em que o conteúdo
foi consumido de fato pelo usuário, e usuários tendem a inserir um grande número de avaliações
em curtos perı́odos de tempo, especialmente nos primeiros minutos de uso do serviço, de forma
que as datas tem seu valor reduzido para diversas finalidades.
Obtenção Para efeitos de simplificação, o menor conjunto de dados MovieLens foi uti-
lizado (ml-latest-small.zip), que em 1 de junho 2019 possuia 100.000 avaliações para
9.000 filmes avaliados por 600 usuários, e foi atualizado pela última vez em setembro de 2018.
O arquivo em questão contem quatro arquivos: movies.csv, ratings.csv, links.csv
e tags.csv, mas apenas os dois primeiros foram utilizados. A tabela 1 ilustra algumas entra-
das do arquivo movies.csv para o ano 1995, e a tabela 2 ilustra algumas entradas referentes
a um usuário.
1
https://grouplens.org/
movieID title genres
1 Toy Story (1995) Adventure—Animation—Children—Comedy—Fantasy
2 Jumanji (1995) Adventure—Children—Fantasy
3 Grumpier Old Man (1995) Comedy—Romance
4 Waiting to Exhale (1995) Comedy—Drama—Romance
5 Father of the Bride Part II (1995) Comedy
Nome Descrição
IBCF Filtragem colaborativa baseada em itens.
Popular Filtragem baseada em popularidade dos itens.
realRatingMatrix Recomendações aleatórias.
ReRecommend ”Re-recomendar”itens melhor avaliados.
SVDF Método de Máximo Declive (gradient descent).
UBCF Filtragem colaborativa baseada em usuários.
x·y
cos(x, y) = (6)
||x|| · ||y||
• pearson: Utiliza o Coeficiente de Correlação de Pearson (Eq. 7) para medir a
semelhança linear. É obtida através do Método dos Minı́mos Quadrados (Eq. 8), e
valores próximos a 1 indicam correlações positivas entre as variáveis e próximos a −1
correções negativas, com 0 indicando ausência de correlação.
cov(X, Y )
ρ= (7)
σx σy
Pn
(xi − x)(yi − y)
r= qP i=1 (8)
n
i=1 (xi − x)2 (yi − y)2
• jaccard: O ı́ndice de Jaccard (Eq. 9) mede a semelhança entre duas amostras finitas
(neste caso, itens ou usuário). É obtido a partir da divisão do tamanho da interseção pelo
tamanho da união das amostras.
|A ∩ B| |A ∩ B|
J(A, B) = = . (9)
|A ∪ B| |A| + |B| − |A ∩ B|
Na medida cosine, o número de atributos em comum é dividido pelo total de atributos
possı́veis. Na medida jaccard, o número de atributos em comum é dividido pelo números de
atributos que existe em pelo menos um dos itens. jaccard tende a definir como alta a semelhança
de dois itens com vários atributos iguais, e cosine tende a ser melhor na identificação de itens
que mesmo com atributos diferentes, estejam espacialmente próximos [Zahrotun 2016].
As figuras 1 e 2 ilustram, utilizando tons de vermelho, recortes das matrizes de
semelhança entre usuários e filmes (respectivamente), onde cada linha/coluna representa um
usuário/filme, e cada célula representa um nı́vel de semelhança. Quanto mais vermelha a célula
está, mais semelhantes são dois usuários/filmes.
acabaram sendo removidos por não atingirem esse limiar. A figura 5 mostra a distribuição das
avaliações após essa remoção, estando agora as avaliações entre 2, 16 e 4, 45. Como esperado,
os extremos foram removidos. A maior avaliação agora está ao redor de 4.
Para visualizar a matriz de avaliações, um heat map (Figura 6) foi construı́do, onde cores
representam avaliações. Cada linha da matriz corresponde a um usuário, e cada coluna a um
filme, com cada célula da matriz indicando uma avaliação.
A Figura 7 mostra um recorte das primeiras linhas e colunas do heatmap, onde é possı́vel
visualizar que alguns usuários avaliaram mais filmes que outros. A figura 8 mostra outro heat-
map, dessa vez mostrando os usuários e itens mais relevantes, isto é, os usuários que assistiram
muitos filmes e os filmes assistidos por muitos usuários.
8. Metodologia
Estas informações são aqui modeladas como uma matriz em que linhas correspondem a usuários
e colunas correspondem a itens.
O algoritmo extrairá os filmes avaliados por cada usuário, e para cada um dos filmes
identificará seus itens semelhantes de acordo com a matriz de semelhanças. Ao final, é cons-
truı́do um ranking baseado nesses itens, extraindo informações relacionadas ao item: avaliações
do usuário (utilizado como peso) a nı́vel de semelhança. Cada peso é multiplicado com seu nı́vel
de semelhança, e os resultados desse cálculo para cada item são somados.
O modelo IBCF da biblioteca recommenderlab é parametrizável de diferentes maneiras.
É possı́vel utilizar um valor k para indicar o número de itens a terem sua semelhança calcu-
lada entre si no primeiro passo. Então, para cada item, o algoritmo identifica os k itens mais
semelhantes e armazena o resultado. O parâmetro method indica a função de semelhança
(cosine, pearson, jacard). A figura 13 contém um gráfico com a distribuição de ele-
mentos por coluna utilizando method = cosine, e mostra que há poucos filmes que são
semelhantes a muitos outros.
Aplicando o modelo O algoritmo extrai, para cada usuário, seus filmes avaliados. Para
cada filme, ele identifica todos os itens semelhantes, iniciando a partir da matriz de semelhanças.
Então, o algoritmo gera um ranking de semelhança para os itens. Para o item i, isto consiste
em:
• Extrair a avaliação do usuário de cada item in associado com o item i. Este valor é
utilizado como peso.
• Extrai a semelhança do item in com cada um dos itens associados com o i.
• Multiplicar cada peso com a sua semelhança.
• Somar os resultados.
O modelo IBCF recomenda itens com base na matriz de semelhança, sendo considerado
do tipo Eager-Learning [Hendrickx and Van Den Bosch 2005], isto é, uma vez construı́do, o
modelo é independente das entradas e capaz de generalizar além dos dados de entrada com o
mesmo custo desses dados. Para cada item, o modelo armazena os k mais semelhantes, de forma
que a quantidade de informação é pequena quando o modelo é construı́do, mesmo utilizando
grandes quantidades de dados.
• Medir quão semelhante o novo usuário é em relação aos outros. Assim como o IBCF, o
UBCF utiliza as medidas baseadas em correlação e cosseno.
• Identificar os usuários mais semelhantes utilizando:
– k vizinhos mais próximos
– Usuários com semelhança acima de um dado limiar
• Avaliar os filmes avaliados pelos usuários semelhantes. A avaliação é a avaliação média
entre usuários semelhantes e as abordagens são:
– Avaliação média com pesos, utilizando as semelhanças entre os pesos.
– Utilizar os filmes melhor avaliados.
9. Avaliação
Os dados serão divididos em conjunto de treinamento e conjunto de testes. 3 métodos podem
ser utilizados para realizar a divisão:
• Divisão de Pareto - Divide o conjunto de dados em 80% para treinamento e 20% para
testes. Para cada usuário no conjunto de testes, são definidos quantos itens utilizar para
gerar recomendações. Para tal, é verificado o numero mı́nimo de itens avaliados por
usuários para garantir que não haverão usuários sem itens a testar.
• Reamostragem (boostrapping) - É feita uma amostragem com substituição, de forma
que o mesmo usuário pode ser amostrado mais de uma vez.
• Validaçao cruzada - Divide os dados em partições e realiza testes utilizando uma da
partição como conjunto de testes, repetindo para outras partições obtendo uma acurácia
média ao final.
Figura 14. Distribuição do número de elementos por coluna para o modelo de
recomendação UBCF.
Neste trabalho utilizou-se a validação cruzada com 4 partições (4-fold), cada um com
tamanho 315. A tabela 4 mostra o resultado das medidas de acurácia calculados para o modelo
IBCF. A imagem 15 mostra a distribuição da medida RMSE por usuário para esse modelo.
A biblioteca recommenderlab oferece internamente um mecanismo de avaliação
baseado em comparações, que também possibilita cálcular métricas. A função evaluate()
avalia a performance do recomendador dependendo do número n de itens a serem recomenda-
dos para o usuário. Foi utilizada a sequência de 10 a 100, com intervalos de 10, então n =
seq(10, 100, 10).
Comparação Para comparar diferentes modelos, os diferentes cenários foram definidos:
• Random (usado como baseline)
• IBCF, cosine
• IBCF, pearson
• UBCF, cosine
• UBCF, pearson
As curvas ROC e precisão-recall são exibidas nas Figuras 16 e 17 respectivamente. Se
concluiu que se um percentual pequeno de filmes avaliados é recomendado, a precisão diminui.
Figura 15. Distribuição da medida RMSE por usuário para o modelo IBCF.
Por outro lado, quanto maior o percentual de filmes avaliados, maior o recall. O cenário UBCF,
cosine obteve a melhor performance, pois possui a maior área abaixo da curva ROC.
Como o algoritmo IBCF utiliza os k itens mais próximos, foram testados diferentes
valores para k, no intervalo entre 5 e 40. Com base na curva ROC exibida na figura 18, o valor
de k adequado é 10, pois apresentam maior área abaixo da curva, mas ao mesmo tempo ele não
apresenta valores altos para TPR, significando que mesmo para valores de n altos, o algoritmo
não será capaz de recomendar um percentual suficiente de itens ao usuário. IBCF com k = 5
recomenda apenas alguns alguns itens, portanto não é suficiente. Com base na gráfico precision-
recall da Figura 19, k = 10 obteve os melhores resultados de recall, mas k = 5 obteve melhor
precisão.
Figura 19. Curva Precisão-Recall
Figura 18. Curva ROC para IBCF,
para IBCF, diferentes valores de
diferentes valores de k.
k.
10. Conclusão
Neste projeto foi desenvolvido e avaliado um sistema de recomendação baseado em filtragem
colaborativa para recomendar filmes, utilizando o conjunto de dados MovieLens e ferramentas
da linguagem R.
A partir da discussão deste sistema e de sua avaliação, é possı́vel concluir que sistemas
baseados em filtragem colaborativa oferecem recomendações que conseguem complementar
itens que o usuário já interagiu (neste caso, avaliou). Este tipo de recomendação é especiali-
zado pois oferece mais que simples substitutos para um filme que já foi assistido. No entanto,
este tipo de sistema é baseado em memória, e utiliza todos os dados de usuários para criar
recomendações. Comparar correlações em pares para todo e qualquer usuário num conjunto de
dados é um problema difı́cil de escalar, a termos de performance. Se há milhões de usuários,
a computação pode demorar muito. Possı́veis maneiras de contornar este problema envolvem
implementar alguma forma de redução dimensional, tal como a Análise de Componentes Prin-
cipais (PCA)[Jolliffe 2011]. Outro problema envolve o fato de esse tipo de abordagem utilizar
suposições baseadas na experiência prévia dos usuários para oferecer as recomendações. Por
consequência, se supõe que as preferências do usuário se mantém ao longo do tempo, o que
nem sempre é verdade; mas ao mesmo tempo o custo de reconstruir o modelo de forma online
pode não ser viável.
Referências
Baeza-Yates, R., Ribeiro-Neto, B., et al. (1999). Modern information retrieval, volume 463.
ACM press New York.
Balabanović, M. and Shoham, Y. (1997). Fab: content-based, collaborative recommendation.
Communications of the ACM, 40(3):66–72.
Belkin, N. J. and Croft, W. B. (1992). Information filtering and information retrieval: Two sides
of the same coin? Communications of the ACM, 35(12):29–38.
Breese, J. S., Heckerman, D., and Kadie, C. (1998). Empirical analysis of predictive algorithms
for collaborative filtering. In Proceedings of the Fourteenth conference on Uncertainty in
artificial intelligence, pages 43–52. Morgan Kaufmann Publishers Inc.
Goldberg, D., Nichols, D., Oki, B. M., and Terry, D. (1992). Using collaborative filtering to
weave an information tapestry. Communications of the ACM, 35(12):61–70.
Hahsler, M. (2011). recommenderlab: A framework for developing and testing recommendation
algorithms. Technical report.
Harper, F. M. and Konstan, J. A. (2016). The movielens datasets: History and context. Acm
transactions on interactive intelligent systems (tiis), 5(4):19.
Hendrickx, I. and Van Den Bosch, A. (2005). Hybrid algorithms with instance-based classifi-
cation. In European Conference on Machine Learning, pages 158–169. Springer.
Joaquin, D. and Naohiro, I. (1999). Memory-based weighted-majority prediction for recom-
mender systems. Research and Development in Information Retrieval.
Jolliffe, I. (2011). Principal component analysis. Springer.
Konstan, J. A. and Riedl, J. (2012). Recommender systems: from algorithms to user experience.
User modeling and user-adapted interaction, 22(1-2):101–123.
Lilien, G. L., Kotler, P., and Moorthy, K. S. (1995). Marketing models. Prentice Hall.
Murthi, B. and Sarkar, S. (2003). The role of the management sciences in research on persona-
lization. Management Science, 49(10):1344–1362.
Nakamura, A. and Abe, N. (1998). Collaborative filtering using weighted majority prediction
algorithms. In ICML, volume 98, pages 395–403.
Pan, C. and Li, W. (2010). Research paper recommendation with topic analysis. In Computer
Design and Applications (ICCDA), 2010 International Conference on, volume 4, pages V4–
264. IEEE.
Park, Y.-J. and Tuzhilin, A. (2008). The long tail of recommender systems and how to leverage
it. In Proceedings of the 2008 ACM conference on Recommender systems, pages 11–18.
ACM.
Pazzani, M. and Billsus, D. (1997). Learning and revising user profiles: The identification of
interesting web sites. Machine learning, 27(3):313–331.
Pazzani, M. J., Muramatsu, J., Billsus, D., et al. (1996). Syskill & webert: Identifying interes-
ting web sites. In AAAI/IAAI, Vol. 1, pages 54–61.
Powell, M. J. D. (1981). Approximation theory and methods. Cambridge university press.
Rashid, A. M., Albert, I., Cosley, D., Lam, S. K., McNee, S. M., Konstan, J. A., and Riedl, J.
(2002). Getting to know you: learning new user preferences in recommender systems. In
Proceedings of the 7th international conference on Intelligent user interfaces, pages 127–
134. ACM.
Resnick, P., Iacovou, N., Suchak, M., Bergstrom, P., and Riedl, J. (1994). Grouplens: an
open architecture for collaborative filtering of netnews. In Proceedings of the 1994 ACM
conference on Computer supported cooperative work, pages 175–186. ACM.
Resnick, P. and Varian, H. R. (1997). Recommender systems. Communications of the ACM,
40(3):56–58.
Rich, E. (1979). User modeling via stereotypes. Cognitive science, 3(4):329–354.
Rocchio, J. J. (1971). Relevance feedback in information retrieval. The SMART retrieval system:
experiments in automatic document processing, pages 313–323.
Salton, G. (1989). Automatic text processing: The transformation, analysis, and retrieval of.
Reading: Addison-Wesley.
Shardanand, U. and Maes, P. (1995). Social information filtering: algorithms for automating
“word of mouth”. In Proceedings of the SIGCHI conference on Human factors in computing
systems, pages 210–217. ACM Press/Addison-Wesley Publishing Co.
Zahrotun, L. (2016). Comparison jaccard similarity, cosine similarity and combined both of the
data clustering with shared nearest neighbor method. Computer Engineering and Applicati-
ons Journal, 5(1):11–18.