O Projeto open source de Aprendizado de máquina (Machine Learning) Mahout anunciou sua versão 0.3 em março, adicionando funcionalidade, estabilidade e performance. A InfoQ falou com o co-fundador e desenvolvedor Grant Ingersoll e o desenvolvedor Ted Dunning, do projeto Apache Mahout.
A necessidade de técnicas de aprendizado de máquina como clustering, filtragem colaborativa e categorização tem aumentado na última década, juntamente com o número de soluções que necessitam de algoritmos para transformar grandes quantidades de dados brutos em informações relevantes.
O Projeto Mahout como introduzido por Grant Ingersoll:
- Agrupando os documentos de um mesmo contexto permite que você escolha se concentrar em áreas específicas e histórias, sem necessidade de percorrer uma grande quantidade de entes independentes
- Recomendações (AKA Filtragem Colaborativa) são freqüentemente usadas para recomendar itens de consumo, tais como livros, músicas e filmes, mas também é usado em outras aplicações onde múltiplos atores precisam colaborar para diminuir os dados
- O casamento de padrões (Naïve Bayes classifier) é usado para rotular documentos invisíveis. Quando um novo documento é classificado, as palavras do documento são procurados no modelo, as probabilidades são calculadas e, o melhor resultado é a saída, normalmente junto com uma pontuação que indica a confiança na precisão do resultado
- O projeto Mahout é facilitado pelo Apache Hadoop, para fins de dimensionamento.
Outro aspecto importante da solução Mahout é o conjunto de ferramentas para criar representações do vetor de dados textuais. Este é o primeiro passo para permitir uma base de dados aos processos de algoritmos de aprendizado do Mahout.
O projeto Mahout foi iniciado por várias pessoas envolvidas na comunidade Apache Lucene (projeto open source de busca) com um interesse ativo em algoritmos de aprendizado de máquina para agrupamento e categorização. A comunidade foi inicialmente dirigida pelo paper "Map-Reduce for Machine Learning on Multicore" Ng et al.'s, mas desde então tem evoluído para abordagens muito mais amplas de aprendizagem de máquina.
O novo release do Apache Mahout destaca:
- Novidade: módulos math e collections baseados na biblioteca Colt de alta performance
- Padrão de crescimento frequente (FPGrowth) mais rápido, usando FP-bonsai pruning
- Processo de Clustering Dirichlet (algoritmo de clustering baseados em modelos) paralelo
- Co-ocorrência paralela baseada em recomendação
- Documento de texto paralelo à conversão de vetor baseado na geração LLR
- Adição do Singular Value Decomposition
- Shell scripts para facilitar a execução de algoritmos, utilidades e exemplos
Quando perguntado sobre qual é a mais emocionante feature desse release, Ingersoll respondeu:
A adição do Singular Value Decomposition (SVD) distribuído é muito emocionante, assim como muitas utilidades para tornar mais fácil para as pessoas para obter seu conteúdo no Mahout... a característica mais interessante é realmente uma não-palpável... uma demonstração da comunidade Mahout chegar a uma massa crítica de colaboradores e usuários. Na vida de qualquer projeto de código aberto, as fases iniciais podem ser muito frágeis, com apenas uma ou duas pessoas fazendo a maioria do trabalho e, se qualquer uma dessas pessoas parar ou mesmo diminuir o ritmo, o projeto pode ficar na geladeira. Eu acredito que o Mahout passou desse limite e tem muitas pessoas agora contribuindo ativamente para construir algo realmente emocionante.
Estão entre os planos futuros do Mahout:
- O release da versão 1.0 chega ao final desse ano
- Um conjunto estável de API's a partir da versão 1.0 em diante
- Capacidade de aprendizado online como a implementação do algoritmo Stochastic Gradient Descent (SGD)
- Implementação do algoritmo Support Vector Machine (SVM)
As implementações do SGD e SVM serão aplicáveis à mineração de documentos e outras aplicações que se relacionam com texto ou repetição de dados categóricos. De particular interesse é o fato de que o sistema SGD estará introduzindo a possibilidade de construir variáveis de interação em tempo real.