Dextra

Recomendação de Conteúdo

Por: everton.gago 01/12/2016

Quais são os desafios para criar um recomendador de conteúdo escalável?

Os cenários de BigData são conhecidos pela necessidade de processar grandes volumes de dados, neste artigo apresentaremos um caso específico para recomendação de conteúdo. Cada vez mais os cenários de recomendação de conteúdo são explorados por portais de conteúdo e e-commerce, possibilitando a identificação automática das preferências dos usuários com o objetivo de sugerir novos itens ou conteúdos de seu interesse. Neste artigo, utilizaremos a API de machine learning da Apache – Apache Mahout – e um sistema de processamento distribuído – Hadoop – para construir um recomendador de vídeos inteligente e escalável.

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. Estas 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 de conteúdo é melhorar a capacidade do processo de indicação, muito comum na relação social entre seres humanos. Nestes 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. Este relacionamento é conhecido como relacionamento de interesse.

Dentre 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 BigData, 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.

No próximo artigo falaremos sobre técnicas e ferramentas essenciais para enfrentar os desafios para criar um recomendador de conteúdo escalável – filtragem colaborativa, identificação de usuário e UX. E teremos uma terceira parte sobre avaliação do seu recomendador e conclusão.

Acompanhe os próximos posts.

Entre em Contato

Mensagem enviada com sucesso!

Tags

Comentários