Com uma grande quantidade de informações e uma extensa variedade de produtos e serviços, cada vez mais nos deparamos com dificuldades para escolher entre as alternativas apresentadas. Frente a este cenário, geralmente confiamos nas recomendações que são passadas por outras pessoas e tomamos como base sua satisfação em relação àquilo que estão nos recomendando. Essas recomendações acontecem de muitas formas, normalmente através de jornais, revistas, revisores de filmes e livros, entre outros.
O objetivo de um sistema de recomendação é melhorar a capacidade do processo de indicação, muito comum na relação social entre seres humanos. Nesses sistemas, os usuários fornecem as recomendações como entrada e o sistema as direciona para os indivíduos potencialmente interessados; como acontece no Netflix, quando classificamos um filme indicando o número de estrelas. Um dos grandes desafios desse tipo de sistema é realizar o casamento correto entre as pessoas que estão recomendando e as pessoas que estão recebendo a recomendação. Esse relacionamento é conhecido como relacionamento de interesse. Entre as principais técnicas para recomendação de conteúdo, podemos destacar a filtragem demográfica e a filtragem colaborativa.
A filtragem demográfica utiliza a descrição de um indivíduo para aprender o relacionamento entre um item em particular e o tipo de indivíduo que poderia se interessar por ele. Nessa abordagem, os dados pessoais do usuário são requisitados através de formulários e combinados com o seu perfil de consumo, permitindo estabelecer um relacionamento de interesse para cada tipo de indivíduo. Já na filtragem colaborativa, esse relacionamento é determinado através do comportamento comum de diferentes usuários, ou seja, a filtragem colaborativa considera que existe um perfil de consumo comum entre as pessoas que gostam das mesmas coisas. Essa abordagem é vantajosa porque não precisa coletar mais informações sobre o usuário, além das informações sobre o seu comportamento de consumo no próprio portal.
É muito comum um usuário gostar de diversos itens do mesmo portal, e ao mapear todos esses interesses, geramos um grande volume de dados. Isso acontece porque os portais oferecem uma grande quantidade de produtos, e cada produto visitado precisa gerar um log de acesso. Lidar com esse volume de dados nos leva a um cenário de Big Data, quando muitas vezes temos a necessidade de realizar processamento paralelo e distribuído. Isso se torna ainda mais importante quando aplicamos algoritmos de machine learning, que normalmente são caros do ponto de vista computacional. Felizmente, para isso, podemos contar com a ajuda do Apache Mahout e do Hadoop.
O Apache Mahout é uma biblioteca de machine learning de código aberto cujos principais objetivos são: processar recomendações, classificações e agrupamentos. Mantido pela Apache Software Foundation, o Mahout nasceu em 2008 como um subprojeto do Apache Lucene, outra ferramenta de código aberto destinada a problemas de busca e recuperação de informações. Em 2010 o Apache Mahout se tornou um projeto de software independente, que visa escalabilidade e eficiência. Por isso compatibilizou seus algoritmos com o Hadoop.
O Hadoop, por sua vez, é uma ferramenta de código aberto que implementa o paradigma Map-Reduce, introduzido pelo Google e criado para realizar processamento paralelo e distribuído. Assim, o Hadoop é capaz de processar grandes conjuntos de dados dividindo uma tarefa em pequenas partes e processando essas partes em máquinas distintas.
Este artigo mostra como utilizar o Apache Mahout e o Hadoop para construir um recomendador de vídeos inteligente e escalável. Em nosso experimento utilizaremos a base de dados aberta MovieLens, que é provida por um grupo de estudo especialista em recomendação de conteúdo da Universidade de Minnesota.
Apache Mahout
Como visto anteriormente, o Mahout é uma biblioteca de machine learning mantida pela Apache Software Foundation cujo objetivo é facilitar o uso de algoritmos de aprendizado de máquina quando utilizados em sistemas de processamento distribuído. Quando falamos em machine learning ou aprendizado de máquina, em português, estamos nos referindo a um conjunto de técnicas que p ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.