python e aprendizagem de máquina (inteligência artificial)

68
Python e Aprendizagem de Máquina A cobra também é inteligente! Marcel P. Caraciolo @marcelcaraciolo

Upload: marcel-caraciolo

Post on 18-Dec-2014

6.506 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Python e Aprendizagem de Máquina

A cobra também é inteligente!

Marcel P. Caraciolo@marcelcaraciolo

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 é _______Falem !

“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

Aprendizado Supervisionado

Sem reforço Com reforço

Aprendizado Não Supervisionado

De onde vem os dados ?

Repositórios de DadosUCI, MovieLens, AWS, KDD, etc.

http://archive.ics.uci.edu/ml/

WEBWEB

VI Encontro do PUG-PEVI Encontro do PUG-PE

1.0 2.0

Fonte de Informação Fluxo Contínuo de Informação

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

Minha área de pesquisaSistemas de Recomendação

VI Encontro do PUG-PEVI Encontro do PUG-PE

3.0

USERS

WEB SITESWEB APPLICATIONS

WEB SERVICESSEMANTIC WEB

antes...Friday, October 1, 2010

!"#$%&'()$*+$,-$&.#'/0'&%)#)$1(,0#

Atualmente

estamos sobrecarregados de informações

Friday, October 1, 2010

muitas vezes inúteis

Friday, October 1, 2010

às vezes procuramos

isso...

Friday, October 1, 2010

e encontramos isso!

Friday, October 1, 2010

google?

Friday, October 1, 2010

google?

midias sociais?

Friday, October 1, 2010

google?

midias sociais?

eeeeuuuu...

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

Sistemas de Recomendação Friday, October 1, 2010

Sistemas de Recomendação

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

Sistemas desenhados para sugerir algo para mim do meu interesse!

Por que Recomendação ?

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

E como funciona a recomendação ?

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

Frameworks em Python

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')]

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])

Análise

Analisar um classificador somente por sua acurácia é

errado

Classe realClasse real

p n

Classe predita

p Verdadeiro Positivo

FalsoPositivoClasse

preditan Falso

NegativoVerdadeiro

Negativo

Acurácia = (VP + VN) / (VP + VN + FP + FN)

A acurácia esconde potenciais falso positivos ou falso

negativos

Use precision e recall

Recomendações Precision -Recall Diagram

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