Apache mahout

jgabriellima 609 views 19 slides Aug 05, 2012
Slide 1
Slide 1 of 19
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19

About This Presentation

Apresentação feita para o LINC(Laboratório de Inteligência Computacional) sobre o Apache Mahout
http://jgabriellima.in


Slide Content

Apache Mahout
Biblioteca Open-Source para Aprendizagem de Máquina com ALTA
ESCALABILIDADE
J. Gabriel Lima
[email protected]
LINC - Laboratório de Inteligência Artificial

•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.

•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.

•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.

O projeto Apache Mahout visa facilitar e acelerar a
construção de aplicações inteligentes.

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...

Embora a aprendizagem por máquina não seja um campo
recente, encontra-se definitivamente em crescimento

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.

•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.

•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.

•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.

Algoritmo Breve descrição Caso de uso
Regressão logística, solucionada pelo
Stochastic Gradient Descent (SGD)
Classificador sequencial simples e
extremamente rápido com capacidade de
aprendizado on-line em ambientes
exigentes
Recomendação de anúncios a usuários,
classificação de texto em categorias
Hidden Markov Models (HMM) Implementações sequenciais e paralelas do
clássico algoritmo de classificação para
modelar processos do mundo real quando o
processo de geração subjacente é
desconhecido
Identificação de texto de parte do discurso;
reconhecimento de discurso
Singular Value Decomposition (SVD) Projetada para reduzir o ruído em grandes
matrizes, tornando-as menores e mais
fáceis de trabalhar
Como um precursor ao armazenamento em
cluster, recomendadores e classificação
para realizar a seleção de recurso
automaticamente
Armazenamento em cluster Dirichlet Abordagem com base em modelo ao
armazenamento em cluster que determina a
associação de acordo com se os dados se
ajustam ao modelo subjacente
Útil quando os dados têm sobreposição ou
hierarquia
Armazenamento em cluster espectral Família de abordagens similares que usam
uma abordagem com base em gráfico para
determinar a associação do cluster
Como todos os algoritmos de
armazenamento em cluster, útil para
explorar conjuntos de dados grandes e não
vistos
Armazenamento em cluster Minhash Usa uma estratégia de hashing para
agrupar itens similares, produzindo, assim,
os clusters
Igual a outras abordagens de
armazenamento em cluster
Diversas melhorias de recomendador Coocorrências distribuídas, SVD, mínimos
quadrados alternados
Sites de namoro, e-commerce,
recomendações de filmes ou livros
Disposições Implementação de disposições ativadas
para redução de mapa
Localização de frases estatisticamente
interessantes em texto

•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.

Mahout?... PQ?!
•Não apenas implementar algoritmos de aprendizagem de
máquina...
•ESCALABILIDADE!!!!

Apache Handoop
•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.
•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.

•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.

•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.

Considerações Finais e
Trabalhos futuros