Вы находитесь на странице: 1из 68

Python e Aprendizagem

de Mquina
A cobra tambm inteligente!

Marcel P. Caraciolo
@marcelcaraciolo
Quem Marcel ?
Marcel Pinheiro Caraciolo - @marcelcaraciolo

Sergipano, porm Recifense.


Mestrando em Cincia da Computao no CIN/UFPE na rea de minerao de dados
Diretor de Pesquisa e Desenvolvimento na Orygens
Membro e Moderador da Cella de Usurios Python de Pernambuco (PUG-PE)

Minhas reas de interesse: Computao mvel e Computao 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)


Aprendizagem de mquina _______
Falem !
Aprendizagem de Mquina um sub-campo da inteligncia artificial
dedicado ao desenvolvimento de tcnicas que permitam o
computador aprender baseado em dados empricos.
Dados de Sada Algoritmo Dados de Entrada

Processamento

Machine Learning e I.A na Academia


e como geralmente ensinado...
Dados de Sada Algoritmo Dados de Entrada

Processamento

Machine Learning e I.A no mundo real


ou o que as tendncias vem mostrando...
Dados de Sada Algoritmo Dados de Entrada

Processamento
Processamento
Processamento
Processamento
Processamento

Processamento sempre uma limitao


que muitas vezes na academia se abstraem.
Dados de Sada Algoritmo Dados
Dadosde
deEntrada
Entrada
Dados
Dadosde Entrada
Dados deEntrada
de Entrada

Processamento
Processamento
Processamento
Processamento
Processamento

Dados, geralmente no so escarsos.


Muitas fontes de dados espalhados por a e poucos sabem...
?
Processamento
Processamento Dados
Dadosde
deEntrada
Entrada
Processamento
Processamento Dados
Dadosde Entrada
Processamento Dados deEntrada
de Entrada

Mais dados, mais problemas ...


Requer mais processamento e como eliminar ?
Dados de Sada Algoritmo Dados
Dadosde
deEntrada
Entrada
Dados
Dadosde Entrada
Dados deEntrada
de Entrada

Processamento
Processamento
Processamento
Processamento
Processamento

O Algoritmo ainda muito importante!


Se conseguirmos identificar os padres relevantes dentro de uma
base de dados ento podemos representar uma larga base com
poucos bits

Aprendizagem de Mquina

Se ns podemos representar nossos dados com poucos bits


(comprimir nossos dados) ento realmente detectamos os conceitos
mais relevantes!

Aprendizado vs Compresso
Sem reforo Com reforo

Aprendizado Supervisionado
Aprendizado No Supervisionado
De onde vem os dados ?
http://archive.ics.uci.edu/ml/

Repositrios de Dados
UCI, MovieLens, AWS, KDD, etc.
WEB
1.0 2.0

Fonte de Informao Fluxo Contnuo de Informao


VIVIEncontro
Encontrodo
doPUG-PE
PUG-PE
Intelligence from
Mining Data

User
User
User User
User
Um usurio influencia outros
por resenhas, notas, recomendaes e blogs

Um usurio influenciado por outros


por resenhas, notas, recomendaes e blogs
reconhecimento de faces
classificao
identificao de escrita

anlise de sentimentos recomendaes

traduo Inteligncia Coletiva


otimizao
Sua aplicao
busca
previso
deteco de fraudes
diagnsticos
processamento de linguagem natural
agrupamentos filtragem
Minha rea de pesquisa
Sistemas de Recomendao
WEB SITES
WEB APPLICATIONS
WEB SERVICES
3.0 SEMANTIC WEB

USERS
antes...
VIVIEncontro
Encontrodo
doPUG-PE
PUG-PE
Atualmente
estamos sobrecarregados
de informaes
muitas vezes inteis
s vezes
procuramos
isso...
e encontramos isso!
google?
google?

midias sociais?
eeeeuuuu...

google?

midias sociais?
A lot of times, people dont 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
Sistemas de Recomendao
Recomendaes Sociais

Famlia/Amigos
Amigos/ Famlia
O Que eu
deveria ler ?

Ref: Flickr-BlueAlgae

Eu acho que
voc deveria ler
Ref: Flickr photostream: jefield estes livros.
Recomendaes por Interao

Entrada: Avalie alguns livros

O Que eu
deveria ler ?

Sada:
Livros que voc
pode gostar
so
Sistemas desenhados para sugerir algo para mim do meu
interesse!
Por que Recomendao ?
Netflix
- 2/3 dos filmes alugados vm de recomendao

Google News
- 38% das notcias mais clicadas vm de recomendao

Amazon
- 38% das vendas vm de recomendao

Fonte: Celma & Lamere, ISMIR 2007


E como funciona a
recomendao ?
O que os sistemas de recomendao
realmente fazem ?
1. Prediz o quanto voc pode gostar de um certo
produto ou servio
2. Sugere um lista de N items ordenada de acordo
com seu interese
3. Sugere uma lista de N usurios ordernada
para um produto/servio
4. Explica a voc o porque esses items foram
recomendados
5. Ajusta a predio e a recomendao baseado em
seu feedback e de outros.
Filtragem baseada por Contedo

Similar

Duro de O Vento Toy


Armagedon Items
Matar Levou Store

recomenda
gosta

Marcel Usurios
Filtragem Colaborativa

O Vento Toy
Thor Armagedon Items
Levou Store

gosta
recomenda

Marcel Rafael Amanda Usurios

Similar
Frameworks em Python
http://orange.biolab.si/
Orange
Data Mining Tool For Python
Crab

userID = 'Maria Gabriela'


recSys = UserRecommender(self.model,self.similarity,self.neighbor,False)
recSys.recommend(userID,4)

https://github.com/muricoca/crab

Crab
Recommendation Engine For 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.])

http://scikit-learn.sourceforge.net/

Scikits-learn
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())

http://pyml.sourceforge.net/

PyML
Machine Learning in Python
import numpy as np
import milk
features = np.random.rand(100,10)
labels = np.zeros(100)
features[50:] += .5
labels[50:] = 1
learner = 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 += .5
print model.apply(example2)

http://luispedro.org/software/milk

milk
Machine Learning Toolkit for Python
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
>>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])

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Python-LibSvm
Acha um hiperplano que divide o espao dos documentos em dois

language
Support Vector Machines Python-LibSvm
gemstone
http://pyevolve.sourceforge.net
Criado por um brasileiro!

from pyevolve import G1DList


from 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()

PyEvolve
Algoritmos Genticos com Python
Processo Evolutivo
As espcies evoluem pelo principio da seleo natural e sobrevivncia do mais apto.
https://github.com/Yelp/mrjob
Computao Distribuda
>>> 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
Concept Tagging
Name Entity Extraction
Language Detection

http://www.alchemyapi.com/

REST APIs

Asynchoronous training

Data on the fly

http://code.google.com/apis/predict/ Support on App Engine

http://recdaynow.appspot.com

APIs prontas!
Ubigraph 3D

http://networkx.lanl.gov/

Visualizao
Mapa dos concurseiros no Brasil (Atepassar)

http://aimotion.blogspot.com/2011/03/atepassar-social-network-friendship.html
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!
Anlise
Analisar um classificador
somente por sua acurcia
errado
Classe real

p n
Verdadeiro Falso
p
Classe Positivo Positivo
predita Falso Verdadeiro
n
Negativo Negativo
Acurcia = (VP + VN) / (VP + VN + FP + FN)
A acurcia esconde potenciais
falso positivos ou falso
negativos
Use precision e recall
Recomendaes Precision -Recall Diagram
Curva ROC
http://code.google.com/p/pyplotmining/
http://aimotion.blogspot.com/

Livros e Referncias
http://conference.scipy.org/scipy2011/

Conferncia de Python em Computao Cientfica


Python e Aprendizagem
de Mquina
A cobra tambm inteligente!

Marcel P. Caraciolo
marcel@orygens.com
marcel@recday.com

Вам также может понравиться