Python e Aprendizagem de Máquina (Inteligência Artificial)

13,054 views

Published on

Keynote lecture at IFPE (Instituto Federal de Pernambuco ) about Python and Machine Learning 25.05.2011 at I Information Technology Symposium.

Published in: Technology, Education

Python e Aprendizagem de Máquina (Inteligência Artificial)

  1. 1. Python e Aprendizagem de Máquina A cobra também é inteligente! Marcel P. Caraciolo @marcelcaraciolo
  2. 2. Quem é Marcel ?Marcel Pinheiro Caraciolo - @marcelcaraciolo Sergipano, porém Recifense. Mestrando em Ciência da Computação no CIN/UFPE na área de mineração de dados Diretor de Pesquisa e Desenvolvimento na Orygens Membro e Moderador da Celúla de Usuários Python de Pernambuco (PUG-PE) Minhas áreas de interesse: Computação móvel e Computação inteligente Meus blogs: http://www.mobideia.com (sobre Mobilidade desde 2006) http://aimotion.blogspot.com (sobre I.A. desde 2009) Jovem Aprendiz ainda nas artes pythonicas.... (desde 2007)
  3. 3. Aprendizagem de máquina é _______ Falem !
  4. 4. “Aprendizagem de Máquina é um sub-campo da inteligência artificial dedicado ao desenvolvimento de técnicas que permitam o computador aprender baseado em dados empíricos.”
  5. 5. Dados de Saída Algoritmo Dados de Entrada Processamento Machine Learning e I.A na Academia e como geralmente é ensinado...
  6. 6. Dados de Saída Algoritmo Dados de Entrada Processamento Machine Learning e I.A no mundo real ou o que as tendências vem mostrando...
  7. 7. Dados de Saída Algoritmo Dados de Entrada Processamento Processamento Processamento Processamento Processamento Processamento é sempre uma limitação que muitas vezes na academia se abstraem.
  8. 8. Dados de Saída Algoritmo Dados de Entrada Dados de Entrada Dados de Entrada Dados de Entrada Dados de Entrada Processamento Processamento Processamento Processamento Processamento Dados, geralmente não são escarsos. Muitas fontes de dados espalhados por aí e poucos sabem...
  9. 9. ?Processamento Processamento Dados de Entrada Dados de Entrada Processamento Processamento Dados de Entrada Dados de Entrada Processamento Dados de Entrada Mais dados, mais problemas ... Requer mais processamento e como eliminar ?
  10. 10. Dados de Saída Algoritmo Dados de Entrada Dados de Entrada Dados de Entrada Dados de Entrada Dados de Entrada Processamento Processamento Processamento Processamento Processamento O Algoritmo ainda é muito importante!
  11. 11. Se conseguirmos identificar os padrões relevantes dentro de uma base de dados então podemos representar uma larga base com poucos bits Aprendizagem de Máquina Se nós podemos representar nossos dados com poucos bits(comprimir nossos dados) então realmente “detectamos” os conceitos mais relevantes! Aprendizado vs Compressão
  12. 12. Sem reforço Com reforço Aprendizado Supervisionado
  13. 13. Aprendizado Não Supervisionado
  14. 14. De onde vem os dados ?
  15. 15. http://archive.ics.uci.edu/ml/ Repositórios de Dados UCI, MovieLens, AWS, KDD, etc.
  16. 16. WEB
  17. 17. 1.0 2.0Fonte de Informação Fluxo Contínuo de Informação VI Encontro do PUG-PE VI Encontro do PUG-PE
  18. 18. Intelligence from Mining Data User UserUser User User Um usuário influencia outros por resenhas, notas, recomendações e blogs Um usuário é influenciado por outros por resenhas, notas, recomendações e blogs
  19. 19. reconhecimento de faces classificação identificação de escrita análise de sentimentos recomendações tradução Inteligência Coletiva otimização Sua aplicação busca previsão detecção de fraudes diagnósticosprocessamento de linguagem natural agrupamentos filtragem
  20. 20. Minha área de pesquisa Sistemas de Recomendação
  21. 21. WEB SITESWEB APPLICATIONS WEB SERVICES 3.0 SEMANTIC WEB USERS antes... VI Encontro do PUG-PE VI Encontro do PUG-PE
  22. 22. Atualmente
  23. 23. estamos sobrecarregados de informações
  24. 24. muitas vezes inúteis
  25. 25. às vezesprocuramos isso...
  26. 26. e encontramos isso!
  27. 27. google?
  28. 28. google?midias sociais?
  29. 29. eeeeuuuu... google?midias sociais?
  30. 30. “A lot of times, people don’t know what they want until you show it to them.” Steve Jobs“We are leaving the Information age, andentering into the Recommendation age.” Chris Anderson, from book Long Tail
  31. 31. Sistemas de Recomendação
  32. 32. Recomendações Sociais Família/Amigos Amigos/ Família O Que eudeveria ler ? Ref: Flickr-BlueAlgae “Eu acho que você deveria ler Ref: Flickr photostream: jefield estes livros.
  33. 33. Recomendações por Interação Entrada: Avalie alguns livros O Que eu deveria ler ? Saída: “Livros que você pode gostar são …”
  34. 34. Sistemas desenhados para sugerir algo para mim do meu interesse!
  35. 35. Por que Recomendação ?
  36. 36. Netflix - 2/3 dos filmes alugados vêm de recomendaçãoGoogle News - 38% das notícias mais clicadas vêm de recomendaçãoAmazon - 38% das vendas vêm de recomendação Fonte: Celma & Lamere, ISMIR 2007
  37. 37. E como funciona a recomendação ?
  38. 38. O que os sistemas de recomendação realmente fazem ? 1. Prediz o quanto você pode gostar de um certo produto ou serviço2. Sugere um lista de N items ordenada de acordo com seu interese3. Sugere uma lista de N usuários ordernada para um produto/serviço4. Explica a você o porque esses items foram recomendados5. Ajusta a predição e a recomendação baseado em seu feedback e de outros.
  39. 39. Filtragem baseada por Conteúdo SimilarDuro de O Vento Toy Armagedon Items Matar Levou Store recomenda gosta Marcel Usuários
  40. 40. Filtragem Colaborativa O Vento ToyThor Armagedon Items Levou Storegosta recomenda Marcel Rafael Amanda Usuários Similar
  41. 41. Frameworks em Python
  42. 42. http://orange.biolab.si/ Orange “Data Mining Tool For Python”
  43. 43. CrabuserID = Maria GabrielarecSys = UserRecommender(self.model,self.similarity,self.neighbor,False)recSys.recommend(userID,4)https://github.com/muricoca/crab Crab “Recommendation Engine For Python”
  44. 44. >>> from scikits.learn import svm>>> clf = svm.SVC()>>> clf.fit(digits.data[:-1], digits.target[:-1])SVC(kernel=rbf, C=1.0, probability=False, degree=3, coef0=0.0, eps=0.001, cache_size=100.0, shrinking=True, gamma=0.000556792873051)>>> clf.predict(digits.data[-1])array([ 8.]) http://scikit-learn.sourceforge.net/ Scikits-learn “Machine Learning in Python”
  45. 45. PyML is focused on kernel-methods for classification and regression, includingSupport Vector Machines (SVM). Muito Legal !!! -- > Feature selection >>>
from
PyML.classifiers.composite
import
FeatureSelect >>>
featureSelector
=
FeatureSelect(svm.SVM(),
featsel.RFE()) http://pyml.sourceforge.net/ PyML “Machine Learning in Python”
  46. 46. import numpy as npimport milkfeatures = np.random.rand(100,10)labels = np.zeros(100)features[50:] += .5labels[50:] = 1learner = milk.defaultclassifier()model = learner.train(features, labels)# Now you can use the model on new examples:example = np.random.rand(10)print model.apply(example)example2 = np.random.rand(10)example2 += .5print model.apply(example2) http://luispedro.org/software/milk milk “Machine Learning Toolkit for Python”
  47. 47. http://pybrain.org/>>> from pybrain.tools.shortcuts import buildNetwork>>> n = buildNetwork(2, 3, 1, fast=True)>>> n.activate((2, 3))array([-0.20781205]) PyBrain “The Python Machine Learning Toolkit”
  48. 48. >>
from
libsvm
import
*>>
prob
=
svm_problem([1,‐1],[[1,0,1],[‐1,0,‐1]])>>
param
=
svm_parameter(kernel_type
=
LINEAR,
C
=
10)

##
training

the
model>>
m
=
svm_model(prob,
param)#testing
the
model>>
m.predict([1,
1,
1])http://www.csie.ntu.edu.tw/~cjlin/libsvm/ Python-LibSvm
  49. 49. Acha um hiperplano que divide o espaço dos documentos em dois ? languageSupport Vector Machines Python-LibSvm gemstone
  50. 50. http://pyevolve.sourceforge.net Criado por um brasileiro!from pyevolve import G1DListfrom pyevolve import GSimpleGAdef eval_func(chromosome): score = 0.0 # iterate over the chromosome for value in chromosome: if value==0: score += 1 return scoregenome = G1DList.G1DList(20)genome.evaluator.set(eval_func)ga = GSimpleGA.GSimpleGA(genome)ga.evolve(freq_stats=10)print ga.bestIndividual() PyEvolve Algoritmos Genéticos com Python
  51. 51. Processo Evolutivo“As espécies evoluem pelo principio da seleção natural e sobrevivência do mais apto.”
  52. 52. https://github.com/Yelp/mrjob Computação Distribuída
  53. 53. >>> text = nltk.word_tokenize("And now for something completely different") >>> nltk.pos_tag(text) [(And, CC), (now, RB), (for, IN), (something, NN), (completely, RB), (different, JJ)]http://www.nltk.org/ NLTK Processamento de Textos
  54. 54. Concept Tagging Name Entity Extraction Language Detection http://www.alchemyapi.com/ REST API’s Asynchoronous training Data on the flyhttp://code.google.com/apis/predict/ Support on App Engine http://recdaynow.appspot.com API’s prontas!
  55. 55. Ubigraph 3D http://networkx.lanl.gov/ Visualização
  56. 56. Mapa dos concurseiros no Brasil (Atepassar)http://aimotion.blogspot.com/2011/03/atepassar-social-network-friendship.html
  57. 57. http://numpy.scipy.org/ http://www.scipy.org/>>> from numpy import *>>> multiply(array([3,6]), array([4,7]))array([12, 42]) http://matplotlib.sourceforge.net/ Canivetes essenciais!
  58. 58. Análise
  59. 59. Analisar um classificadorsomente por sua acurácia é errado
  60. 60. Classe real p n Verdadeiro Falso pClasse Positivo Positivopredita Falso Verdadeiro n Negativo Negativo
  61. 61. Acurácia = (VP + VN) / (VP + VN + FP + FN)
  62. 62. A acurácia esconde potenciais falso positivos ou falso negativos
  63. 63. Use precision e recall
  64. 64. Recomendações Precision -Recall Diagram
  65. 65. Curva ROChttp://code.google.com/p/pyplotmining/
  66. 66. http://aimotion.blogspot.com/ Livros e Referências
  67. 67. http://conference.scipy.org/scipy2011/ Conferência de Python em Computação Científica
  68. 68. Python e Aprendizagem de Máquina A cobra também é inteligente! Marcel P. Caraciolo marcel@orygens.com marcel@recday.com

×