Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apache Mahout: Implementação de algoritmos de aprendizado de máquina com o paradigma MapReduce

Apache Mahout: Implementação de algoritmos de aprendizado de máquina com o paradigma MapReduce

Apresentação para a disciplina de Tópicos Especiais em Banco de Dados do curso de Ciência da Computação da Universidade Federal Rural do Rio de Janeiro

Ronaldo Vieira

June 20, 2016
Tweet

More Decks by Ronaldo Vieira

Other Decks in Programming

Transcript

  1. Ronaldo Vieira Tiago Pimentel Apache Mahout: Implementação de algoritmos de

    aprendizado de máquina com o paradigma MapReduce
  2. Sumário • Motivação • O que é o Mahout? •

    Histórico • Características • Quem usa? • Instalação • Sistemas de Recomendação ◦ Como é no Mahout ◦ Criando um sistema de recomendação • Clusterização ◦ Como é no Mahout ◦ Passos necessários ◦ Algoritmos de Clustering ▪ Canopy ▪ K-means • Classificação ◦ Classificação ◦ Passos necessários ◦ Aplicações • Dificuldades • Referências
  3. O que é o Mahout? • O Apache Mahout é

    uma biblioteca de algoritmos e técnicas de aprendizado de máquina voltados ao processamento de grandes bases de dados • Utiliza o poder de paralelização e escalabilidade do MapReduce • Usa o Apache Hadoop como base • Mahout (cornaca, em português) é o nome dado para pessoas que cuidam de elefantes e os usam como transporte
  4. Histórico • Começou como um sub-projeto do Apache Lucene em

    2008, mas em 2010 tornou-se um projeto independente • Teve início com um trabalho intitulado "Map-Reduce for Machine Learning on Multicore" por [Ng et al, 2007] • Atualmente também utiliza outras abordagens além do MapReduce
  5. • Permite analisar grandes volumes de dados de forma eficaz

    e em menor tempo • Foca em três áreas do aprendizado de máquina: ◦ Sistemas de recomendação ◦ Clusterização de dados ◦ Classificação de dados • Feito em Java • Código aberto Características (1/2)
  6. Características (2/2) • Oferece uma lista extensa de algoritmos e

    técnicas, como: ◦ k-means e fuzzy k-means ◦ Canopy clustering ◦ Mean shift clustering ◦ Logistic regression ◦ Naive Bayes e Complementary Naive Bayes ◦ Hidden Markov Models ◦ Random Forest • Inclui bibliotecas de vetores e matrizes
  7. • Foursquare: recomendação de lugares, comida e entretenimento • Mendeley:

    recomendação de artigos • ResearchGate: recomendação de artigos, pessoas e empregos • Twitter: inferência de interesses de usuários • Yahoo!: reconhecimento de padrões Quem usa?
  8. Como é no Mahout (1/2) • Componentes fornecidos pelo Mahout

    para construir um sistema de recomendação: ◦ DataModel (Modelo de dados) ◦ UserSimilarity (Usuários similares) ou ItemSimilarity (Itens similares) ◦ UserNeighborhood (Vizinhança do usuário) ◦ Recommender (Recomendação)
  9. Criando um sistema de recomendação (1/8) 1º Etapa: • O

    objeto DataModel ira receber um arquivo de entrada com as informações do usuário: Itens, preferências ou detalhes dos produtos. • data.txt: 1,00,1.0 2,00,1.0 3,01,2.5 4,00,5.0 1,01,2.0 2,01,2.0 3,02,5.0 4,01,5.0 1,02,5.0 2,05,5.0 3,03,4.0 4,02,5.0 1,03,5.0 2,06,4.5 3,04,3.0 4,03,0.0 1,04,5.0 2,02,5.0 DataModel datamodel = new FileDataModel(new File(“data.txt”));
  10. Criando um sistema de recomendação (2/8) 2º Etapa: • Cria-se

    o objeto UserSimilarity para encontrar a correlação de similaridade entre os usuários • Neste exemplo, usa-se a correlação de Pearson UserSimilarity similatity = new PearsonCorrelationSimilarity(datamodel);
  11. Criando um sistema de recomendação (3/8) 2º Etapa: • Métodos

    disponíveis: ◦ CityBlockSimilarity ◦ EuclideanDistanceSimilarity ◦ LogLikelihoodSImilarity UserSimilarity similatity = new PearsonCorrelationSimilarity(datamodel); ◦ PearsonCorrelationSimilarity ◦ TanimotoCoefficientSimilarity ◦ UncenteredCosineSimilarity
  12. Criando um sistema de recomendação (4/8) 3º Etapa: • Esta

    etapa calcula a “vizinhança” de um usuário (usuários mais parecidos a ele). Existem 2 tipos de cálculo de vizinhança: ◦ NearestNUserNeighborhood: Calcula uma vizinhança com os N vizinhos mais próximo de um usuário. ◦ ThresholdUserNeighborhood: Esta classe calcula uma vizinhança composta por todos os usuários cuja semelhança com um usuário atinge um determinado limite. UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
  13. Criando um sistema de recomendação (5/8) 4º Etapa: • Passa

    para o objeto UserBasedRecommender todos os objetos criados até o momento para obter, de fato, o recomendador UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
  14. Criando um sistema de recomendação (6/8) 5º Etapa: • Para

    obter as recomendações, usa-se a função recommender(user, amount) List<RecommendedItem> recommendations = recommender.recommend(1, 3); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }
  15. Criando um sistema de recomendação (7/8) 5º Etapa: • O

    primeiro parâmetro representa para qual usuário as recomendações serão feitas • O segundo parâmetro representa a quantidade de recomendações desejadas List<RecommendedItem> recommendations = recommender.recommend(1, 3); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }
  16. Criando um sistema de recomendação (8/8) Exemplo de saída: RecommendedItem[item:286,

    value:5.0] RecommendedItem[item:307, value:4.0] RecommendedItem[item:895, value:4.0]
  17. Clusterização no Mahout • Clusterização é o procedimento de descobrir

    diferentes grupos dentro de uma coleção de dados para assim organizar os elementos dessa coleção nesses grupos com base na semelhança entre os elementos ◦ Por exemplo, as aplicações relacionadas com noticias online publicam em grupos seus novos artigos usando clustering.
  18. Passos necessários • Algoritmo: é necessário selecionar um algoritmo de

    agrupamento adequado para agrupar os elementos de um cluster. • Similaridade e dissimilaridade: precisamos também ter uma regra no sentido de verificar a semelhança entre os elementos recém encontrados e os elementos dos grupos. • Condição de parada: necessário para definir o ponto em que não se precisa realizar nenhum agrupamento.
  19. Algoritmos de Clusterização O Mahout suporta dois algoritmos de clusterização:

    • Canopy clustering: é uma técnica de agrupamento simples e rápida, nela, os itens serão tratados como pontos num espaço. Por ser simples, é frequentemente usada como passo inicial em outras técnicas. • K-means clustering: é um algoritmo de agrupamento importante, onde o k representa no algoritmo o nº de clusters em que os dados serão divididos
  20. Canopy Clustering (1/3) • O algoritmo inicia pegando um ponto

    aleatório em um conjunto de pontos. • Depois, cria um Canopy contendo esse ponto e percorre o restante do conjunto. • Caso a distância entre um ponto e o Canopy seja menor que T1, adiciona o ponto ao Canopy • Alem disso, caso essa distância seja menor que T2, remove o ponto do conjunto.
  21. Canopy Clustering (2/3) • Com isso, os pontos que estiverem

    bem próximos do Canopy, não serão reprocessados pelo algoritmo • Ao final, o conjunto inicial estará vazio e haverá um novo conjunto contendo os Canopies que conterão um ou mais pontos cada. • Um ponto pode pertencer à mais de uma Canopy
  22. Canopy Clustering (3/3) Vermelho: Serão removidos do conjunto de pontos

    Azul: Pertencem ao canopy Preto, mas podem também pertencer a outros canopies Traçado de Branco: Não pertencem à este canopy
  23. K-means Clustering • Os itens são representados por vetores em

    um espaço n- dimensional, onde n é o nº de características de cada item. • Escolhe-se k itens aleatoriamente, esses itens irão servir como centros inicias dos clusters. • Em seguida, todos os outros pontos são atribuídos ao cluster que tem o centro mais próximo dele • Depois, em cada clusters é calculado um novo centro com a média dos valores das características de cada vetor. • Esse processo é realizado até venha à convergir.
  24. Classificação • É a técnica de aprendizado de máquina que

    usa dados conhecidos para determinar como os novos dados devem ser classificados em um conjunto de categorias existentes • Por exemplo: os servidores de e-mail utilizam a técnica para determinar se um determinado e-mail deve ser classificado com spam.
  25. Passos necessários • Durante a execução do processo, o sistema

    executa as seguinte ações: ◦ Inicialmente, um novo modelo de dados é preparado utilizando qualquer um dos algoritmos de aprendizagem. ◦ Depois, esse modelo de dados é testado para verificar se está classificando corretamente. ◦ Por fim, o que foi aprendido pelo sistema é utilizado para avaliar novos dados e determinar sua classe.
  26. Aplicações •Classificação de Spam: o algoritmo treina o que leva

    o usuário à marcar um e-mail como spam. Com isso, pode classificar futuros e-mails que chegarão se são ou não como spam. Fraude em cartões de crédito: Usando informações históricas de fraudes anteriores, o classificador pode prever quais futuras transações podem se transformar em fraudes, e bloquear a compra antes que seja efetiva.
  27. Referências [1] Chu, Cheng, et al. "Map-reduce for machine learning

    on multicore." Advances in neural information processing systems 19 (2007): 281. [2] Dean, Jeffrey, and Sanjay Ghemawat. "MapReduce: simplified data processing on large clusters." Communications of the ACM 51.1 (2008): 107-113. [3] "What Is Apache Mahout?" Apache Mahout: Scalable Machine Learning and Data Mining. N.p., n.d. Web. 12 June 2016. http://mahout.apache.org [4] "Introdução Ao Apache Mahout." Introdução Ao Apache Mahout. N.p., n.d. Web. 16 June 2016. https://www.ibm. com/developerworks/br/java/library/j-mahout [5] "Mahout Quick Guide." Www.tutorialspoint.com. N.p., n.d. Web. 16 June 2016. http://www.tutorialspoint. com/mahout/mahout_quick_guide.htm [6] "40 Years of Microprocessor Trend Data." Karl Rupp. N.p., n.d. Web. 19 June 2016. https://www.karlrupp. net/2015/06/40-years-of-microprocessor-trend-data [7] "Machine Learning with Mahout -Tutorial." YouTube. YouTube, 2015. Web. 19 June 2016. https://www.youtube. com/watch?v=PZsTLIlSZhI