Você está na página 1de 10

Estudo sobre a eficácia de algoritmos de classificação para

recomendação de livros
Gabrielle Serra Mazon, Marina Amaro Farias da Silva, Thiago Mota Silva, Victor
de Melo Macena, Calebe de Paula Bianchini

Faculdade de Computação e Informática (FCI)


Universidade Presbiteriana Mackenzie — São Paulo — SP — Brasil

{31894941, 31895891, 31820956, 31894593}@mackenzista.com.br,


calebe.bianchini@mackenzie.br

Abstract. This work focuses on analyzing the efficiency of some of the main
classification algorithms applied to a book dataset, as well as in the data
preparation, to enable and potentialize the application of the algorithms for book
recommendation. Nowadays, there are many and varied algorithms for data
classification that, depending on several factors, generate different results, the
main one being the dataset. One of the difficulties encountered when
approaching a classification problem is which of these algorithms to use when
necessary to make a recommendation based on data. Thus, the objective of this
study is to identify which algorithm has the best performance, using the selected
dataset.

Resumo. Este trabalho foca na análise da eficiência de alguns dos principais


algoritmos de classificação quando aplicados a uma base de dados sobre livros,
assim como na preparação desses dados para possibilitar e potencializar a
aplicação dos algoritmos na recomendação de livros. Hoje em dia, existem
muitos e variados algoritmos para classificação de dados que, dependendo de
diversos fatores, geram diferentes resultados, sendo o principal, o dataset. Uma
das dificuldades encontradas ao abordar um problema de classificação é qual
desses algoritmos utilizar e de acordo com a necessidade fazer uma
recomendação a partir de dados. Com isso, o objetivo deste estudo é identificar
qual o algoritmo que possui o melhor desempenho, utilizando o dataset
selecionado.

1. Introdução
Diante do crescimento da exposição a diferentes tipos de informações, faz-se necessário
ajudar as pessoas a encontrarem aquilo que procuram e nesse contexto é que surgiram os
sistemas de recomendação. Estes, através de modelagem de dados e aplicação de
algoritmos tentam prever a nota (rating) ou preferência de um usuário a um determinado
item (SHAPIRA, 2011).
Em um problema de recomendação, as principais entidades são o usuário e o item,
onde o objetivo é recomendar os itens com melhores notas aos usuários (TAKAHASHI,
2021). Como exemplo, pode-se citar um indivíduo que deseja comprar um livro. Nesse
caso, os algoritmos podem ser aplicados para analisar o comportamento do comprador e
recomendar um livro que melhor se adeque ao seu perfil, aumentando a probabilidade da
finalização da compra.
De acordo com Gao (2019), os algoritmos comumente utilizados em sistemas de
recomendação de livros podem ser divididos em três categorias: algoritmos de
recomendação baseados em regras de associação; algoritmos de recomendação com base
no conteúdo; e algoritmos de recomendação por filtragem colaborativa, o qual utiliza
usuários com perfis similares para realizar a recomendação. Dentro de tais categorias,
existe uma variedade muito grande de algoritmos, dificultando a escolha pelo mais eficaz
e eficiente a ser aplicado, já que cada um gera diferentes resultados.
No trabalho de Takahashi (2021) o algoritmo baseado em filtragem colaborativa foi
o que apresentou os melhores resultados e, por essa razão, este estudo irá comparar três
algoritmos distintos dessa categoria para identificar qual possui o melhor desempenho ao
aplicá-los em um dataset de livros. Nos capítulos seguintes serão apresentados o
referencial teórico utilizado para a realização deste trabalho, o processo de seleção dos
algoritmos, a preparação da base de dados, os experimentos realizados, quais foram os
resultados obtidos e, por fim, as considerações finais.

2. Referencial Teórico
Para conduzir o embasamento conceitual deste trabalho, os temas que norteiam este
estudo foram escolhidos para síntese em referencial teórico: preparação de dados, eficácia
de algoritmos de classificação para recomendação de livros e algoritmos de
recomendação por filtragem colaborativa.

2.1 Algoritmos de recomendação


Normalmente, os algoritmos de recomendação geram uma pontuação para escolha de
itens, ou uma lista do N mais recomendados ou com maior pontuação (FREIRE, 2020).
Os principais tipos são modelos de filtragem colaborativa e modelos baseados em
conteúdo, onde se diferem pelo tipo de dado envolvido. Os modelos de filtragem
colaborativa utilizam de avaliações/pontuações dos usuários aos itens. Por outro lado, os
modelos baseados em conteúdo utilizam apenas recursos característicos dos itens, bem
como o preço de um produto ou sua cor (MINDS, 2020).
Tratando-se de algoritmos de recomendação, é comum se referir a USER como
quem recebe as recomendações e ITEM como um dos objetos a serem recomendados a
um usuário específico (FREIRE, 2020). Dessa nomenclatura, derivam-se os termos que
denotam os tipos de abordagem utilizadas pelos algoritmos colaborativos para
recomendação, sendo elas, user-user, item-item e user-item. No método de recomendação
user-user, a recomendação é feita por semelhança entre usuários, utilizando os dados de
avaliações dos usuários para calcular a similaridade (JIAO, 2020). Este método de
recomendação é um dos mais utilizados, senão o mais utilizado, para datasets que tenham
avaliações de users para items (HERLOCKER, 2004).
Sobre recomendação de livros, o trabalho de (GAO, 2019) lista as vantagens e
desvantagens de 3 tipos de algoritmos: baseados em regras, baseado em conteúdo e
filtragem colaborativa. No fim, o algoritmo escolhido para realização do experimento é o
de filtragem colaborativa, com o motivo de ser mais simples e trabalhar mais facilmente
com objetos mais complexos.

2.2 Singular Value Decomposition (SVD) e Non-negative Matrix Factorization


(NMF)
Jiao (2020) apresenta o algoritmo de recomendação baseado em Singular Value
Decomposition (SVD). Ele é amplamente utilizado por seu bom desempenho de previsão,
no entanto, com o rápido aumento de dados em sociedades inteligentes, o baixo
desempenho computacional do algoritmo de recomendação SVD torna-se uma
desvantagem principal, pois leva mais tempo para otimizar a função objetivo durante a
construção do modelo de predição. Entretanto, no trabalho de Filho (2012) é citado que a
aplicação direta de algoritmos de SVD aos problemas de filtragem colaborativa não
garantem boa eficácia, sendo necessários diversos ajustes para desenvolver bons
algoritmos. Além do problema de eficácia gerado por estas ferramentas, as
implementações disponíveis destas não conseguem processar um grande volume de dados
e são, portanto, inadequadas para o uso em filtragem colaborativa de grandes bases de
dados. O NMF (Non-negative Matrix Factorization) é outro algoritmo com arquitetura
parecida com a do SVD (fatoração de Matriz) (ZHANG, 2012).

2.3 K-Nearest Neighbors


Neste trabalho de Oliveira (2008), foi feito um estudo que avalia o desempenho do
algoritmo K-Nearest Neighbors (KNN) quando submetido a classificação de uma base de
dados com uma grande quantidade de categorias, e foi constatado que ele pode ser
utilizado para a resolução de tal problema quando aplicado a uma base de dados com mais
de 1000 categorias possíveis de serem associadas a cada um dos documentos da base de
dados.
Como continuação do presente trabalho é possível fazer a comparação entre o
algoritmo Multi-Label k-Nearest Neighbors (ML-KNN) e o KNN, e do algoritmo ML-
KNN com outros algoritmos de classificação.
No entanto, apesar do ML-KNN suportar uma grande quantia de categorias, um
estudo que também é muito pertinente diz respeito a incorporar ao ML-KNN algumas
técnicas para viabilizar a classificação de uma base de dados independentemente do
número de documentos de que ela seja composta.

3. Preparação do experimento
Para definir o dataset a ser trabalhado foram definidos alguns requisitos:
- Possuir riqueza de dados.
- Qualidade de dados (Consistência, completude, estruturação).
- Se encaixar na temática de livros para que o algoritmo pudesse recomendá-los aos
leitores.
Levando em conta os requisitos mencionados, o dataset escolhido foi o goodbooks
10k1, com mais de 900 mil avaliações de livros e 10 mil livros. Para fim de recomendação,
os arquivos de dados utilizados do dataset utilizados foram: books.csv e ratings.csv
O arquivo books.csv conta com os registros de livros, contendo os detalhes de
cada um deles, bem como o id, nome, quantidade e média de avaliações, entre outras
informações que não foram aplicadas neste projeto. Das informações utilizadas, ficaram
as colunas: book_id, title e average_rating, demonstradas na Figura 1.
Já o arquivo ratings.csv possui os registros de avaliação, contendo três colunas:
user_id (identificador único do usuário), book_id (identificador do livro registrado no
books.csv) e rating (avaliação dada ao livro pelo usuário). Na imagem a seguir estão as
colunas utilizadas no arquivo ratings.csv. Nela podemos ver o intervalo de valores das
colunas. A exemplo a coluna rating, que possui um intervalo de valores de 1 a 5.

1
https://www.kaggle.com/zygmunt/goodbooks-10k
Figura 1- https://www.kaggle.com/zygmunt/goodbooks-10k?select=books.csv

Figura 2- https://www.kaggle.com/zygmunt/goodbooks-10k?select=ratings.csv

3.1 Preparação de dados


A preparação de dados é o processo de limpeza e transformação de dados brutos antes do
processamento e análise. É uma etapa importante antes do processamento e
frequentemente envolve a reformatação de dados, fazendo correções nos dados e a
combinação de conjuntos de dados para enriquecê-los.
A preparação de dados costuma ser uma tarefa demorada, mas é essencial como
pré-requisito colocar os dados em contexto para transformá-los em insights e eliminar o
preconceito resultante da baixa qualidade dos dados.
Essa etapa é uma das mais complexas e envolve a remoção ou estimação de
valores faltantes, assim como a manipulação dos dados para que se adequem e tirem o
maior proveito dos algoritmos selecionados.
Nos dados inseridos no arquivo “ratings.csv”, foi verificado que em alguns casos,
há mais de uma avaliação do mesmo usuário para o mesmo livro, o que poderia
influenciar negativamente o resultado, já que o esperado é que um usuário avaliasse um
livro uma única vez. Sendo assim, foram removidas 2.278 avaliações duplicadas,
sobrando 979.478 avaliações para 53.424 usuários. A distribuição de avaliações por
usuário pode ser visualizada na Figura 3.

Figura 3 – relação da quantidade de avaliações por usuário.

Para garantir um melhor resultado na aplicação dos algoritmos de recomendação


colaborativos, foram removidos os usuários que avaliaram menos que 5 livros, garantindo
um número mínimo de avaliações por usuário. Foram removidos 17.765 usuários que não
atenderam essa condição, sobrando 35.659 usuários com 5 ou mais livros avaliados e
930.605 avaliações no total.
Para o arquivo contendo os livros (books.csv), foi realizado um cálculo do “peso”
das avaliações de cada livro utilizando a função demonstrada na Figura 4. Esse cálculo é
realizado com uma função que leva em conta a quantidade de avaliações e a média de
todas as avaliações para definir uma pontuação, que é utilizada para ordenação das
recomendações. Em resumo, essa pontuação garante que livros mais bem avaliados,
porém pouco populares, não fiquem à frente de livros populares, mas com média de
avaliações um pouco menor.
Figura 4 - função utilizada para calcular a pontuação dos livros2

4. Experimentos
Após a preparação de dados, os experimentos foram conduzidos em fases de seleção,
aplicação e comparação entre algoritmos, e assim definir de forma organizada e sucinta
o cenário da eficácia da temática em questão.

4.1 Seleção dos Algoritmos


Para selecionar os algoritmos de classificação, os fatores mais importantes foram: ser
aplicável ao dataset selecionado e estar entre os mais comumente utilizados pela
comunidade de ciência de dados. Sendo assim, os algoritmos escolhidos foram: KNN (K-
Nearest Neighbors), SVD (Singular Value Decomposition) e NMF (Non-negative Matrix
Factorization).
Como citado por WANG (2019) o KNN foi um dos primeiros algoritmos a ser
utilizado em sistemas de recomendação e ainda se mantém popular. A lógica por trás do
KNN é: primeiro, calcular a similaridade entre os itens, para então selecionar os K
(parâmetro do algoritmo) itens com a maior similaridade do item alvo. Assim, uma
pontuação preditiva é obtida ao encontrar os k-vizinhos mais próximos do item utilizando
uma combinação linear desses vizinhos.
O SVD é uma técnica comum de MF (sigla para fatoração de matriz em inglês)
que pode efetivamente extrair uma matriz de autovalor, revelar a estrutura interna de uma
matriz e evitar dispersão excessiva dos dados até um certo nível (JIAO, 2020). Esta
técnica foi utilizada nos algoritmos que estiveram no topo de uma competição de
algoritmos de filtragem colaborativa organizada pela Netflix nos anos de 2007 a 2009.
Por fim, como MF está se tornando mais popular recentemente por superar a
performance de recomendação de outros modelos em certos cenários (KOREN, 2009), o
último algoritmo selecionado também faz uso de MF para competir com o SVD. De
acordo com NG (2020), os algoritmos mais comuns de MF incluem, além do SVD, o
NMF, que foi escolhido para ser aplicado neste projeto.

2
https://math.stackexchange.com/questions/169032/understanding-the-imdb-weighted-rating-function-
forusage-on-my-own-website
4.2 Aplicação dos Algoritmos
Com os dados já preparados, os algoritmos de recomendação foram implementados
utilizando a linguagem de programação Python com o auxílio da biblioteca de algoritmos
de recomendação Surprise3.

4.3 Comparação entre algoritmos


No trabalho de Herlocker (2004), são utilizados alguns passos para a análise de algoritmos
de recomendação, dentre eles a seleção de datasets, a definição de métricas de medição
de acurácia, entre tantas outras, pois ao analisar o desempenho de algoritmos, não é
somente a acurácia que pode ser levada em conta.
Portanto, é necessário definir quais serão as métricas utilizadas para a comparação
dos algoritmos, sendo elas:
• Taxa de acerto: sem dúvidas o fator mais importante, pois um resultado que não
atenda a acurácia mínima exigida anula todos os outros pontos positivos que um
algoritmo de recomendação possa ter. Para identificar os acertos dos algoritmos,
um dos livros mais bem avaliados dos usuários será removido antes do
treinamento, e caso este livro apareça nas recomendações, é considerado um
acerto;
• Predição: além da avaliação da acurácia do algoritmo, outro ponto importante a
ser comparado é a capacidade dos algoritmos de predizer as avaliações dos
usuários. Essa métrica será avaliada através da comparação dos valores preditos
para as avaliações dos usuários;
• Tempo: desde a invenção dos computadores, os programas são escritos para
reduzir o tempo de realização de um trabalho. Portanto, um algoritmo que realiza
seu propósito mais rapidamente que o outro pode ser considerado melhor.

5. Resultados
Ao aplicar os algoritmos no dataset selecionado, foi possível obter as métricas
representadas nas figuras a seguir.
A Figura 5, demonstra o gráfico de tempo de treinamento, em segundos, dos
algoritmos KNN, SVD e NMF. É possível identificar que o NMF obteve uma maior
agilidade de treinamento, com apenas 3,3 segundos de treinamento, seguido do SVD, com
4,2 segundos, enquanto o KNN foi o mais demorado com 14,3 segundos.
Na figura 6 podemos analisar as métricas MAE (Mean Absolute Error) e RMSE
(Root Mean Squared Error) que representam, respectivamente, a média da diferença
absoluta dos valores preditos dos valores reais e a raiz quadrática da diferença entre eles.
Estas métricas foram utilizadas para avaliar a precisão dos algoritmos em predizer a
avaliação que um leitor daria a um livro. A MAE também foi utilizada para calcular a
nota de corte dos livros considerados para o teste de taxa de acerto.
Como a RMSE possui uma sensibilidade maior a erros mais distantes do valor
original, podemos comparar os algoritmos que tiveram predições mais inconsistentes por
apresentar valores discrepantes do real ao compará-la com a MAE.
A Figura 7 apresenta os resultados do teste de taxa de acerto, nela é perceptível
que o SVD se destacou novamente possuindo uma maior taxa de acerto em praticamente
toda a bateria de testes, em seguida do NMF que apresentou um desempenho mediano se
comparado ao SVD, e por fim o KNN com a pior performance e acurácia dos três.

3
http://surpriselib.com/
Também é perceptível que quanto maior a quantidade de recomendações considerada,
maior a taxa de acerto dos algoritmos.

Figura 5 – tempo em segundos que foi necessário para o algoritmo gerar um


modelo

Figura 6 – valores para as métricas Mean Absolute Error (MAE) e Root Mean
Squared Error (RMSE)

6. Considerações finais
Ao analisar os resultados obtidos, o algoritmo com menor tempo de treinamento foi o
NMF, seguido pelo SVD e, por último, o KNN. Em relação à precisão dos algoritmos ao
predizer a nota que um usuário daria a um livro, o SVD apresentou o melhor resultado,
apesar de o NMF ter se destacado também com uma taxa de precisão bem próxima.
Quanto à taxa de acerto, o algoritmo com melhor desempenho foi o SVD, com
taxa de acerto de até 70% quando aplicado no contexto de usuários com mais de 80
avaliações de livros. O NMF tem um desempenho próximo ao SVD em usuários com
poucas avaliações, mas se distancia conforme o número de avaliações aumenta. Já o KNN
começa com a taxa de acerto próxima de 0, se recupera quando a quantidade de avaliações
é mais alta, mas ainda tem um desempenho inferior aos outros dois algoritmos.

Figura 7 – Taxa de acerto de cada algoritmo utilizando como critério para um


acerto a recomendação de um livro bem avaliado pelo usuário que foi deixado
de fora do treinamento

Sendo assim, os algoritmos que utilizam a técnica de fatoração de matriz, no caso,


o NMF e SVD, apresentaram um melhor desempenho geral, enquanto o KNN obteve um
resultado inferior, somente superando por pouco NMF na precisão geral da predição de
avaliações. Portanto, é possível afirmar que os algoritmos que utilizam essa técnica
apresentam um bom desempenho em classificação colaborativa e garantem melhores
resultados que o KNN no dataset goodbooks-10k.

Referências
FREIRE, Mauricio Noris; DE CASTRO, Leandro Nunes. A Framework for e-
Recruitment Recommender Systems. In: International Conference on Artificial
Intelligence and Soft Computing. Springer, Cham, 2020. p. 165-175.
GAO, Yuhe. Research on book personalized recommendation method based on
collaborative filtering algorithm. In: IOP Conference Series: Earth and Environmental
Science. IOP Publishing, 2019. p. 052099.
GOODBOOKS-10K, Kaggle. Ten Thousand Books, One Million Ratings.
Disponível em: Https://Www.Kaggle.Com/Zygmunt/Goodbooks- 10k. /. Acesso em: 08
nov. 2021.
HERRLOCKER, J.; KONSTAN, J. Evaluating collaborative filtering
recommender systems. ACM Trans. Inf. Syst, v. 22, n. 1, p. 5-53, 2004.
HUG, Nicolas. Surprise: a python scikit for recommender systems. A Python
Scikit For Recommender Systems. Disponível em: http://surpriselib.com/. Acesso em: 06
dez. 2021.
JIAO, Jiangli. A novel learning rate function and its application on the SVD++
recommendation algorithm. IEEE Access, v. 8, p. 14112-14122, 2019
KOREN, Yehuda; BELL, Robert; VOLINSKY, Chris. Matrix factorization
techniques for recommender systems. Computer, v. 42, n. 8, p. 30-37, 2009.
MINDS, C. What are today’s top recommendation engine algorithms? Disponível
em:https://itnext.io/what-are-the-top-recommendation-engine-algorithms-used-
nowadays-646f588ce639. /. Acesso em: 08 nov. 2021.
NG, Yiu-Kai. CBRec: a book recommendation system for children using the
matrix factorisation and content-based filtering approaches. International Journal of
Business Intelligence and Data Mining, v. 16, n. 2, p. 129-149, 2020.
OLIVEIRA, Elias. Avaliação do desempenho do algoritmo ML-kNN em
classificação de textos livres de atividades econômicas. In: Companion Proceedings of
the XIV Brazilian Symposium on Multimedia and the Web. 2008. p. 384-386.
PEREIRA FILHO, João Bosco A. Um algoritmo de filtragem colaborativa
baseado em SVD. 2012.
RICCI, Francesco; ROKACH, Lior; SHAPIRA, Bracha. Introduction to
recommender systems handbook. In: Recommender systems handbook. Springer,
Boston, MA, 2011. p. 1-35.
TAKAHASHI, Marcos M.; HIRATA JR, Roberto. Estudo comparativo de
Algoritmos de Recomendação. Universidade de São Paulo, 2015.
WANG, Juan; YUE-XIN, Lan; CHUN-YING, Wu. Survey of recommendation
based on collaborative filtering. In: Journal of Physics: Conference Series. IOP
Publishing, 2019.
ZHANG, Zhong-Yuan. Nonnegative matrix factorization: models, algorithms and
applications. Data mining: foundations and intelligent paradigms, p. 99-134, 2012.

Você também pode gostar