Apache Mahout é uma biblioteca open-source para aprendizado de máquina com alta escalabilidade. Ela visa facilitar e acelerar a construção de aplicações inteligentes que aprendem a partir de dados, como recomendadores e classificadores, utilizando técnicas como armazenamento em cluster, filtragem colaborativa e categorização. O Mahout implementa vários algoritmos de aprendizado de máquina e foi projetado para ser escalável utilizando o Apache Hadoop.
1. Apache Mahout
Biblioteca Open-Source para Aprendizagem de Máquina com ALTA
ESCALABILIDADE
J. Gabriel Lima
jgabriel.ufpa@gmail.com
LINC - Laboratório de Inteligência Artificial
2. • Outrora domínio exclusivo de acadêmicos e corporações
com grandes orçamentos de pesquisa, as aplicações
inteligentes que aprendem a partir de dados e
contribuição de usuário estão se tornando mais comuns.
3. • A necessidade por técnicas de aprendizagem de máquina,
como armazenamento em cluster, filtragem
colaborativa, e categorização nunca foi maior, seja para
localizar aspectos em comum entre grandes grupos de
pessoas ou rotular automaticamente grandes volumes de
conteúdo de Web.
4. • A aprendizagem por máquina é um subcampo da
inteligência artificial referente a técnicas que permitem
os computadores melhorarem seus resultados com base
em experiências anteriores.
• O campo é estritamente relacionado à mineração de dados e
geralmente utiliza técnicas de estatística, teoria da
probabilidade, reconhecimento de padrões, e uma série
de outras áreas.
5. O projeto Apache Mahout visa facilitar e acelerar a
construção de aplicações inteligentes.
6. CENÁRIO:
• Processar centenas ou milhares de mensagens de e-mail
pessoais por dia ou vasculhar a intenção de usuários a partir
de petabytes de weblogs...
7. Embora a aprendizagem por máquina não seja um campo
recente, encontra-se definitivamente em crescimento
8.
9. A cada dia muito mais empresas se beneficiam do
aproveitamento da aprendizagem por máquina em suas
aplicações para aprender com usuários e situações passadas.
10. • Os usos da aprendizagem por máquina abrangem desde jogos
passando pela detecção de fraudes até a análise da bolsa de valores
• Exemplos:
• Netflix
• Amazon
• Recomendam produtos aos usuários com base em compras passadas.
• Sistemas que encontram todos os artigos de notícias similares em um
determinado dia.
• Categorizar páginas de Web automaticamente conforme o gênero
(esportes, economia, guerra).
• Marcar mensagens de e-mail como spam.
11. • O projeto foi iniciado por várias pessoas envolvidas na
comunidade Apache Lucene (busca de fonte aberta) com um
interesse ativo em aprendizagem por máquina e um anseio por
implementações robustas, bem-documentadas e escaláveis de
algoritmos de aprendizagem por máquina para armazenamento
em cluster e categorização.
12. • O Mahout também visa:
• Construir e suportar uma comunidade de usuários e contribuidores,
de modo que o código dure mais do que qualquer envolvimento de
contribuidor particular ou qualquer empresa privada ou fundo
universitário.
• Concentra-se em casos de uso prático do mundo real em oposição
a pesquisas de vanguarda ou técnicas não comprovadas.
• Fornece documentação de qualidade e exemplos.
13. Algoritmo Breve descrição Caso de uso
Regressão logística, solucionada pelo Classificador sequencial simples e Recomendação de anúncios a usuários,
Stochastic Gradient Descent (SGD) extremamente rápido com capacidade de classificação de texto em categorias
aprendizado on-line em ambientes
exigentes
Hidden Markov Models (HMM) Implementações sequenciais e paralelas do Identificação de texto de parte do discurso;
clássico algoritmo de classificação para reconhecimento de discurso
modelar processos do mundo real quando o
processo de geração subjacente é
desconhecido
Singular Value Decomposition (SVD) Projetada para reduzir o ruído em grandes Como um precursor ao armazenamento em
matrizes, tornando-as menores e mais cluster, recomendadores e classificação
fáceis de trabalhar para realizar a seleção de recurso
automaticamente
Armazenamento em cluster Dirichlet Abordagem com base em modelo ao Útil quando os dados têm sobreposição ou
armazenamento em cluster que determina a hierarquia
associação de acordo com se os dados se
ajustam ao modelo subjacente
Armazenamento em cluster espectral Família de abordagens similares que usam Como todos os algoritmos de
uma abordagem com base em gráfico para armazenamento em cluster, útil para
determinar a associação do cluster explorar conjuntos de dados grandes e não
vistos
Armazenamento em cluster Minhash Usa uma estratégia de hashing para Igual a outras abordagens de
agrupar itens similares, produzindo, assim, armazenamento em cluster
os clusters
Diversas melhorias de recomendador Coocorrências distribuídas, SVD, mínimos Sites de namoro, e-commerce,
quadrados alternados recomendações de filmes ou livros
Disposições Implementação de disposições ativadas Localização de frases estatisticamente
para redução de mapa interessantes em texto
14. • Para o Mahout, essa evolução levou a diversas melhorias. A mais
importante é uma interface de linha de comando muito aprimorada e
consistente, que torna mais fácil enviar e executar tarefas
localmente e no Apache Hadoop.
15. • Não apenas implementar algoritmos de aprendizagem de
máquina...
• ESCALABILIDADE!!!!
Mahout?... PQ?!
16. • Com a necessidade de aplicações mais escaláveis nos dias atuais, talvez você precise
“desnormalisar” o seu banco de dados:
• O que adiantaria uma foreign key se você tem tabelas espalhadas em diversos data
centers? Por questões de performance, dados podem ser distribuídos em data centers
distintos, então como buscar pelo id se você não sabe onde está esse dado? Por isso é
importantíssimo que a aplicação controle essa integridade, para não depender de
constraints e stored procedures do banco de dados.
Apache Handoop
• Implementações de MapReduce
• Um modelo de programação, e framework introduzido pelo Google para suportar
computações paralelas em grandes coleções de dados em clusters de computadores.
17. • Aplicações que usam o Hadoop
Com essa grande capacidade de processamento e armazenamento
de dados o Hadoop tem uma ampla aplicação no ramo de
tecnologia de informação, por exemplo, na busca (Google),
processamento de log, Business Intelligence, Data Warehousing,
análise de video e imagens e outros.
18. • Conforme mais pessoas usam um projeto de software
livre e trabalham para fazer o código do projeto
funcionar com o seu código, mais a infraestrutura é
preenchida.
• Para o Mahout, essa evolução levou a diversas melhorias.