Aprendizado de Máquinas
Classificadores Lineares
David Menotti, Ph.D.web.inf.ufpr.br/menotti
Universidade Federal do Paraná (UFPR)Departamento de Informática
2
Objetivos
• Introduzir o conceito de classificação linear.– LDA
– Funções Discriminantes Lineares• Perceptron
• SVM
3
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.
4
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.
Ruim Boa
5
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.
6
Análise Discriminante LinearLDA (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 ruim Reta boa
7
LDA
8
LDA
9
LDA
• Projetar amostras
x = w x
• Maximizar J(w), qual w ?
J(w) = | m1 - m2 | / ( s12 + s2
2 )
J(w) = ( wt SB w ) / ( wt S
w w )
d J(w) / d w = 0 => SB w - S
w λw = 0
=> SB S
w -1 w - λw = 0
=> w = SW-1 ( m1 – m2 )
10
LDA
• Diferença entre PCA e LDA quando aplicados sobre os mesmos dados
11
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.
12
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,μ.
CentroideClasse -1
CentroideClasse +1
Centroidegeral
13
LDA Tutorial
• Calcular as médias de cada classe e a total.
14
LDA Tutorial
• Calcular o espalhamento de cada classe
Si = SUM{(m-xi)(m-xi)t}
• Calcular o espalhamento entre classes (within class)
SW = S1 + S2
15
LDA Tutorial
• Calcular a inversa de SW
– Custo???
• Finalmente, o vetor projeçãow = SW
-1 (m1 – m2)
• Reprojetando os vetores sobre wx1’ = ( x1 w ) w t
x2’ = ( x2 w ) w t
16
LDA Tutorial
• Para visualizar a transformação, basta aplicar a função discriminante a todos os dados
17
LDA Tutorial
Taxa de Reconhecimento = 99%
18
Exercício
• Gere duas distribuições
• Classifique os dados usado LDA
• Verifique o impacto da sobreposição das distribuições.
19
Tutorial 1/2• x1 = [ 2.95 6.63; 2.53 7.79; 3.57 5.65; 3.16 5.47];• x2 = [2.58 4.46; 2.16 6.22; 3.27 3.52];• • 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)';
20
Tutorial 2/2• figure,hold on• axis([0 8 0 8]);• 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');
21
Tutorial 2 1/3• http://www.eeprogrammer.com/tutorials/Matlab/discriminant_analyses.html
• 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<=length(Group_X) All_data_label = [All_data_label; 'X']; else All_data_label = [All_data_label; 'Y']; endend
testing_ind = [];for i = 1:length(All_data) if rand>0.8 testing_ind = [testing_ind, i]; endendtraining_ind = setxor(1:length(All_data), testing_ind);
22
Tutorial 2 2/3• http://www.eeprogrammer.com/tutorials/Matlab/discriminant_analyses.html
• [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 = @(x,y) 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 = @(x,y) 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
23
Tutorial 2 3/3• http://www.eeprogrammer.com/tutorials/Matlab/discriminant_analyses.html
• 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 endendplot(All_data(Group_X_testing,1),All_data(Group_X_testing,2),'g.');hold onplot(All_data(Group_Y_testing,1),All_data(Group_Y_testing,2),'r.');
24
Funções Discriminante Lineares
• Em geral, uma função discriminante linear pode ser escrita na forma
• w é conhecido como o vetor dos pesos e w0 representa o bias
g( x )=wT x+w0
25
Funções Discriminante Lineares
• é um hiperplano– Um hiperplano é
• Um ponto em 1D
• Uma reta em 2D
• Um plano em 3D
26
Funções Discriminante Lineares
• Para duas dimensões, w determina a orientação do hiperplano enquanto w0 representa o deslocamento com relação a origem
27
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 neuronal 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.
28
Perceptronx1
x2
xn
w1
w2
wn
w0
∑y
A função de ativação normalmenteutilizada no perceptron é ahardlim (threshold)
f ( x )={1 x≥00 x<0 }
ϕ ( .)
y=ϕ (∑ w i×x i+w0 )
A função de ativação é responsável por determinar a forma e a intensidadede alteração dos valores transmitido de um neurônio a outro.
29
Perceptron:Algoritmo de Aprendizagem
1. Iniciar os pesos e bias com valores pequenos, geralmente no intervalo [0.3-0.8]
2. Aplicar um padrão de entrada com seu respectivo valor desejado de saída (ti) e verificar a saída y da rede.
3. Calcular o erro da saída4. Se e=0, volta ao passo 25. Se e<>0,
1. Atualizar pesos2. Atualizar o bias
6. Voltar ao passo 2• Critério de parada: Todos os padrões classificados
corretamente.
w i=wiold+e×x i
b=bold+e
e=t j−a
30
Perceptron: Exemplo
• Considere o seguinte conjunto de aprendizagem.
2 2 0
-2 -2 1
-2 2 0
-1 1 1
X t
Nesse tipo de algoritmo é importante que os dados sejamapresentados ao algoritmo de treinamento de maneiraintercalada (shuffle)
31
Perceptron: Exemplo
• Considere o seguinte conjunto de aprendizagem.
2 2 0
-2 -2 1
-2 2 0
-1 1 1
X t
Nesse tipo de algoritmo é importante que os dados sejamapresentados ao algoritmo de treinamento de maneiraintercalada (shuffle)
32
Perceptron: Exemplo
• Nesse exemplo, vamos inicializar os pesos e bias com 0, ou seja, w =(0,0) e b = 0
y=hard lim ([0,0 ][22 ]+0)=hard lim (0 )=1
Calcula-se o erroe=t i− y=0−1=−1
Como o erro é diferente de 0, atualizam se os pesos e o bias
W=W old+e×x i=[ 0,0 ]+(−1 [2,2 ])=[−2,−2 ]
b=bold+e= 0+(−1)=−1
Apresentando o primeiro padrão (x1) a rede:
33
y=hard lim ([−2,−2 ][−2−2 ]+(−1))=hard lim (7 )=1
Calcula-se o erroe=t i− y=1−1=0
W=W old+e×x i=[−2,−2 ]+(1[−1,1 ] )=[−3,−1 ]
b=bold+e=−1+1=0
Apresentando o segundo padrão (x2) a rede:
Como o erro é 0, os pesos e o bias não precisam ser atualizados.
y=hard lim ([−2,−2 ][−22 ]+(−1))=hard lim (−1)=0
Calcula-se o erroe=t i− y=0−0=0
Apresentando o terceiro padrão (x3) a rede:
Como o erro é 0, os pesos e o bias não precisam ser atualizados.
y=hard lim ([−2,−2 ][−11 ]+(−1 ))=hard lim (−1)=0
Calcula-se o erroe=t i− y=1−0=1
Apresentando o quarto padrão (x4) a rede:
34
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.
35
Determinando a fronteira
• No caso bi-dimensional, a fronteira de decisão pode ser facilmente encontrada usando a seguinte equação
y=−W 1×x−b
W 2
Considere o seguinte exemplo, w = [1.41, 1.41], b = 0.354Escolha duas coordenadas x, para então encontrar os y’s correspondentes
x=[-3,3]
Efeito do bias diferentede zero.
Para x = -3, y = 2.74Para x = 3, y = -3.25
36
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.
37
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
38
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.
39
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.
40
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 é iguala distância da margem para o exemplo da classe negativa.
41
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.
42
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,
– xi e yi são os vetores de características e o label da classe respectivamente.
f ( x )=∑i
α i y i K ( x,xi)+b
43
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” linearmenteseparáveis
44
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.
45
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.
x i ϕ ( x i )
Espaço deentrada
Espaço decaracterísticas
46
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?
ϕ ( x )=( x,x 2)
1D 2D
47
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
ϕ ( x i )
48
Exemplo
49
Exemplo
50
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.
51
Exemplos de Kernel
52
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
53
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á aonó principal da árvore.
Número de classificadores para q classes = q(q-1)/2.
54
Um-Contra-Todos
• Aqui, o número de classificadores é igual a q.
• Treina-se um classificador ci 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.
55
Exercício
• Utilizar a ferramente LibSVM para realizar classificação usando SVM.