Upload
marcel-caraciolo
View
6.507
Download
1
Embed Size (px)
DESCRIPTION
Keynote lecture at IFPE (Instituto Federal de Pernambuco ) about Python and Machine Learning 25.05.2011 at I Information Technology Symposium.
Citation preview
Marcel Pinheiro Caraciolo - @marcelcaraciolo
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)
Sergipano, porém Recifense.
Quem é Marcel ?
“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.”
Machine Learning e I.A na Academia
Algoritmo Dados de EntradaDados de Saída
Processamento
e como geralmente é ensinado...
Machine Learning e I.A no mundo real
Algoritmo Dados de EntradaDados de Saída
Processamento
ou o que as tendências vem mostrando...
Processamento é sempre uma limitação
Algoritmo Dados de EntradaDados de Saída
Processamento
que muitas vezes na academia se abstraem.
ProcessamentoProcessamentoProcessamentoProcessamento
Dados, geralmente não são escarsos.
Algoritmo Dados de EntradaDados de Saída
Processamento
Muitas fontes de dados espalhados por aí e poucos sabem...
ProcessamentoProcessamentoProcessamentoProcessamento
Dados de EntradaDados de EntradaDados de EntradaDados de Entrada
Mais dados, mais problemas ...
Dados de EntradaProcessamento
Requer mais processamento e como eliminar ?
ProcessamentoProcessamentoProcessamentoProcessamentoDados de EntradaDados de EntradaDados de EntradaDados de Entrada
?
O Algoritmo ainda é muito importante!
Algoritmo Dados de EntradaDados de Saída
ProcessamentoProcessamentoProcessamentoProcessamentoProcessamento
Dados de EntradaDados de EntradaDados de EntradaDados de Entrada
Aprendizagem de Máquina
Se conseguirmos identificar os padrões relevantes dentro de uma base de dados então podemos representar uma larga base com
poucos bits
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
Repositórios de DadosUCI, MovieLens, AWS, KDD, etc.
http://archive.ics.uci.edu/ml/
Intelligence from Mining Data
UserUserUserUserUser
Um usuário influencia outrospor resenhas, notas, recomendações e blogs
Um usuário é influenciado por outrospor resenhas, notas, recomendações e blogs
Inteligência ColetivaSua aplicação
busca
reconhecimento de faces
agrupamentos
recomendações
classificação
análise de sentimentos
processamento de linguagem naturaldiagnósticos
otimizaçãotradução
identificação de escrita
previsãodetecção de fraudes
filtragem
VI Encontro do PUG-PEVI Encontro do PUG-PE
3.0
USERS
WEB SITESWEB APPLICATIONS
WEB SERVICESSEMANTIC WEB
antes...Friday, October 1, 2010
“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, and entering into the Recommendation age.”
Chris Anderson, from book Long Tail
Recomendações Sociais
“Eu acho que
você deveria ler
estes livros.
Amigos/ Família O Que eu
deveria ler ?
Ref: Flickr photostream: jefield
Ref: Flickr-BlueAlgae
Família/Amigos
Recomendações por Interação
“Livros que você
pode gostar
são …”
Saída:
Entrada:
O Que eu
deveria ler ?
Avalie alguns livros
Netflix- 2/3 dos filmes alugados vêm de recomendação
Google News- 38% das notícias mais clicadas vêm de recomendação
Amazon- 38% das vendas vêm de recomendação
Fonte: Celma & Lamere, ISMIR 2007
O que os sistemas de recomendação realmente fazem ?
1. Prediz o quanto você pode gostar de um certo produto ou serviço
2. Sugere um lista de N items ordenada de acordo com seu interese
3. Sugere uma lista de N usuários ordernada para um produto/serviço
4. Explica a você o porque esses items foram recomendados
5. Ajusta a predição e a recomendação baseado em seu feedback e de outros.
Filtragem baseada por Conteúdo
O Vento Levou
Duro de Matar
Similar
Armagedon ToyStore
Marcel
gostarecomenda
Items
Usuários
Filtragem Colaborativa
O Vento Levou
Thor
Similar
Armagedon ToyStore
Marcel
gosta recomenda
Items
Rafael Amanda Usuários
Orange“Data Mining Tool For Python”
http://orange.biolab.si/
Crab“Recommendation Engine For Python”
https://github.com/muricoca/crab
userID = 'Maria Gabriela'recSys = UserRecommender(self.model,self.similarity,self.neighbor,False)recSys.recommend(userID,4)
Crab
Scikits-learn
http://scikit-learn.sourceforge.net/
“Machine Learning in Python”
>>> 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.])
PyML
http://pyml.sourceforge.net/
“Machine Learning in Python”
PyML is focused on kernel-methods for classification and regression, including Support Vector Machines (SVM).
Muito Legal !!! -- > Feature selection
>>>fromPyML.classifiers.compositeimportFeatureSelect>>>featureSelector=FeatureSelect(svm.SVM(),featsel.RFE())
milk
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)
“Machine Learning Toolkit for Python”
http://luispedro.org/software/milk
PyBrain
http://pybrain.org/
“The Python Machine Learning Toolkit”
>>> from pybrain.tools.shortcuts import buildNetwork>>> n = buildNetwork(2, 3, 1, fast=True)>>> n.activate((2, 3))array([-0.20781205])
Python-LibSvm
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
>>fromlibsvmimport*>>prob=svm_problem([1,‐1],[[1,0,1],[‐1,0,‐1]])>>param=svm_parameter(kernel_type=LINEAR,C=10)##trainingthemodel>>m=svm_model(prob,param)#testingthemodel>>m.predict([1,1,1])
Python-LibSvmlanguagegemstone
?
Acha um hiperplano que divide o espaço dos documentos em dois
Support Vector Machines
PyEvolve
Criado por um brasileiro!
from pyevolve import G1DListfrom pyevolve import GSimpleGA
def eval_func(chromosome): score = 0.0 # iterate over the chromosome for value in chromosome: if value==0: score += 1 return score
genome = G1DList.G1DList(20)genome.evaluator.set(eval_func)ga = GSimpleGA.GSimpleGA(genome)ga.evolve(freq_stats=10)print ga.bestIndividual()
Algoritmos Genéticos com Python
http://pyevolve.sourceforge.net
Processo Evolutivo“As espécies evoluem pelo principio da seleção natural e sobrevivência do mais apto.”
Computação Distribuída
https://github.com/Yelp/mrjob
Processamento de Textos
NLTK
http://www.nltk.org/
>>> 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')]
API’s prontas!
http://www.alchemyapi.com/
Concept Tagging
http://recdaynow.appspot.com
Name Entity ExtractionLanguage Detection
http://code.google.com/apis/predict/
REST API’s
Asynchoronous training
Data on the fly
Support on App Engine
Visualização
Ubigraph 3D
http://networkx.lanl.gov/
Mapa dos concurseiros no Brasil (Atepassar)
http://aimotion.blogspot.com/2011/03/atepassar-social-network-friendship.html
Canivetes essenciais!
http://matplotlib.sourceforge.net/
http://www.scipy.org/
http://numpy.scipy.org/
>>> from numpy import *>>> multiply(array([3,6]), array([4,7]))array([12, 42])
Classe realClasse real
p n
Classe predita
p Verdadeiro Positivo
FalsoPositivoClasse
preditan Falso
NegativoVerdadeiro
Negativo
Curva ROChttp://code.google.com/p/pyplotmining/
Livros e Referências
http://aimotion.blogspot.com/
Conferência de Python em Computação Científica
http://conference.scipy.org/scipy2011/
Python e Aprendizagem de Máquina
A cobra também é inteligente!
Marcel P. [email protected]@recday.com