Reconhecimento de Padrões Classificadores Lineares David Menotti, Ph.D. www.decom.ufop.br/menotti Universidade Federal de Ouro Preto (UFOP) Programa de.

Slides:



Advertisements
Apresentações semelhantes
AJUSTE DE CURVAS 6.1 Introdução 6.2 Método dos quadrados mínimos
Advertisements

ANÁLISE DISCRIMINANTE LIG, 13 de novembro de 2008.
ANÁLISE DISCRIMINANTE
Redes Neurais Artificiais (RNA): Perceptron
Redes Neurais Artificiais (RNA): Aprendizado
Aspectos de Implementação do Algoritmo Backpropagation
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 11.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 10.
Problemas de Forma Não-padrão
PERCEPTRON (CONTINUAÇÃO)
Adaptive Resonance Theory Carpenter & Grossberg
AULA 03 PERCEPTRON SIMPLES.
AULA04 PERCEPTRON MULTI-CAMADAS MULTI-LAYER PERCEPTRON (MLP)
Perceptron Simples Algoritmo do Bolso com catraca
Algoritmo de Khachiyan Prof. Júlio Cesar Nievola.
Programação Linear Método Simplex
Análise de regressão linear simples: abordagem matricial
Curso Introdução às Redes Neuronais Parte 2 Prof. Dr. rer.nat. Aldo von Wangenheim.
Análise Discriminante
SVM Support Vector Machines
Reconhecimento de Padrões Tipos de Aprendizagem
Reconhecimento de Padrões Classificadores Lineares
Reconhecimento de Padrões Segmentação
Reconhecimento de Padrões Seleção de Características
Reconhecimento de Padrões Receiver Operating Characteristics (ROC)
Reconhecimento de Padrões EigenFaces
Reconhecimento de Padrões Multi-Layer Perceptron (MLP)
Reconhecimento de Padrões Teoria da Decisão Bayesiana David Menotti, Ph.D. Universidade Federal de Ouro Preto (UFOP) Programa.
Reconhecimento de Padrões Teoria da Decisão Bayesiana
Medida do Tempo de Execução de um Programa
Reconhecimento de Padrões Combinando Classificadores
Reconhecimento de Padrões Dissimilaridade
Universidade Federal de Ouro Preto (UFOP)
Reconhecimento de Padrões PCA David Menotti, Ph.D. Universidade Federal de Ouro Preto (UFOP) Programa de Pós-Graduação em Ciência.
Reconhecimento de Padrões Aprendizagem Supervisionada (KNN)
Reconhecimento de Padrões Principal Component Analysis (PCA) Análise dos Componentes Principais David Menotti, Ph.D. Universidade.
Support Vector Machines (SVM)
FUNÇÃO MODULAR.
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
3 - Equações Lineares de Segunda Ordem
Davyd Bandeira de Melo Um Sistema de Reconhecimento de Comandos de Voz Utilizando a Rede Neural ELM Junho 2011.
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Aprendizado de Máquina
ESTATÍSTICA.
Introdução O que é computação?.
Programação Linear Universidade Federal de Itajubá – UNIFEI
Alexandre Xavier Falcão & David Menotti
Márcia Zanutto Barbosa
K-Means / Clustering.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
MÉTODOS NUMÉRICOS APLICAÇÃO NO MATLAB
INF 1771 – Inteligência Artificial
Aprendizado de Máquina
INF 1771 – Inteligência Artificial
Redes Neuronais/Neurais/ Conexionistas Introdução
Cálculo Numérico / Métodos Numéricos
Support Vector Machine - SVM
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Programação Linear Universidade Federal de Itajubá – UNIFEI
SVMSharp – Uma implementação didática de uma SVM
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Capitulo 5: Simplex Voltando ao exemplo da confecção da D. Maria, e modificando um pouco os valores apenas para facilitar nossos cálculos e o entendimento,
Uma Introdução a SVM Support Vector Machines
Prof. Anne Magály de Paula Canuto
Luana Bezerra Batista Redes Neurais Luana Bezerra Batista
Treinamento Quando são criadas, as RNA ainda não são capazes de resolver os problemas, elas precisam ser treinadas, ensinadas, do mesmo jeito que as pessoas,
FEATURE SELECTION. Introdução  Estudo de metodologias relacionadas a seleção de atributos  Maldição da dimensionalidade  O número de atributos do desenvolvedor.
Detecção de tráfego Skype na Web através de Redes Neurais Artigo Original: Freire, P. E., Ziviani, A., and Salles, R. M. (2008). Detecting skype flows.
Transcrição da apresentação:

Reconhecimento de Padrões Classificadores Lineares David Menotti, Ph.D. Universidade Federal de Ouro Preto (UFOP) Programa de Pós-Graduação em Ciência da Computação (PPGCC)

Objetivos Introduzir o conceito de classificação linear. –LDA –Funções Discriminantes Lineares Perceptron SVM

Introdução Para utilizar uma função discriminante linear (Linear Discriminant Function) precisamos ter: –Dados rotulados (supervisão) –Conhecer o shape da fronteira –Estimar os parâmetros desta fronteira a partir dos dados de treinamento. Nesse caso uma reta.

Introdução: Idéia Básica Suponha duas classes Assuma que elas são linearmente separáveis por uma fronteira l(θ) Otimizar o parâmetro θ para encontrar a melhor fronteira. Como encontrar o parâmetro –Minimizar o erro no treinamento –O ideal é utilizar uma base de validação. RuimBoa

Introdução Funções discriminantes podem ser mais gerais do que lineares Vamos focar em problemas lineares –Mais fácil de compreender –Entender a base da classificação linear Diferentemente de métodos paramétricos, não precisamos conhecer a distribuição dos dados –Podemos dizer que temos uma abordagem não paramétrica.

Análise Discriminante Linear LDA (Linear Discriminant Analysis) LDA tenta encontrar uma transformação linear através da maximização da distância entre- classes e minimização da distância intra-classe. O método tenta encontrar a melhor direção de maneira que quando os dados são projetados em um plano, as classes possam ser separadas. Reta ruimReta boa

LDA

Diferença entre PCA e LDA quando aplicados sobre os mesmos dados

LDA Para um problema linearmente separável, o problema consiste em rotacionar os dados de maneira a maximizar a distância entre as classes e minimizar a distância intra-classe.

LDA Tutorial 1) Para um dado conjunto de dados, calcule os vetores médios de cada classe μ 1,μ 2 (centróides) e o vetor médio geral,μ. Centroide Classe -1 Centroide Classe +1 Centroide geral

LDA Tutorial Calcular as médias de cada classe e a total.

LDA Tutorial Calcular o espalhamento de cada classe S i = SUM{(m-x i )(m-x i ) t } Calcular o espalhamento entre classes (within class) S W = S 1 + S 2 priors

LDA Tutorial Calcular a inversa de S W –Custo??? Finalmente, o vetor projeção w = S W -1 (m 1 – m 2 ) Reprojetando os vetores sobre w x 1 = ( x 1 w ) w t x 2 = ( x 2 w ) w t

LDA Tutorial Para visualizar a transformação, basta aplicar a função discriminante a todos os dados

LDA Tutorial Taxa de Reconhecimento = 99%

Exercício Gere duas distribuições Classifique os dados usado LDA Verifique o impacto da sobreposição das distribuições.

Tutorial 1/2 x1 = [ ; ; ; ]; x2 = [ ; ; ]; m1 = mean(x1);m2 = mean(x2);m = mean([x1;x2]); S1 = (x1-repmat(m1,size(x1,1),1))'*... (x1-repmat(m1,size(x1,1),1)); S2 = (x2-repmat(m2,size(x2,1),1))'*... (x2-repmat(m2,size(x2,1),1)); S = S1 + S2; w=inv(S)*(m1-m2)';

Tutorial 2/2 figure,hold on axis([ ]); plot(x1(:,1),x1(:,2),'bx'); plot(m1(1),m1(2),'bd'); plot(x2(:,1),x2(:,2),'rx'); plot(m2(1),m2(2),'rd'); plot(m(1),m(2),'kd'); plot([w(1) 0],[w(2) 0],'g'); w = w/norm(w); x1l=(x1*w)*w; x2l=(x2*w)*w'; plot(x1l(:,1),x1l(:,2),'bo'); plot(x2l(:,1),x2l(:,2),'ro');

Tutorial 2 1/3 a = 5*[randn(500,1)+5, randn(500,1)+5]; b = 5*[randn(500,1)+5, randn(500,1)-5]; c = 5*[randn(500,1)-5, randn(500,1)+5]; d = 5*[randn(500,1)-5, randn(500,1)-5]; e = 5*[randn(500,1), randn(500,1)]; Group_X = [a;b;c]; Group_Y = [d;e]; All_data = [Group_X; Group_Y]; All_data_label = []; for k = 1:length(All_data) if k 0.8 testing_ind = [testing_ind, i]; end end training_ind = setxor(1:length(All_data), testing_ind);

Tutorial 2 2/3 [ldaClass,err,P,logp,coeff] = classify(All_data(testing_ind,:),... All_data((training_ind),:),All_data_label(training_ind,:),'linear'); [ldaResubCM,grpOrder] = confusionmat(All_data_label(testing_ind,:),ldaClass) K = coeff(1,2).const; L = coeff(1,2).linear; f K + [x y]*L; h2 = ezplot(f,[min(All_data(:,1)) max(All_data(:,1)) min(All_data(:,2)) max(All_data(:,2))]); hold on [ldaClass,err,P,logp,coeff] = classify(All_data(testing_ind,:),... All_data((training_ind),:),All_data_label(training_ind,:),'diagQuadratic'); [ldaResubCM,grpOrder] = confusionmat(All_data_label(testing_ind,:),ldaClass) K = coeff(1,2).const; L = coeff(1,2).linear; Q = coeff(1,2).quadratic; f K + [x y]*L + sum(([x y]*Q).* [x y], 2); h2 = ezplot(f,[min(All_data(:,1)) max(All_data(:,1)) min(All_data(:,2)) max(All_data(:,2))]); hold on

Tutorial 2 3/3 Group_X_testing = []; Group_Y_testing = []; for k = 1:length(All_data) if ~isempty(find(testing_ind==k)) if strcmp(All_data_label(k,:),'X')==1 Group_X_testing = [Group_X_testing,k]; else Group_Y_testing = [Group_Y_testing,k]; end end end plot(All_data(Group_X_testing,1),All_data(Group_X_testing,2),'g.'); hold on plot(All_data(Group_Y_testing,1),All_data(Group_Y_testing,2),'r.');

Funções Discriminante Lineares Em geral, uma função discriminante linear pode ser escrita na forma w é conhecido como o vetor dos pesos e w 0 representa o bias

Funções Discriminante Lineares é um hiperplano –Um hiperplano é Um ponto em 1D Uma reta em 2D Um plano em 3D

Funções Discriminante Lineares Para duas dimensões, w determina a orientação do hiperplano enquanto w 0 representa o deslocamento com relação a origem

Perceptron Um classificador linear bastante simples, mas bastante importante no desenvolvimento das redes neuronais é o Perceptron. –O perceptron é considerado como sendo a primeira e mais primitiva estrutura de rede neuronial artificial. –Concebido por McCulloch and Pits na década de 50. Diferentemente do LDA, o perceptron não transforma os dados para fazer classificação. –Tenta encontrar a melhor fronteira linear que separa os dados.

Perceptron x1x1 x2x2 xnxn w1w1 w2w2 wnwn w0w0 y A função de ativação normalmente utilizada no perceptron é a hardlim (threshold) A função de ativação é responsável por determinar a forma e a intensidade de alteração dos valores transmitido de um neurônio a outro.

Perceptron: Algoritmo de Aprendizagem 1.Iniciar os pesos e bias com valores pequenos, geralmente no intervalo [ ] 2.Aplicar um padrão de entrada com seu respectivo valor desejado de saída (t i ) e verificar a saída y da rede. 3.Calcular o erro da saída 4.Se e=0, volta ao passo 2 5.Se e<>0, 1.Atualizar pesos 2.Atualizar o bias 6.Voltar ao passo 2 Critério de parada: Todos os padrões classificados corretamente.

Perceptron: Exemplo Considere o seguinte conjunto de aprendizagem X t Nesse tipo de algoritmo é importante que os dados sejam apresentados ao algoritmo de treinamento de maneira intercalada (shuffle)

Perceptron: Exemplo Nesse exemplo, vamos inicializar os pesos e bias com 0, ou seja, w =(0,0) e b = 0 Calcula-se o erro Como o erro é diferente de 0, atualizam se os pesos e o bias Apresentando o primeiro padrão (x 1 ) a rede:

Calcula-se o erro Apresentando o segundo padrão (x 2 ) a rede: Como o erro é 0, os pesos e o bias não precisam ser atualizados. Calcula-se o erro Apresentando o terceiro padrão (x 3 ) a rede: Como o erro é 0, os pesos e o bias não precisam ser atualizados. Calcula-se o erro Apresentando o quarto padrão (x 4 ) a rede:

Perceptron: Exemplo O processo acaba quando todos os padrões forem classificados corretamente. Para esse exemplo, os pesos finais são w=[-1,-3] e b = 2.

Determinando a fronteira No caso bi-dimensional, a fronteira de decisão pode ser facilmente encontrada usando a seguinte equação Considere o seguinte exemplo, w = [1.41, 1.41], b = Escolha duas coordenadas x, para então encontrar os ys correspondentes x=[-3,3] Efeito do bias diferente de zero. Para x = -3, y = 2.74 Para x = 3, y = -3.25

SVM Proposto em 79 por Vladimir Vapnik Um dos mais importantes acontecimentos na área de reconhecimento de padrões nos últimos 15 anos. Tem sido largamente utilizado com sucesso para resolver diferentes problemas.

SVM - Introdução Como vimos anteriormente, o perceptron é capaz de construir uma fronteira se os dados forem linearmente separáveis. Mas qual a fronteira que deve ser escolhida?? A B

SVM - Introdução Suponha que a fronteira escolhida é a A. Como ela está bem próxima da classe azul, seu poder de generalização é baixo –Note que um novo elemento (dados não usados no treimamento), bem próximo de um azul será classificado erroneamente.

SVM - Introdução Escolhendo a fronteira B, podemos notar que o poder de generalização é bem melhor. Novos dados são corretamente classificados, pois temos uma fronteira mais distante dos dados de treinamento.

Maximização da Margem O conceito por traz do SVM é a maximização da margem, ou seja, maximizar a distância da margem dos dados de treinamento Distância Pequena Distância Grande Hiperplano ótimo: Distância da margem para o exemplo da classe positiva é igual a distância da margem para o exemplo da classe negativa.

Vetores de Suporte São os exemplos da base de treinamento mais próximos do hiperplano. –O hiperplano é definido unicamente pelos vetores de suporte, os quais são encontrados durante o treinamento. –Minimização de uma função quadrática Alto custo computacional.

SVM: Decisão A função de decisão pode ser descrita pela fórmula acima, na qual, –K é a função de kernel, –α e b são os parâmetros encontrados durante o treinamento, –x i e y i são os vetores de características e o label da classe respectivamente.

Soft Margin Mesmo para dados que não podem ser separados linearmente, o SVM ainda pode ser apropriado. Isso é possível através do uso das variáveis de folga (parâmetro C). Para um bom desempenho, os dados devem ser quase linearmente separáveis

Soft Margin Quanto maior o número de variáveis de folga (C), mais outliers serão descartados. Se C for igual a zero, temos um problema linearmente separável.

Mapeamento não Linear A grande maioria dos problemas reais não são linearmente separáveis. A pergunta então é: Como resolver problemas que não são linearmente separáveis com um classificador linear? Projetar os dados em um espaço onde os dados são linearmente separáveis. Espaço de entrada Espaço de características

Mapeamento não Linear Projetar os dados em outra dimensão usando uma função de kernel (kernel trick). Encontrar um hiperplano que separe os dados nesse espaço. Em qual dimensão esses dados seriam linearmente separáveis? 1D 2D

Kernel Trick A função que projeta o espaço de entrada no espaço de características é conhecida como 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 representa a imagem induzida no espaço de características pelo vetor de entrada

Exemplo

Kernel Trick Permite construir um hiperplano no espaço de característica sem ter que considerar o próprio espaço de características de forma explícita. Toda vez que um produto interno entre vetores deve ser calculado, utiliza-se o kernel. Uma função de kernel deve satisfazer o teorema de Mercer para ser válida.

Exemplos de Kernel

Tomada de Decisão SVM 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 Aqui, 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.

Exercício Utilizar a ferramente LibSVM para realizar classificação usando SVM.