apache mahout

19
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

Upload: joao-gabriel-lima

Post on 05-Jun-2015

576 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Apache mahout

Apache MahoutBiblioteca Open-Source para Aprendizagem de Máquina com ALTA

ESCALABILIDADE

J. Gabriel [email protected]

LINC - Laboratório de Inteligência Artificial

Page 2: Apache mahout

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

Page 3: Apache mahout

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

Page 4: Apache mahout

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

Page 5: Apache mahout

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

Page 6: Apache mahout

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

Page 7: Apache mahout

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

Page 8: Apache mahout
Page 9: Apache mahout

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.

Page 10: Apache mahout

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

Page 11: Apache mahout

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

Page 12: Apache mahout

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

Page 13: Apache mahout

Algoritmo Breve descrição Caso de usoRegressã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

Page 14: Apache mahout

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

Page 15: Apache mahout

Mahout?... PQ?!

• Não apenas implementar algoritmos de aprendizagem de máquina...

• ESCALABILIDADE!!!!

Page 16: Apache mahout

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.

Page 17: Apache mahout

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

Page 18: Apache mahout

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

Page 19: Apache mahout

Considerações Finais e Trabalhos futuros