Por que eu devo ler este artigo:Este artigo irá abordar os aspectos principais da ferramenta Apache Mahout, criada com base no Apache Hadoop, e mostrará exemplos de como usar essa ferramenta para aplicações de recomendação, clustering e classificação de dados.

Esse tema é útil para desenvolvedores que tenham interesse em ferramentas de análise e classificação de dados e em formas inovadoras de utilizar algoritmos que visam melhorar a eficiência e a relevância do processamento de informações através da aplicação de técnicas de inteligência artificial e de Machine Learning.

O tráfego de dados é um fator em constante crescimento nas redes de computadores atuais, tornando, cada vez mais, a etapa de processamento e análise mais complexa e custosa computacionalmente.

Propondo alternativas eficientes para tratar esse aumento de informações, o tópico denominado Big Data, que estuda maneiras de analisar, manipular e armazenar grandes quantias de dados, vem se mostrando um desafio (e uma oportunidade de avanço) para a tecnologia atual e dos próximos anos.

Dentro desse contexto, em 2005, foi criado o Apache Hadoop, um framework open source cujas principais funções são o processamento e o armazenamento de dados em grande escala.

O conceito de MapReduce, implementado dentro do Hadoop, nos possibilita trabalhar com grandes quantidades de informações em múltiplos processos em paralelo, facilitando, assim, o manuseio desses gigantescos pedaços de dados.

Com uma visão das possibilidades que o Apache Hadoop trouxe para a computação e programação, em 2009 foi lançada a primeira versão do Apache Mahout. A ideia por trás deste projeto foi de utilizar o MapReduce já implementado no Hadoop e construir, em cima deste framework, algoritmos complexos da computação relacionados a Machine Learning e aplicados no campo de análise de dados em grande escala.

Deste modo, esses algoritmos e os principais aspectos do Mahout e do Machine Learning são os assuntos a serem discutidos neste artigo, acompanhados de dois exemplos práticos, que demonstram uma aplicação simples de recomendação e outra, mais complexa, que é capaz de analisar e classificar os textos.

O que é Machine Learning?

Machine Learning é um tópico presente no ramo da Inteligência Artificial, cujo propósito é estudar e analisar sistemas que “aprendem” com dados, ou seja, que são capazes de se aprimorar e tomar decisões mais realistas analisando um determinado conjunto de informações.

Apesar de ser uma definição antiga (a primeira definição de Machine Learning foi feita em 1959, por Arthur Samuel), temos acompanhado, nos últimos meses, um avanço considerável no campo e, cada vez mais, o tópico vem ganhando importância dentro das discussões de pesquisadores renomados ao redor do mundo.

Todo esse foco se deve, principalmente, à necessidade de trabalharmos com grandes volumes de dados e, devido a isso, sermos capazes de distinguir o que realmente é relevante ao nosso sistema de forma automática e rápida.

Atendendo a essa necessidade e se mostrando bem efetivos, os algoritmos de Machine Learning aplicam conceitos de Inteligência Artificial para realizar o tratamento das informações, apresentando-se como favoritos no campo de análise de dados. Como exemplos desses algoritmos, podemos citar as Redes Neurais, K-Means para Clustering e Redes Bayesianas, todos já bastante conhecidos e estudados na informática.

Mahout e a análise de dados

Esses algoritmos, no entanto, apresentam diversos problemas em relação à complexidade de desenvolvimento e à performance de execução que, em casos de grandes quantidades de dados, pode ser bastante lenta. Vendo esses fatores, a Apache aproveitou a oportunidade e criou uma API rápida, fácil e que permite aos desenvolvedores utilizar algoritmos complexos sem se preocupar com suas implementações, o denominado Apache Mahout.

As bibliotecas criadas dentro dessa ferramenta, por sua vez, dividem-se na implementação de soluções para três temas principais do Machine Learning: recomendação (capacidade de recomendar um item com base no perfil e nas escolhas anteriores do usuário), clustering (solução para analisar o conteúdo de arquivos e agrupar dados semelhantes em “clusters” ou agrupamentos de informação) e classificação (atividade de ler, analisar e classificar dados, aplicando o mesmo tipo de classificação para conteúdos com características em comum).

Esses elementos têm bastante importância no campo da informática atual, como, por exemplo, em empresas de Web Commerce que já incorporam algoritmos de recomendação em suas páginas principais, em algoritmos de busca na Web que procuram, através de técnicas de Clustering, diminuir o tempo de procura e aumentar a relevância dos resultados, e em ferramentas de indexação que usam a classificação para melhorar sua performance e rapidez no processamento de dados.

Implementando com eficácia e robustez a recomendação, clustering e classificação, o Mahout se mostra como uma ferramenta poderosa para a análise de dados e desenvolvimento de Inteligência Artificial, e uma alternativa open source para realizar tarefas importantes no campo do Machine Learning.

Configurações iniciais

Para iniciarmos nossa aplicação, podemos criar um projeto Java simples dentro da sua IDE favorita. Uma vez construído esse projeto, precisamos adicionar as dependências do Mahout ao classpath. Isso pode ser feito manualmente (baixando o arquivo mahout-core-0.8.jar do site oficial da Apache e adicionando no classpath do projeto, junto com suas dependências) ou através do gerenciador de dependências do Maven.

A Listagem 1 apresenta as configurações do pom.xml para fazer a adição da dependência dentro do seu projeto Java através do Maven.

Listagem 1. Dependência do Apache Mahout.


<dependency>

  <groupId>org.apache.mahout</groupId>
  <artifactId>mah ... 

Quer ler esse conteúdo completo? Tenha acesso completo