Por que eu devo ler este artigo:Esse artigo é útil para estudantes e profissionais que desejam adicionar capacidade de aprendizado de máquina aos seus sistemas web. Gigantes como a Amazon, Google e Ebay já usam esse tipo de mecanismo há anos, porém os avanços motivados pela popularização do Big Data e de Computação em Nuvem permitem hoje que essas tecnologias estejam acessíveis para qualquer desenvolvedor Java.

Nesse aspecto, o Apache Spark se destaca por oferecer uma maneira simples, rápida e altamente escalável para o desenvolvimento de sistemas baseados em Aprendizado de Máquina.

Assim, esse artigo demonstra o uso do Apache Spark em um mecanismo para um e-commerce hipotético, no qual os clientes recebem sugestões de produtos a partir de recomendações feitas por outros usuários.

Para completar a aplicação, os dados são armazenados no Elasticsearch, em uma arquitetura inspirada na Arquitetura Lambda, um padrão no desenvolvimento de software para Big Data que facilita a organização e o entendimento das aplicações.
Autores:Luiz Henrique Zambom Santana e Eduardo Felipe Zambom Santana

Atualmente a Amazon, maior e-commerce do mundo, possui em seu estoque cerca de 400 mil livros sobre TI, mais de 1 milhão de livros classificados como Matemática e Ciências e quase dois milhões categorizados em Negócios e Finanças.

Seria impossível analisar todos esses livros de forma manual (considerando que cada página demore um segundo para ser carregada, seria necessário quase uma semana de acesso contínuo para visualizar apenas os livros de TI).

Por isso, os sistemas computacionais, especialmente os de e-commerce, investem cada vez mais em mecanismos de buscas e formas de sumarizar, apresentar e recomendar produtos que facilitem a vida de seus clientes na tarefa de encontrar seu produto ideal.

Como uma das respostas à dificuldade das pessoas em escolher entre uma grande variedade de produtos e serviços, muitos sistemas de recomendação foram sugeridos.

A evolução destes sistemas e o fato deles trabalharem com grandes bases de informações permitiram que recomendações computacionais pudessem ter – muitas vezes – uma credibilidade maior que uma indicação humana. Os mecanismos desse tipo normalmente usam algum modelo de Aprendizado de Máquina, dentre os quais se destaca a Filtragem Colaborativa, proposta no início dos anos 90.

Nessa época, os autores do Tapestry, um dos primeiros sistemas de recomendação, cunharam a expressão “Filtragem Colaborativa”, pois esse sistema recomenda informações com o auxílio humano, ou seja, filtra conteúdos via a colaboração de grupos de interessados.

Gigantes como a Amazon, Google e Ebay já usam esse tipo de mecanismo há anos, porém os avanços motivados pela popularização do Big Data e de Computação em Nuvem permitem hoje que essas tecnologias estejam acessíveis a e-commerces de qualquer tamanho. Nesse aspecto, o Apache Spark se destaca por oferecer uma maneira simples, rápida e altamente escalável para o desenvolvimento de sistemas baseados em Aprendizado de Máquina.

Usando o Spark, sites de e-commerce – infinitamente menores que a Amazon – podem ter acesso ao mesmo tipo de mecanismo, melhorando a experiência de uso de seus sistemas e, principalmente, alavancando suas vendas. Para isso, o Spark oferece pré-implementadas as funções de Filtragem Colaborativa.

Ao longo dos anos, vários pesquisadores acabaram adotando esta terminologia para denominar qualquer tipo de sistema de recomendação, porém é importante frisar que existem sistemas de recomendação sem nenhuma colaboração entre as pessoas (por exemplo, quando as recomendações são baseadas no posicionamento geográfico).

Com base nesses conceitos, este artigo apresentará o emprego do mecanismo de filtragem colaborativa dentro do Apache Spark, com especial foco em sistemas de e-commerce.

Ao longo do estudo, será mostrada a utilização do MLlib – nome que reflete a sigla em inglês para biblioteca de aprendizado de máquina –, componente do Spark que implementa distintos mecanismos de aprendizado de máquina, incluindo a Filtragem Colaborativa.

Além disso, outros importantes aspectos do Spark serão abordados, dentre os quais ressaltamos: o mecanismo de clusters, o uso intensivo de memória principal e a baixa latência, como principal requisito de projeto.

Conceitos principais

Os sistemas de recomendação visam determinar o conteúdo mais relevante que deve ser apresentado para o usuário e são caracterizados por realizar filtragens – ou seja, sumarizar para escolher os itens mais relevantes – em um conjunto de conteúdos, que podem, por exemplo, ser produtos em um e-commerce, notícias em um portal, ou posts em uma rede social.

Existem diversas formas de lidar com a recomendação, mas duas são as principais: recomendação baseada no usuário ou baseada no item. Como resumido pela Figura 1, no tipo de recomendação Baseada no Item, o usuário receberá recomendações de itens similares a itens preferidos no passado, enquanto na Baseada no Usuário, o usuário receberá recomendações de itens que pessoas com gostos similares aos dele preferiram no passado.

Figura 1. Tipos de recomendação.

A Filtragem Colaborativa é o principal método para recomendação baseada em usuário e é parte da área de Aprendizado de Máquina, já que para ser efetivo, esse método espera que haja uma fase de treinamento, onde o mecanismo irá aprender quais itens são mais relevantes para cada usuário.

O nome do método reflete o fato que esse tipo de sistema utiliza a opinião de usuários sobre um determinado item para sugerir itens que outros usuários também podem estar interessados, em vez de utilizar a análise das características dos itens.

De maneira mais formal, a ideia da filtragem colaborativa pode ser explicada pela Tabela 1, onde são apresentadas as avaliações (notas de 0 a 10) de três client ...

Quer ler esse conteúdo completo? Tenha acesso completo