scikit-learn: Aprendizado de máquina 101 com Python

Documentos relacionados
UNIVERSIDADE DO ESTADO DE MATO GROSSO - UNEMAT. Faculdade de Ciências Exatas e Tecnológicas FACET / Sinop Curso de Bacharelado em Engenharia Elétrica

INF 1771 Inteligência Artificial

Redes Neurais Artificiais

INF 1771 Inteligência Artificial

Classificação de Padrões. Abordagem prática com Redes Neurais Artificiais

Redes Neurais (Inteligência Artificial)

Aprendizado de Máquina (Machine Learning)

JAI 6 - Deep Learning Teoria e Prática

Mineração de Dados - II

Exame de Aprendizagem Automática

Classificadores Lineares

Redes Neurais Artificiais. Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 9)

Introdução à Mineração de Dados com Aplicações em Ciências Espaciais

Aprendizado de Máquina (Machine Learning)

Inteligência Artificial

Exame de Aprendizagem Automática

SUPPORT VECTOR MACHINE - SVM

Informática Parte 19 Prof. Márcio Hunecke

Informática. Aprendizado de Máquina. Professor Márcio Hunecke.

Laboratório Como usar algoritmos de aprendizado de máquina de regressão em Weka

Redes Neurais Artificiais

Aprendizado de Máquina

Classificação Linear. André Tavares da Silva.

MLaaS com Azure: Que tipo de flor de íris é essa?

Aprendizado de Máquina

Redes Neurais Convolucionais

Redes Neurais Artificial. Prática. Inteligência Artificial

Aprendizado de Máquinas. Multi-Layer Perceptron (MLP)

ANÁLISE DE BIG DATA VIA MACHINE LEARNING E INTELIGÊNCIA ARTIFICIAL

Implementação de Kernel Customizado Aplicado à Análise de Sentimentos em Resenhas de Filmes

Aprendizado de Máquina (Machine Learning)

1 o Teste de Aprendizagem Automática

Uma Introdução a SVM Support Vector Machines. Obs: Baseada nos slides de Martin Law

Tópicos Especiais: Inteligência Artificial. Deep Learning

Redes Neurais Artificiais

Redes Neurais Artificiais - Introdução. Visão Computacional

INF 1771 Inteligência Artificial

Thiago Zavaschi Orientador: Alessandro Koerich Programa de Pós-Graduação em Informática (PPGIa) Pontifícia Universidade

Redes Neurais Convolucionais

Regressão Linear. Fabrício Olivetti de França. Universidade Federal do ABC

Aprendizagem de Máquina

Tópicos Especiais: Inteligência Artificial REDES NEURAIS

Aprendizado de Máquina

Roberto Lotufo Big Data Brasil São Paulo, 23 de junho de 2018

Introdução ao Reconhecimento. Prof. Dr. Geraldo Braz Junior

Inteligência Artificial Redes Neurais

UNIVERSIDADE DO ESTADO DE MATO GROSSO - UNEMAT. Faculdade de Ciências Exatas e Tecnológicas FACET / Sinop Curso de Bacharelado em Engenharia Elétrica

Aprendizado de Máquina Introdução às Redes Neurais Artificiais

4 Construção dos Classificadores

Aprendizado de Máquina

Multiple Layer Perceptron

Rede RBF (Radial Basis Function)

Aprendizado de Máquina

Aprendizado de Máquina

6. QUADRIMESTRE IDEAL 7. NÍVEL Graduação 8. Nº. MÁXIMO DE ALUNOS POR TURMA

Descoberta de conhecimento em redes sociais e bases de dados públicas

Aplicação de Aprendizado de Máquina para Predição de Prioridade em Gestão de Incidentes. Lucas Alves Moreira de Souza

Por que Redes Neurais?

Agregação de Algoritmos de Aprendizado de Máquina (AM) Professor: Eduardo R. Hruschka Estagiário PAE: Luiz F. S. Coletta

Aprendizado de Máquina

Redes Neurais no WEKA

Aprendizado de Máquina Aula 1 - Introdução

3 Redes Neurais Artificiais

Redes Neurais Artificial. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Estado da Arte da Área de Aprendizado de Máquina em Neuroimagem

Profs.: Eduardo Vargas Ferreira Walmes Marques Zeviani

Redes Neurais (Inteligência Artificial)

Transcrição:

scikit-learn: Aprendizado de máquina 101 com Python Luciana Fujii Campus Party BH 2016 1 / 30

Introdução Aprendizado de máquina Aprendizado de máquina é o campo da ciência da computação que dá aos computadores a abilidade de aprender sem ser explicitamente programado. 2 / 30

Introdução Aprendizado de máquina Usado em tarefas em que desenvolver explicitamente um algoritmo é inviável: Detecção de spam OCR Visão computacional Carros auto dirigíveis... 3 / 30

Introdução scikit-learn Python: rápido desenvolvimento Baseada em NumPy e SciPy Software Livre Fácil de instalar Não usa GPU 4 / 30

Introdução Set Up Instalação: numpy scikit-learn scipy 5 / 30

Datasets Standard datasets A primeira coisa que precisamos pra aprender alguma coisa: dados scikit-learn tem alguns datasets exemplo que podemos usar 6 / 30

Datasets Standard datasets >>> from sklearn import datasets >>> iris = datasets.load iris() >>> digits = datasets.load digits() >>> print digits.data >>> print digits.target >>> print digits.data.shape 7 / 30

Aprendizado e predição Aprendizado e predição Estimator é um objeto que implementa: fit: treina o modelo predict: depois do treino, faz a predição do resultado para uma entrada Exemplo de estimators: Linear model: Perceptron, Logistic Regression, Stochastic Gradient Descent, Passive Aggressive Classifier... Support Vector Machines: SVC, SVR... Nearest Neighbors Gaussian Processes Naive Bayes K-means... 8 / 30

Aprendizado e predição Um pouco de teoria Aprendizado de máquina tem diferentes abordagens: Aprendizado supervisionado Aprendizado não-supervisionado Aprendizado por reforço 9 / 30

Aprendizado supervisionado Perceptron 10 / 30

Aprendizado supervisionado Perceptron Classifica dados linearmente separáveis, encontrando uma reta que separa os dados >>> from sklearn import linear model >>> clf = linear model.perceptron.perceptron() >>> clf >>> clf.fit(digits.data[:-5], digits.target[:-5]) >>> clf.predict(digits.data[-5:]) >>> print digits.target[-5] 11 / 30

Aprendizado supervisionado Support Vector Machines - SVM 12 / 30

Aprendizado supervisionado Support Vector Machines - SVM Também encontra uma reta que separa dados linearmente separáveis, mas encontra a melhor reta Código muito similar ao do perceptron: >>> from sklearn import svm >>> clf = svm.linearsvc() >>> clf >>> clf.fit(digits.data[:-5], digits.target[:-5]) >>> clf.predict(digits.data[-5:]) >>> print digits.target[-5] 13 / 30

Aprendizado supervisionado Support Vector Machines - SVM 14 / 30

Aprendizado supervisionado Support Vector Machines - SVM Projeção: z = x 2 + y 2 15 / 30

Aprendizado supervisionado Support Vector Machines - SVM Kernel: transformação do dado (simplicação) Nesse caso: Z = X 2 + Y 2 Kernels na class SVC do scikit-learn: Linear Polynomial RBF Sigmoid Um método que você implementar 16 / 30

Aprendizado Supervisionado - Redes Neurais Redes Neurais - Multi-layer Perceptrons 17 / 30

Aprendizado Supervisionado - Redes Neurais Redes Neurais - MLP Criando um classificador >>> from sklearn.neural network import MLPClassifier >>> clf = MLPClassifier() >>> clf.fit(digits.data[:-5],digits.target[:-5]) >>> clf.predict(digits.data[-5:]) >>> clf MLPClassifier(activation= relu, alpha=0.0001,... ) 18 / 30

Aprendizado Supervisionado - Redes Neurais Redes Neurais - MLP Um Multi-layer Perceptron tem muitos parâmetros: hidden layer sizes: tupla (200,100,80)- 3 camadas activation: relu, logistic, tanh... solver: lbfgs, sgd, adam (método de atualizar parâmetros) alpha: termo de regularização learning rate: constant, adaptive... learning rate init... 19 / 30

Aprendizado Supervisionado - Redes Neurais Feature Scaling Redes neurais são sensíveis ao tamanho das características Resultados são melhores se as entradas são redimensionadas A entrada de teste também tem que ser redimensionada Métodos comuns: Redimensionar a entrada para ter valores entre -1 e 1 (ou 0 e 1) Padronizar entrada para ter média 0 e variância 1 scikit-learn tem StandardScaler 20 / 30

Aprendizado Supervisionado - Redes Neurais Feature Scaling Scaling between 1 and -1: >>> import numpy as np >>> X /= np.max(x) * 1.0 Standardizing: >>> from sklearn.preprocessing import StandardScaler >>> scaler = StandardScaler() >>> # Don t cheat - fit only on training data >>> scaler.fit(x train) >>> X train = scaler.transform(x train) >>> # apply same transformation to test data >>> X test = scaler.transform(x test) 21 / 30

Aprendizado não-supervisionado Clusterização Método não-supervisionado mais comum. 22 / 30

Aprendizado não-supervisionado Clusterização >>> from sklearn.cluster import Kmeans >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]) >>> clf = Kmeans(n clusters=2) >>> clf.fit(x) >>> # Check the clusters >>> clf.labels >>> # Get the cluster for new datapoints >>> clf.predict([[0,0]]) 23 / 30

Avaliação do modelo e validação cruzada Conjunto de treino e teste Nós devemos utilizar dados de teste que nós não utilizamos pra treinar train test split divide seus dados entre conjunto de treinamento e conjunto de teste >>> import numpy as np >>> from sklearn.model selection import train test split >>> X train, X test, y train, y test = train test split(iris.data, iris.target, test size=0.4, random state=0) >>> X train.shape, y train.shape ((90, 4), (90,)) >>> X test.shape, y test.shape ((60, 4), (60,)) 24 / 30

Avaliação do modelo e validação cruzada Validação cruzada Para escolher os hiper parâmetros usando o conjunto de test, nós corremos o risco de overfitting dos hiper parâmetros para o conjunto de teste. Alternativas: Conjunto de validação: separar o conjunto de treinamento entre validação e treino Validação cruzada 25 / 30

Avaliação do modelo e validação cruzada Validação cruzada Conjunto de validação: Problema de reduzir demais o seu conjunto de treino Escolher os melhores hiper parâmetros para o conjunto de validação, não necessariamente generalizando Validação cruzada: Mantém o conjunto de teste Separar o conjunto de treino em k subconjuntos Treinar sem usar um dos subconjuntos e validar nesse subconjunto Repetir mudando o subconjunto usado pra validação para cada k subconjuntos O desempenho é medido na média dos valores conseguidos Pode se tornar caro computacionalmente 26 / 30

Avaliação do modelo e validação cruzada cross val score >>> from sklearn.model selection import cross val score >>> X train, X test, y train, y test = train test split(iris.data, iris.target, test size=0.2) >>> clf = svm.svc(kernel= linear, C=1) >>> scores = cross val score(clf, X train, y train, cv=5) >>> scores >>> print("accuracy: %0.2f (+/- %0.2f)"% (scores.mean(), scores.std() * 2)) 27 / 30

Escolha do método Escolhendo um estimator 28 / 30

Escolha do método Links úteis http://scikit-learn.org/ http://scikit-learn.org/stable/tutorial/machine learning map/ http://cs.stanford.edu/people/karpathy/convnetjs/ 29 / 30

Luciana Fujii - luciana@fujii.eti.br 30 / 30