INF 1771 Inteligência Artificial

Documentos relacionados
Redes Neurais (Inteligência Artificial)

INF 1771 Inteligência Artificial

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

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

INF 1771 Inteligência Artificial

Classificadores Lineares

SUPPORT VECTOR MACHINE - SVM

Aprendizado de Máquinas. Classificadores Lineares

Máquinas de suporte vetorial e sua aplicação na detecção de spam

Inteligência Artificial

2. Redes Neurais Artificiais

Aprendizagem de Máquina

Redes Neurais (Inteligência Artificial)

Aprendizagem de Máquina

Aprendizado de Máquina (Machine Learning)

Adriana da Costa F. Chaves. Máquina de Vetor Suporte (SVM) para Classificação Binária 2

Aprendizagem de Máquina

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

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

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

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

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

Informática Parte 19 Prof. Márcio Hunecke

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

Máquina de Vetores Suporte

Rede RBF (Radial Basis Function)

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

Exame de Aprendizagem Automática

Aprendizado de Máquina (Machine Learning)

MCZA Processamento de Linguagem Natural Classificação de textos

Aprendizagem de Máquinas

Mineração de Dados - II

Máquinas de Vetores Suporte. Prof. Dr. Geraldo Braz Junior

Aprendizagem de Máquina

Redes Neurais (Inteligência Artificial)

Aprendizado de Máquina (Machine Learning)

Aprendizado de Máquina

Aprendizado de Máquina

1 o Teste de Aprendizagem Automática

INF 1771 Inteligência Artificial

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

Determinação de vícios refrativos oculares utilizando Support Vector Machines

INF 1771 Inteligência Artificial

Reconhecimento de Padrões aplicado à Bioinformática

Aprendizado de Máquina

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

Aprendizagem de Máquina

Rede Perceptron. Capítulo 3

Redes Neurais Artificiais

Teoria do aprendizado

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

Aprendizagem de Máquina

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

Redes Neurais Artificial

Exame de Aprendizagem Automática

MCZA Processamento de Linguagem Natural Laboratório: Classificação de textos

Kevin Martins Araújo UTILIZAÇÃO DO ALGORITMO DE MÁQUINA DE VETORES DE SUPORTE (SVM) PARA PREDIÇÃO DE DADOS CLIMÁTICOS

Reconhecimento de Padrões

4 Construção dos Classificadores

Identificação de Produtos por Imagem Utilizando o Algoritmo SURF

Transcrição:

INF 1771 Inteligência Artificial Aula 14 Support Vector Machines (SVM) 2016.1 Prof. Augusto Baffa <abaffa@inf.puc-rio.br>

Formas de Aprendizado Aprendizado Supervisionado Árvores de Decisão. K-Nearest Neighbor (KNN). Support Vector Machines (SVM). Redes Neurais. Aprendizado Não Supervisionado Aprendizado Por Reforço

Aprendizado Supervisionado Observa-se alguns pares de exemplos de entrada e saída, de forma a aprender uma função que mapeia a entrada para a saída. Damos ao sistema a resposta correta durante o processo de treinamento. É eficiente pois o sistema pode trabalhar diretamente com informações corretas.

Introdução 1968: base matemática Teorema de Lagrange (Teoria dos Grupos) Proposto em 1992 pelo russo Vladimir Vapnik. [Vapnik et al, 1992] Primeiro artigo [Vapnik et al, 1998] Definição detalhada Última década Série de artigos com aplicações de SVM Série de artigos com otimizações de SVM SMO, por exemplo (weka)

Introdução SVM são utilizadas em diversas áreas: Bioinformática Reconhecimento de assinaturas Classificação de texto e imagens Identificação de spams Reconhecimento de padrões diversos Identificação de dados replicados

Support Vector Machine Consiste em um método de aprendizado que tenta encontrar a maior margem para separar diferentes classes de dados. Pertence à classe de algoritmos de aprendizado supervisionado. A essência do SVM é a construção de um hiperplano ótimo, de modo que ele possa separar diferentes classes de dados com a maior margem possível.

Motivação da SVM Reta / Plano / Hiperplano? Qual o hiperplano ótimo? Menor erro de classificação

Support Vector Machine Como separar essas duas classes? Qual o hiperplano ótimo? Menor erro de classificação Maior margem Distância entre vetores de suporte e o hiperplano

Support Vector Machine Como separar essas duas classes? Existem diversas retas que podem ser traçadas para separar os dados. Qual delas é a melhor opção?

Support Vector Machine Como separar essas duas classes? Existem diversas retas que podem ser traçadas para separar os dados. Qual delas é a melhor opção? Hiperplano ótimo!

Vetores de Suporte Servem para definir qual será o hiperplano. São encontrados durante a fase de treinamento. Os vetores de suporte são os exemplos de treinamento realmente importantes. Os outros exemplos podem ser ignorados.

Support Vector Machine Hiperplano: Espaço 1D = Ponto Espaço 2D = Reta Espaço 3D = Plano

Support Vector Machine A aplicação de um método puramente linear para classificar um conjunto de dados pode sofrer com dois problemas bastante comuns: Outliers Exemplos rotulados erroneamente Mesmo assim o SVM ainda assim pode ser aplicado através do uso do parâmetro C (soft margin - variáveis de folga)

Soft Margin

Support Vector Machine Em alguns problemas não é possível separar as classes linearmente mesmo utilizando a margem de folga. Na realidade, a grande maioria dos problemas reais não são separáveis linearmente. O que fazer?

SVM Não-Linear O que fazer quando os dados não são linearmente separáveis? A abordagem utilizada pelo SVM para resolver esse tipo de problema consistem em mapear os dados para um espaço de dimensão maior: x 2 x x

SVM Não-Linear Os dados são mapeados em um espaço dimensional maior ("espaço de características"). O espaço característica é construído através de uma projeção matemática chamada Kernel Trick (Função Φ).

SVM Não-Linear O espaço de atributos original pode ser mapeado em um espaço de atributos de dimensão maior onde o conjunto de treinamento é linearmente separável: Φ: x φ(x)

Kernel Trick A função que projeta o espaço de entrada no espaço de características é conhecida com Kernel Baseado no teorema de Cover Dados no espaço de entrada são transformados (transf. não linear) para o espaço de características, onde são linearmente separáveis. O vetor ϕ(x i ) representa a imagem induzida no espaço de características pelo vetor de entrada

SVM Não-Linear Exemplo Considerando o seguinte conjunto de exemplos de treinamento que não são linearmente separáveis: -3-2 0 1 2 3 5 X Elevando para uma dimensão linearmente separável (R 1 R 2 ): 25 9 Kernel: φ(x) = (x, x 2 ) 4 1-3 -2 0 1 2 3 5 X

SVM Não-Linear Exemplo A mesma metodologia pode ser aplicada em um espaço 2D de características (R 2 R 3 ). A única diferença é a necessidade de uma nova função de kernel. Um exemplo de função de kernel aplicável nesse caso seria: (x, x ) (z, z, z ) (x, 2x 2 1 2 1 2 3 1 1x2, x 2 2 ) z 2 z 1 z 3

Problema Como escolher a função ϕ(x i ) tal que o espaço de características transformado seja eficiente para classificação e não possua custo computacional alto demais? Funções de Núcleo (kernel) Polinomial Gaussiano Sigmoid Sempre aumentam o número de dimensões Algumas vezes aumentam bastante!

Funções de Kernel Kernel Polinomial Gaussiano Sigmoidal Função i ( x i, x j ) ( ( x x ) k) exp( xi x j tanh( ( x j i x j 2 d ) ) k)

Polynomial Kernel

Support Vector Machine O SVM foi originalmente concebido para lidar com classificações binárias. Entretanto, a maior parte dos problemas reais requerem múltiplas classes. Para se utilizar uma SVM para classificar múltiplas classes é necessário transformar o problema multi-classe em vários problemas da classes binárias Um contra o resto. Pairwise.

Tomada de Decisão SVMs são classificadores binários, ou seja, separam duas classes. Entretanto, a grande maioria dos problemas reais possuem mais que duas classes. Como utilizar os SVMs nesses casos? Pairwise, um-contra-todos

Pairwise Consiste em treinar classificadores pairwise e arranjá-los em uma árvore A competição se dá nos níveis inferiores, e o ganhador chegará ao nó principal da árvore. Número de classificadores para q classes = q(q-1)/2.

Um-Contra-Todos Neste método, o número de classificadores é igual a q. Treina-se um classificador c i para a primeira classe, usando-se como contra exemplos as outras classes, e assim por diante. Para se obter a decisão final pode-se utilizar uma estratégia de votos.

Aplicação Antes de aplicar uma SVM para classificar um conjunto de dados é necessário responder algumas questões: Quais funções de kernel utilizar? Qual o valor do parâmetro C (Soft Margin)? Validações cruzadas (cross validations).

Vantagens e Desvantagens Vantagens: Consegue lidar bem com grandes conjuntos de exemplos. Trata bem dados de alta dimensão. O processo de classificação é rápido. Desvantagens: É necessário definir um bom Kernel. O tempo de treinamento pode ser bem longo dependendo do número de exemplos e dimensionalidade dos dados.

Aplicações Categorização de texto Filtragem de email Web-searching Classificação/Indexação de documento Gestão Eletrônica de Documentos (GED).

Aplicações Imagens Indexação de imagens Aplicações médicas Recuperação de imagens (Image Retrieval)

Aplicações Reconhecimento da escrita. Geralmente com resultados melhores que outros tipos de classificadores. Bio-Informática Categorização automática de genes em DNA. Seqüências de aminoácidos. Classificação de proteínas.

LIBSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm/ http://www.python.org/download/ http://www.gnuplot.info/download.html Disponível em Python, Java e C++ C# via wrapper Bases de Exemplos: http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/ http://archive.ics.uci.edu/ml/datasets.html

LIBSVM Applets para brincar: http://www.csie.ntu.edu.tw/~cjlin/libsvm/ http://neuron.eng.wayne.edu/java/ahk/epm_pp.html

Leitura Complementar Mitchell, T. Machine Learning, McGraw Hill Science/Engineering/Math, 1997. Duda, R., Hart, P., Stork, D., Pattern Classification, John Wiley & Sons, 2000 Cristianini, N., Shawe-Taylor, J., An Introduction to Support Vector Machines and Other Kernelbased Learning Methods, Cambridge University Press, 2000.