Escolar Documentos
Profissional Documentos
Cultura Documentos
net/publication/360458528
CITATIONS READS
0 3,219
1 author:
Alexandre L M Levada
Universidade Federal de São Carlos
130 PUBLICATIONS 391 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Alexandre L M Levada on 08 May 2022.
Mais formalmente, podemos definir esse problema como o de estimar uma função que particiona o
espaço de atributos em regiões de influência.
Dado Z = (X, Y) tal que , X ={ x⃗1, x⃗2, … , x⃗n } é um conjunto de amostras/vetores, com ⃗ x i∈ Rd e
Y ={ y 1, y 2, … , y n } é um conjunto de rótulos, com y i={1, 2, … , c } , um classificador é uma
função f: X → Y que prediz um y ∈Y para todo ⃗x ∈ X . A função f: X → Y induz uma
partição em X em classes/regiões.
Perguntas: Como estimar função f? Existem diversas abordagens para construir f. Qual a melhor?
Que critérios adotar na definição de f? → Objetivo de reconhecimento de padrões
Antes de proceder, devemos esclarecer que tipos de relacionamentos não nos interessa estudar na
regressão linear: relacionamentos determinísticos ou funcionais. A figura a seguir ilustra um
exemplo de relacionamento determinístico: a relação entre temperaturas em Celsius e Farenheit.
Note que os pontos (x, y) observados caem diretamente sobre uma linha reta. Isso ocorre porque o
relacionamento entre graus Celsius e Farenheit é dada por:
9
F= C+ 32
5
ou seja, se você conhece a temperatura em Celsius você pode usar essa equação para determinar a
temperatura em Farenheit exatamente. Alguns outros exemplos de relações determinísticas incluem:
- circunferência = 2 π r
- Lei de Ohm: U = Ri
- velocidade = s / t
Para cada uma dessas relações determinísticas existe uma função que descreve exatamente o
relacionamento entre duas variáveis. Regressão linear não está interessada em estudar esses tipos de
relações, mas sim relações estatísticas (não-determinísticas).
O exemplo a seguir ilustra um relacionamento estatístico entre duas varáveis: a variável resposta y é
a mortalidade devido ao câncer de pele (número de mortes para cada 10 milhões de pessoas) e a
variável exploratória x é a latitude do centro de cada um dos 49 estados norte-americanos.
O gráfico sugere um relacionamento negativo entre a latitude e a mortalidade devido ao câncer de
pele, mas o relacionamento não é perfeito, ou seja, o gráfico exibe um comportamento aproximado,
uma tendência, devido ao espalhamento e a incerteza presente nos dados. Alguns outros exemplos
de relacionamentos estatísticos incluem:
- Altura e peso
- Álcool consumido e taxa de álcool no sangue
- Capacidade pulmonar e anos de fumo
y=α +β x
d Q( α ,β) n
=∑i=1 ( y i−α−β x i )=0
dα
Aplicando a distributiva:
n n
∑i=1 y i−n α−β ∑i=1 x i=0
Dividindo tudo por n, temos:
ȳ−α−β x̄=0
Isolando α chega-se a:
α= ȳ−β x̄ (I)
d Q( α ,β) n
=∑i =1 ( y i−α−β x i )x i=0
dβ
Aplicando a distributiva:
n
∑i=1 ( x i y i−α x i−β x 2i )=0
Separando o somatório nos leva a:
n n n
∑i=1 x i y i−α ∑i=1 xi −β ∑i=1 x 2i =0
Dividindo tudo por n temos:
Aplicando a distributiva:
xy−x y
β= 2 2
(inclinação da reta)
x −x
Após o cálculo de β , basta substituir seu valor em α para determinar seu valor e
consequentemente a equação da reta desejada. Em geral, após estimar os parâmetros α e β e
construir a reta de regressão, utilizamos a equação da reta para estimar valores de y para novos
valores de x.
Coeficiente de determinação
ESS=∑ ( y^ i− y)
2
(Explained Sum of the Squares)
i
Desejamos mostrar que TSS = ESS + RSS. Para isso, devemos mostrar que o termo
∑ ( y i− y^i )( y^ i− y ) (*)
i
y^ i=α +β x i
y=α +β x
Então,
y^ i− y=α+β x i−α−β x =β(x i−x )
y i− y^ i=( y i− y )−( y^ i− y )=( y i− y )−β( xi −x)
xy−x y
β= (**)
x 2−x 2
Multiplicando tudo por n (podemos fazer isso pois iremos multiplicar o denominador também):
n n n n n n n
∑ x i y i− y ∑ xi −x ∑ y i +n x y=∑ x i y i− y ∑ x i−x ∑ y i +∑ x y
i=1 i=1 i=1 i=1 i=1 i=1 i=1
Multiplicando tudo por n (podemos fazer isso pois multiplicamos o numerador também):
n n n n n n n
∑ x i −x ∑ xi −x ∑ x i +n x =∑ x i −x ∑ x i−x ∑ x i+∑ x
2 2 2 2
∑ ( x −x x i−x i x + x )=∑ [ xi ( x i−x )−x (x i−x )]=∑ ( x i−x)( x i−x )=∑ ( xi −x)2
2
i
2
∑ ( x i−x )( y i− y )
β= i=1 n
∑ ( x i−x )2
i=1
[ ]
∑ ( x i−x )( y i− y )
[i ] i
β ∑ ( x i−x)( yi − y)−β ∑ (x i−x ) =β ∑ ( x i−x)( y i− y )− ∑
i 2 2
( x i−x ) =0
i ∑ ( x i−x ) 2
i
i
∑ ( y i− y )2=∑ ( y i− y^ i)2 +∑ ( y^ i− y )2
i i i
2 ESS RSS
r= =1−
TSS TSS
Pode-se mostrar que r nada mais é que o coeficiente de correlação de Pearson uma vez que
[ ]
∑ (x i− x)( y i− y )
2
i
∑ ( x i−x)2
∑ ( xi −x) [∑ ( xi−x )( yi− y )]
2 2
ESS
∑ ( y^ i − y)2 β2 ∑ ( x i−x )2 i
i
i
r 2= = i = i
= =
TSS ∑ ( y i − y)2 ∑ ( y i− y )2 ∑ ( y i− y ) 2
∑ (x i−x )2 ∑ ( y i− y )2
i i i i i
Obs:
2 [ xy −x y ] 2
r= (quadrado do coeficiente de correlação de Pearson)
(x 2−x 2 )( y 2− y 2 )
Quanto melhor a regressão linear ajusta os dados em comparação com a simples média, mais
próximo de 1 o valor de r ² . As áreas na figura a seguir indicam o quadrado dos resíduos.
RSS
r 2=1− (RSS é a soma das áreas dos quadrados em relação a reta de regressão)
TSS
Quanto menor RSS, melhor pois a curva se ajusta melhor aos pontos.
Ano 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996
x (%) 6.5 6.0 6.5 7.5 8.5 9.5 10.0 9.0 7.5 9.0 11.0 15.0
y 2165 2984 2780 1940 1750 1535 962 1310 2050 1695 856 510
Assim, temos:
α= ȳ−β x̄=1711.416−(−271.28)∗8.833=1711.416+2396.216=4107.632
E a equação da reta está definida como:
y=4107.63−271.28 x
b) Estime o número de financiamentos em 1997 se a taxa de juros for reduzida para 12.5%
^y =4107.63−271.28∗12.5=716.63≈717
xy−x y
r=
√(x −x )( y − y )
2 2 2 2
2
e por isso precisamos computar a quantidade y
41212111
y 2= =3434342.58
12
y=4107.63−271.28 x
1000−4107.63
x= =11.45
−271.28
Em muitos problemas do mundo real nos deparamos com múltiplas variáveis independentes. Dado
um conjunto de amostras {( ⃗ xi , y i)}ni=1 , com ⃗
x i=[ x i 1 , x i2 , ... , x ik ]∈ R k o objetivo consiste em
estimar o hiperplano em Rk que melhor representa os dados observados. O grau de ajuste do
hiperplano aos vetores é definido em termos dos erros entre os verdadeiros valores de y i e suas
predições lineares y^ i . O modelo linear é dado por:
T⃗
y i=β0+β1 x i 1 +β2 x i2 +...+βk x ik +εi =⃗xi β+ε i para i=1,2,. .., n
com
⃗x Ti =[1, x i 1 , x i 2 , ... , x ik ] e
⃗
β=[β0, β1 ,β2 ,... ,βk ] sendo vetores pertencentes a Rk .
⃗y= X ⃗
β +⃗ε
onde
[ ] [ ][ ] []
T
1 x 11 x12 ... x 1 k
[]
y1 x⃗1 β1 ε1
1 x 21 x22 ... x 2 k ⃗ β2 e ⃗ε = ε2
T
⃗y= y 2 , X = x⃗2 = , β=
... ... ... ... ... ... ... ... ...
1 xn 1 xn 2 ... x nk βn εn
yn x⃗n
T
n×k
em que X é a matriz dos dados (data matrix) e ⃗ β é o vetor de parâmetros que controlam o
hiperplano ótimo. Após a cálculo do vetor de parâmetros ⃗
β , podemos estimar o vetor ⃗y para
^ ⃗
novos dados de entrada. Define-se ⃗y= X β como esse estimador linear ótimo de ⃗y . Note que
geometricamente ⃗^y pertence a um subspaço k-dimensional de Rn (hiperplano ótimo). Isso
decorre do fato de que o número de colunas LI de X é k. Note que ⃗^y é a projeção de ⃗y no
hiperplano gerado pelas colunas de X .
X ⃗y −X X ⃗
T T
β=0
(X X) ⃗
T T
β=X ⃗y
⃗^ =( X T X )−1 X T ⃗y = X + ⃗y
β
+ T −1 T
com X =( X X ) X sendo a matriz pseudo inversa de X.
O Perceptron
Trata-se do primeiro modelo matemático baseado no conceito de que a unidade básica de
processamento de informação no cérebro biológico são os neurônios. O estudo desse modelo
primitivo de computação é importante pois ele define a base para o funcionamento de redes neurais
artificiais utilizadas em tarefas de aprendizado profundo. É um classificador supervisionado binário.
O Perceptron foi o primeiro algoritmo algoritmo de aprendizado desenvolvido na história. Sua ideia
inicial é baseada nos trabalhos pioneiros de McCulloch e Piits em 1943, que propuseram uma
analogia entre neurônios biológicos e portas lógicas com saídas binárias. De maneira intuitiva,
neurônios podem ser entendidos como as unidades básicas de redes neurais no cérebro biológico.
O fluxo de informação é como segue: sinais chegam nos dendritos e são acumulados no corpo
celular. Se o valor acumulado excede um determinado limiar, um sinal de saída é gerado pelo
axônio. A figura a seguir mostra esse processo de maneira ilustrativa.
Foi mais tarde, em 1957, que Rosenblatt publicou o primeiro conceito sobre a regra de treinamento
de perceptrons. A ideia básica era desenvolver um algoritmo para aprender os pesos sinápticos do
neurônio que eram multiplicados por um vetor de padrões de entrada para então decidir se o
neurônio deve disparar ou não. No contexto de reconhecimento de padrões esse algoritmo seria útil
para determinar se uma amostra x pertence ou não a uma determinada classe, ou seja, o neurônio
dispararia se x pertencesse a classe 1 e não dispararia se pertencesse a classe 2.
Em resumo a ideia consiste em imitar como um neurônio no cérebro funciona: determinar
condições matemáticas para que se possa decidir quando um ele deve disparar ou permanecer
estático. Nas palavras, de Rosenblatt, o algoritmo perceptron fornece uma maneira objetiva de um
neurônio aprender pesos sinápticos de modo a construir uma superfície de separação linear
(hiperplano) que seja capaz de discriminar os dados em 2 classes ou categorias. A figura a seguir
ilustra a arquitetura básica de um neurônio artificial do tipo perceptron.
Fundamentação matemática
A primeiro passo consiste na definição de uma função de ativação para o neurônio, responsável por
dizer quando ele dispara ou não. Iremos definir a função g( z ) como sendo a função degrau
unitário, ou seja, ela fornece como saída +1 se o valor de z é maior que θ e -1 se o valor de z é
menor que θ , ou seja:
{
g( z )= +1, z≥θ
−1, z <θ
T T k
onde w ⃗ =[w1 , w2 , ..., w k ] é o vetor de pesos e ⃗x =[ x1 , x2 , ... , x k ]∈ R é um vetor de padrões
(amostra do conjunto de dados a ser classificado).
Para simplificar a notação, é usual trazer θ para o lado esquerdo da equação e defini-lo como o
componente zero do vetor de pesos, ou seja, w 0=−θ , fazendo x 0=1 . Assim, a função
g( z ) pode ser simplificada para:
{
g( z )= +1, z≥0
−1, z <0
e a variável z torna-se:
k
z=w 0 x 0 + w1 x 1 +w 2 x 2 +...+w k x k =∑ wi x i=⃗
T
w ⃗x
i=0
Algoritmo de treinamento
Suponha que α=0.5 de modo que a regra de atualização dos pesos é dada por:
w
⃗ =⃗
w +0.5(di − y i) ⃗
xi
Note que sempre que a saída do neurônio ( y i ) é igual ao rótulo da amostra ( d i ), o vetor de
pesos permanece inalterado. Se a amostra é positiva, ou seja, d i=1 mas o neurônio prediz
y i=−1 , então o novo vetor de pesos será w ⃗ =⃗w+ ⃗
xi , e o hiperplano será rotacionado de modo
que a amostra em questão seja positiva. Por outro lado, se a mostra é negativa, ou seja, d i=−1
mas o neurônio prediz y i=1 , então o novo vetor de pesos será w ⃗ =⃗w −⃗x i , e o hiperplano será
rotacionado de modo que a amostra em questão seja negativa. A figura a seguir ilustra o processo de
rotação do plano separador ao se classificar uma amostra de maneira errônea.
O processo segue até que todas as amostras positivas encontram-se de um lado do hiperplano e
todas as amostras negativas encontram-se do outro lado.
T
O que percebemos ao final do algoritmo é que se w
⃗ é um hiperplano separador, então:
T
⃗ ⃗x ≥0 para todo ⃗x ∈P
w (classe positiva, y = 1)
T
⃗ ⃗x < 0 para todo ⃗x ∈N
w (classe negativa, y = -1)
Teorema: Convergência do perceptron de incrementos fixos
Sejam os conjuntos de treinamento P e N linearmente separáveis. Considere que as entradas
apresentadas ao perceptron são originadas desses conjuntos. Então, o perceptron converge depois de
n0 iterações no sentido de que
w
⃗ (n0 )=⃗
w (n0 +1)= w
⃗ (n 0+2)=.. .
Prova:
Iremos considerar, sem perda de generalidade, que inicialmente o vetor de pesos é nulo, ou seja,
⃗ (0)=⃗
w 0 . Suponha ainda que para n=1,2,3,.. . , w ⃗ T (n) ⃗x (n)< 0 (perceptron prediz y = -1) e
os vetores ⃗x (n) pertençam ao conjunto P (classe positiva). Isso significa que o perceptron
inicialmente classifica incorretamente os vetores ⃗x (1), ⃗x (2), ... ,⃗x (n) . Então, considerando a taxa
de aprendizado α=0.5 , a correção do vetor de pesos será:
w
⃗ (n+1)=⃗
w (n)+⃗x (n) para ⃗x (n)∈P
⃗ (0)=⃗
Dado a condição inicial w 0 é possível iterativamente resolver essa equação:
w
⃗ (1)=⃗x (0)
w
⃗ (2)=⃗x (1)+⃗x (0)
w
⃗ (3)=⃗x (2)+⃗x (1)+⃗x (0)
...
w
⃗ (n+1)=⃗x (1)+ ⃗x (2)+...+⃗x (n) (*)
Como as classes P e N são linearmente separáveis, existe uma solução w ⃗ o para a qual
T
w⃗ o ⃗x ( n)> 0 para todos os vetores pertencentes ao conjunto P. Para essa solução w ⃗ o podemos
definir um número positivo α como:
⃗ To ⃗x (n)
α= min w (menor valor de produto escalar para vetores em P é sempre positivo) (**)
x (n )∈ P
⃗
T
Assim, multiplicando ambos os lados de (*) por w
⃗o :
T T T T
w
⃗ow
⃗ (n+1)=⃗
w o ⃗x (1)+ w
⃗ o ⃗x (2)+...+ w
⃗ o ⃗x (n)
⃗ To w
w ⃗ (n+1)≥n α (3)
2 2 T 2
‖⃗
w o‖ ‖⃗
w ( n+ 1)‖ ≥[ w
⃗o w
⃗ (n+1)] (4)
T
onde o produto w ⃗ow⃗ ( n+1) é uma quantidade escalar. A partir das equações (3) e (4) é fácil
perceber que por transitividade temos:
w o‖2‖⃗
‖⃗ w ( n+ 1)‖2≥n2 α2
ou de maneira equivalente
2 2
2 nα
‖⃗
w (n+1)‖ ≥ 2
(5)
‖⃗
w o‖
Note que definimos um limite inferior para a norma do vetor de pesos. A princípio, pode parecer
alarmante, pois quando o número de iterações cresce, a norma aumenta de maneira quadrática.
Agora, vamos seguir uma outra rota de desenvolvimento. Reescrevendo a primeira equação em
termos da variável k:
w
⃗ (k +1)= w
⃗ (k )+⃗x (k ) para k =1,2,... , n e ⃗x (k )∈P
ou equivalentemente
2 2 2
‖⃗
w (k +1)‖ −‖⃗
w (k )‖ ≤‖⃗x ( k)‖
w (1)‖2−‖⃗
(‖⃗ w (0)‖2 )+(‖⃗
w (2)‖2−‖⃗
w (1)‖2 )+(‖⃗
w (3)‖2−‖⃗
w ( 2)‖2)+...+(‖⃗
w (n+1)‖2−‖⃗
w (n)‖2 )
Note que após cancelar os termos positivos e negativos, a expressão simplifica-se para:
2 2
‖⃗
w (n+1)‖ −‖⃗
w (0)‖
∑‖⃗x (k )‖2
k=1
podemos escrever
2
‖⃗
w (n+1)‖ ≤nβ (6)
o que mostra que a norma Euclidiana do vetor de pesos é sempre inferior a uma constante vezes o
número de iterações n. A equação (6) define um limite superior para a norma do vetor de pesos.
Note que a equação (5) define um limite inferior enquanto que a equação (6) define um limite
superior. Observe que ambas as equações devem ser satisfeitas simultaneamente, mas a pergunta
que surge é: para quais valores de n elas são consistentes?
É impossível satisfazer as equações (5) e (6) para valores muito grandes de n. Para tais valores o
limite inferior será muito alto e o limite superior será muito baixo, gerando um inconsistência.
Portanto, devemos ter um valor máximo nmax para o qual (5) e (6) são simultaneamente
satisfeitas com igualdade:
2 2
nmax α
=nmax β
wo‖2
‖⃗
2
β‖⃗
wo‖
nmax = 2
α
Provamos que existe um valor de n finito, porém desconhecido a priori, após o qual o vetor de pesos
não mais é atualizado, ou seja, na iteração nmax atinge-se a correta classificação dos padrões.
Problema com o perceptron: Apesar de termos garantias de que o algoritmo converge num número
finito de passos para problemas linearmente separáveis, em casos não linearmente separáveis a
convergência não é garantida.
A principal diferença entre o modelo Adaline (Adaptive Linear Neuron) e o perceptron é na maneira
com que o sinal de erro é utilizado na correção dos pesos. No Adaline os pesos são ajustados com
base numa função de ativação linear.
O diagrama a seguir ilustra a arquitetura de um neurônio Adaline. Note que a função de ativação é
T T
linear, mais precisamente, a identidade, ou seja, g( z )=z . Em outras palavras g( w
⃗ ⃗x )=⃗w ⃗x .
A seguir veremos que isso é na verdade uma melhoria em relação a regra de treinamento do
perceptron.
Definimos de ⃗x o vetor de padrões de entrada e de w ⃗ o vetor de pesos. Sendo assim, a saída
T T T
da função de ativação é y=g( w
⃗ ⃗x )=⃗
w ⃗x =⃗x w⃗ . Definimos o erro como sendo:
T
ε=(d− y )=(d− w
⃗ ⃗x )
ou seja, o erro é uma função quadrática do vetor de pesos. Temos então que o erro quadrático médio
como função do vetor de pesos é da forma indicada pela figura a seguir (parabolóide convexo). A
derivada segunda é a matriz Hessiana, que é igual a matriz de correlação (positiva semi-definida).
A ideia consiste em aplicar a descida do gradiente para, iniciando em uma solução aleatória (vetor
de pesos inicial), iterativamente caminhar até o ponto de mínimo da função de erro, obtendo então o
vetor de pesos ótimo (que minimiza o erro). Se o problema é linearmente separável esse erro final é
zero, caso contrário assume um valor mínimo positivo.
A seguir iremos derivar a regra Delta, ou também conhecida como o algoritmo Widrow-Hoff.
Sabemos que a partir do gradiente podemos iterativamente computar:
w
⃗ =⃗
w −η∇ J ( w
⃗)
Para isso, precisamos computar a derivada da função de erro J ( w)⃗ para cada componente do
vetor de pesos, ou seja, w j para j=1,2,... , k , onde k é a dimensionalidade dos dados:
[ ]
n n n
∂J 1 1 1
= ∂ ∑ (d (i )− y (i ))2 = ∑ ∂ [(d(i)− y(i) )2 ]= ∑ 2(d (i )− y (i )) ∂ ( d(i)− y(i) )
∂w j ∂w j 2 i=1 2 i=1 ∂ w j 2 i=1 ∂wj
k
Substituindo ⃗ T ⃗x i=∑ w j x(i)
y= w j temos:
j=1
n k n
∂J
=∑ (d − y ) ∂ (d −∑ w j x j )=∑ (d − y )(−x j )
(i) (i) (i) (i) (i) (i) (i)
∂w j i=1 ∂wj j=1 i=1
ou na forma vetorial
n
w w + η ∑ ( d(i) − y(i) )⃗x (i )
⃗ =⃗
i=1
Veja que nesse caso teríamos infinitos valores para a variável de saída. Uma possível solução seria
considerar um simples limiar. Se limiarizarmos a saída do modelo de regressão em 0.5, define-se a
seguinte regra de decisão: se hθ (x )=θ 0+θ 1 x≥0.5 devemos predizer 1 como saída (presença do
tumor) e caso hθ (x )=θ 0+θ 1 x <0.5 devemos predizer 0 como saída (ausência do tumor). Essa
adaptação a primeira vista parece funcionar bem, mas veremos que não. Suponha agora que
observamos o mesmo conjunto de dados, mas com uma única amostra adicional. A figura a seguir
ilustra a situação.
A reta de regressão se altera, de modo que ao se aplicar o mesmo procedimento anterior, vemos que
haverá erro na classificação. O limiar de 0.5 não é mais adequado. Note ainda que na regressão
linear, a saída do modelo pode ser tanto negativa quanto maior que 1, ou seja, hθ (x )<0 ou
hθ (x )≥1 . A regressão logística nos permite ajustar o modelo de regressão para que a saída
sempre esteja limitada, ou seja, 0≤hθ ( x )≤1 .
Para realizar esse ajuste no modelo, iremos modificar a forma da nossa hipótese hθ ( x ) ,
adicionando uma função não linear:
1
hθ (x )=g(θ T x)= T
1+e−θ x
1
g( z )= −z
1+ e
é chamada de função sigmoide ou logística. A figura a seguir ilustra o gráfico da função logística.
j=1
Existem outras funções com comportamento similar a função logística (crescem de maneira suave
de 0 a 1), mas a escolha pela sigmoide é bastante natural, devido a propriedades matemáticas. Um
exemplo é o cálculo da derivada da função logística, que é definida em termos dela mesma:
[ ]
−z
d 1 d −z −1 −z −2 −z e
g ' (z )= −z
= (1+ e ) =−(1+e ) (−e )= −z 2
dz 1+ e dz (1+e )
g ' (z )=
1+ e−z−1
−z 2
(1+e ) 1+e
=
1
−z
−
1
−z 2
=
(1+ e ) 1+ e
1
−z
1− (1
1+e−z )
=g(z )(1−g(z ))
Sendo assim, dado o modelo de regressão logística, a próxima pergunta que surge é: como
especificar adequadamente valores para os parâmetros θ ? Para isso, é preciso discutir a
interpretação probabilística do modelo.
Basicamente, a interpretação para hθ (x ) é a de que esse valor representa a probabilidade de que
y = 1 para a entrada x. Por exemplo, supondo um problema de classificação de tumores entre
benignos e malignos de acordo com o tamanho do tumor, os dados de entrada são x 0=1 e
[] x
x 1=TumorSize , gerando os vetores de padrões 2D, x= 0 . Suponha que para os parâmetros
x1
θ escolhidos (iremos aprender como estimar esses parâmetros de maneira ótima), o resultado da
hipótese para um paciente qualquer x é hθ (x )=0.7 . Devemos interpretar essa hipótese como: a
probabilidade de que o tumor do paciente x seja maligno (y = 1) é 70%. Em termos matemáticos:
hθ (x )= p( y =1| x ; θ) (probabilidade de y = 1 dado que observo x, parametrizada por θ )
Em resumo,
p( y=1 | x ;θ)=hθ (x )
Note que essa é uma função massa de probabilidade para a variável aleatória binária y que
desejamos inferir a partir dos dados. Reescrevendo essa f.m.p de maneira mais compacta, temos:
y 1− y
p( y | x ; θ)=[hθ (x)] [1−hθ (x )]
A relação entre a regressão linear e a logística vem do fato de que no caso linear a variável
dependente é modelada como uma combinação linear y=θ 0+ θ1 x e ao aplicar a função sigmoide
temos como saída uma probabilidade:
1
p= −y
1+e
−y −y
p(1+e )=1→ p+ pe =1→ pe =1− p→e =
−y y p
1− p
→ y=log ( )
p
1−p
Nessa interpretação estamos tentando encontrar a melhor sigmoide que se ajusta aos dados.
Interpretação geométrica e superfícies de decisão
T 1
Sabemos que na regressão logística hθ (x )=g(θ x)= p ( y=1 | x ; θ) onde g( z )= −z
. Em
1+ e
termos de classificação, a regra de decisão consiste em predizer y = 1 se hθ (x )≥0.5 e predizer y
= 0 se hθ (x )≥0.5 . Do gráfico da função logística, note que g(z )≥0.5 se z≥0 e portanto
hθ (x )=g(θ x)≥0.5 se θT x≥0 . Em outras palavras, o modelo irá predizer y = 1 se
T
T
θ x≥0 . O outro caso, referente a predição de y = 0 ocorre quando g( z )< 0.5 , e portanto
T T
hθ ( x )=g(θ x)<0.5 se θ x <0 . Agora vamos supor que temos um conjunto de treinamento
como o mostrado na figura a seguir.
O modelo de regressão logística é definido pela equação hθ (x )=θ 0+θ 1 x 1 +θ2 x 2 . Ainda não
discutimos técnicas para a estimação dos parâmetros θ0 , θ1 e θ2 mas suponha que por
algum algoritmo desconhecido os parâmetros foram setados como θ0 =−3 , θ1=1 e θ2=1 .
Isso significa que nosso vetor de parâmetros é θ=[−3, 1, 1] .
Então, de acordo com a regra de decisão devemos predizer y = 1 se −3+ x1 + x 2≥0 , o que
implica em x 1+ x 2≥3 , que define a equação de uma reta.
Note que a superfície de decisão depende exclusivamente dos parâmetros do modelo e não
diretamente dos dados em si. Os dados são utilizados para aprendermos os parâmetros do modelo.
Veremos agora um exemplo mais complexo. Suponha que os dados que desejamos classificar são
ilustrados na figura a seguir.
Como é possível fazer com que a regressão logística classifique os dados corretamente? Note que
uma superfície de decisão linear não é suficiente. Para conseguir superfícies não lineares, devemos
introduzir termos polinomiais na regressão. Sendo assim, podemos modificar hθ (x ) para incluir
termos quadráticos em x:
Agora ao invés de 3, temos 5 parâmetros. Da mesma forma que o caso anterior, suponha que
utilizamos um algoritmo para estimar tais parâmetros de maneira automática e o resultado obtido foi
θ0 =−1 , θ1=0 , θ2=0 , θ3=1 e θ4 =1 , ou seja, θ=[−1, 0, 0, 1,1] .
Seguindo a regra de decisão proposta anteriormente, o modelo em questão deve predizer y = 1 se
−1+ x 21 + x 22≥0 , ou seja, sempre que x 21+ x 22≥1 . Se formos plotar essa superfície, veremos que
se trata de uma circunferência de raio 1 centrada na origem.
Portanto, a regressão logística pode ser generalizada para problemas não linearmente separáveis
pela adição de termos polinomiais. Superfícies de separação quadráticas são muito comuns na
prática, sendo possível gerar, elipses, parábolas e hipérboles, por exemplo. Com termos de
polinômios de mais alta ordem muitas superfícies complexas podem ser construídas ao custo de
aumentar o número de parâmetros ajustáveis do modelo.
A seguir veremos como estimar os parâmetros do modelo de regressão logística utilizando o método
conhecido como máxima verossimilhança.
O problema de estimação dos parâmetros consiste em dado uma amostra aleatória {X , Y } com
X ={x 1 , x 2 , ... , xn } e Y ={ y 1 , y 2 ,... , y n } (observação de n vetores aleatórios independentes
x i e seus rótulos y i ∈{0,1 } ), obter estimativas para os parâmetros θ=[θ0 , θ1 ,... , θk ] do
modelo de regressão logística. O método estatístico mais conhecido, denominado de máxima
verossimilhança, propõe como estimadores os valores:
^
θ=arg max { p(Y | X ;θ) }=arg max { L(θ) } com θ=[θ0 , θ1 ,... , θk ]
θ θ
onde p(Y | X ; θ)=L(θ) é a densidade conjunta dos rótulos y i como função dos parâmetros θ ,
denominada de função de verossimilhança, ou seja:
n
L(θ)= p(Y | X ; θ)=∏ p( y i | x i ; θ) (*)
i=1
yi 1− y i
com p( y i | x i ; θ)=[h θ (xi )] [1−hθ ( xi )]
i=1
θ=θ+α ∇ θ l(θ)
∂ ∂ ∂
∂θ j l(θ)= ∂θ j [ y log hθ (x )+(1− y) log (1−hθ (x )) ] = ∂ θ j [ y log g (θ x )+(1− y)log (1−g (θ x )) ]
T T
∂
[ 1 1 ∂
] T
∂θ j l(θ)= y g(θT x ) −(1− y) 1−g(θ T x ) ∂θ j g(θ x)
T
Aplicando a regra da cadeia na derivada de g(θ x ) :
∂θ j [
∂ l(θ)= y 1 −(1− y)
T
g(θ x )
1
T
1−g(θ x ) ]
g(θ x)(1−g(θ x )) ∂ θ x
T T
∂θ j
T
k
Aplicando a distributiva e sabendo que a derivada de θ x=∑ θ j x j em relação a θ j é
T
xj :
j=1
∂
∂θ j l(θ)=[ y−hθ (x )]x j
- O modelo de cada neurônio da rede inclui uma função de ativação não linear que é diferenciável.
Exemplos de funções comumente adotadas são a função logística e a tangente hiperbólica.
- A rede neural contém uma ou mais camadas escondidas, isto é, camadas entre a camada de entrada
e a camada de saída.
- A rede possui um alto grau de conectividade, com todos os neurônios de uma camada se ligando a
todos os neurônios da camada seguinte. A força de cada conexão é medida pelos pesos sinápticos.
A Figura a seguir ilustra a arquitetura de uma rede perceptron multicamadas com uma camada de
entrada, duas camadas escondidas e uma camada de saída. O fluxo de sinal através da rede neural é
do tipo feed-forward, ou seja, para cada padrão apresentado na camada de entrada, a informação é
calculada e propagada da esquerda para direita, passando pelas camadas intermediárias até atingir
os neurônios da camada de saída.
a) Na fase forward, os pesos sinápticos da rede são fixados e o sinal de entrada é propagado através
da rede, camada por camada, até atingir a camada de saída. Assim, nessa fase, computações são
restritas aos potenciais de ativação e as saídas dos neurônios na rede.
b) Na fase backward, um sinal de erro é produzido pela comparação da saída da rede com a resposta
desejada. O sinal de erro resultante é propagado através da rede, novamente camada por camada,
mas desta vez a propagação é realizada de trás para frente, ou seja, da camada de saída para a
camada de entrada. Nessa fase, sucessivos ajustes são feitos aos pesos sinápticos da rede. O cálculo
do ajuste dos pesos na camada de saída é simples, mas para as camadas escondidas é uma tarefa
mais desafiadora, como veremos mais adiante.
Sendo assim, há basicamente 2 tipos de sinais sendo propagados pela rede.
1. Function signals: é um sinal que inicia na camada de entrada e chega na camada de destino. A
cada neurônio da rede pelo qual o estímulo passa, o sinal é calculado como uma função não linear
aplicada ao produto interno entre suas entradas e seus pesos sinápticos.
2. Error signals: Um sinal de erro se original em um neurônio da camada de saída da rede e
propaga-se para trás, camada por camada. Sua computação envolve um gradiente local que depende
diretamente da função de erro.
A Figura a seguir ilustra a direção dos dois fluxos básicos em um perceptron multicamadas.
Os neurônios da camada de entrada são conhecidos como source nodes e atuam como sensores. Não
há processamento nessa camada, apenas leitura dos dados de entrada. Cada neurônio escondido ou
da camada de saída de um perceptron multicamadas é responsável por realizar 2 operações:
i) a computação do function signal que aparece na saída de cada neurônio, expressado como uma
função não linear do sinal de entrada e dos pesos sinápticos.
ii) computação de uma estimativa do vetor gradiente responsável por corrigir os pesos da rede
neural na etapa de backpropagation. O gradiente nada mais é que a variação na função de erro em
termos da variação nos pesos sinápticos da rede. É uma forma de medir quais dos pesos influenciam
mais ou menos o erro total.
1
ε j (n)= e2j (n)
2
Somando os erros de todos os neurônios da camada de saída temos o erro instantâneo total da rede:
1
ε (n)=∑ ε j (n)= ∑ 2
e j (n) (**)
j∈C 2 j ∈C
Aprendizado on-line
O algoritmo Backpropagation
onde m é o número total de entradas (excluindo o bias y 0 ) e w ji é o peso sináptico que liga o
neurônio i da camada anterior ao neurônio j da camada atual. O peso sináptico w j 0
correspondente a entrada fixa y 0=1 é igual ao bias b j aplicado ao neurônio j. Assim, o sinal
y j ( n) que aparece na saída do neurônio j na iteração n é:
1
ϕ ( z)= −z
1+ e
e seu valor está sempre restrito ao intervalo [0, 1]. A função tangente hiperbólica é definida como:
e z−e− z
ϕ ( z)=
e z +e− z
De uma maneira similar ao LMS, o algoritmo Backpropagation aplica uma correção Δ w ji (n) ao
peso sináptico w ji (n) que é proporcional a derivada parcial do erro em relação ao peso, ou seja,
∂ ε (n)
. Isso significa que queremos medir a variação do erro em relação a uma pequena
∂w ji (n)
variação do peso sináptico em questão. Se o peso em questão afeta muito o erro, ele deve ser
corrigido de maneira significativa, ao passo que se o peso praticamente não afeta o erro, a correção
é praticamente desnecessária. A partir da regra da cadeia para diferenciação, sabemos que:
∂ ε (n) ∂ ε (n) ∂e j( n) ∂ y j ( n) ∂ v j ( n)
=
∂w ji (n) ∂ e j (n) ∂ y j (n) ∂ v j (n) ∂ w ji (n)
Note que do ponto de vista gráfico estamos quebrando a derivada num conjunto de derivadas mais
simples e fáceis de serem resolvidas, caminhando para trás na figura anterior. Essa derivada parcial
um fator de sensitividade determinando a direção de busca nos espaço dos pesos que mais diminui o
erro. Diferenciando ambos os lados da equação (**) com relação a e j (n) , temos:
∂ ε (n)
=e ( n)
∂e j (n) j
∂e j (n)
=−1
∂ y j ( n)
Em seguida, diferenciando a equação (****) em relação a v j (n) , temos:
∂ yj
= ϕ j ' (v j (n))
∂vj
onde ϕ j ' denota a derivada da função de ativação. Pode-se verificar que tanto a função sigmóide
quanto a função tangente hiperbólica possuem derivadas dadas em termos delas mesmas. Para a
função sigmóide vale:
ϕ ' (z)=1−ϕ (z )2
∂ v j (n)
= y i (n)
∂w ji (n)
∂ ε (n)
=−e j (n) ϕ j ' (v j (n)) y i (n)
∂w ji (n)
∂ ε (n)
w ji (n+1)=w ji (n)− η (@)
∂ w ji (n)
O gradiente local aponta para a direção que o peso em questão precisa ser modificado para
minimização do erro. De acordo com a equação anterior, o gradiente local δ j (n) para o neurônio
de saída j é igual ao produto do sinal de erro correspondente e j (n) para aquele neurônio e a
derivada da função de ativação ϕ j ' (v j (n)) .
As expressões acima nos mostram que um fator chave para o cálculo dos ajustes dos pesos é o sinal
de erro do neurônio de saída j. Nesse contexto, nós podemos identificar 2 casos distintos,
dependendo de onde na rede neural o neurônio j está localizado. No caso 1, temos um neurônio da
camada de saída. Esse caso é mais simples de lidar, uma vez que o próprio neurônio possui sua
resposta desejada, tornando o cálculo do sinal de erro algo trivial. No caso 2, temos um neurônio
escondido. Embora tais neurônios não sejam diretamente acessíveis, eles compartilham grande
responsabilidade pelo erro na saída da rede. A questão crucial consiste em saber como penalizar ou
recompensar neurônios escondidos pelo erro cometido, sabendo que eles são desprovidos de uma
resposta desejada e portanto de um sinal de erro próprio.
Nesse caso, temos acesso a resposta desejada e portanto ao próprio sinal de erro. Dessa forma, o
gradiente local é diretamente computado pela equação (&).
Nesse caso, não há resposta desejada, de modo que o sinal de erro deve ser determinado
recursivamente, de modo a utilizar os sinais de erro de todos os neurônios da camada posterior que
o neurônio j está conectado. Para ilustrar esse cenário, vamos considerar a situação mostrada na
figura a seguir, que representa um neurônio j em uma camada escondida da rede.
De acordo com a equação (#), podemos expressar o gradiente local para um neurônio escondido
eliminando o termo ∂ e j( n) da regra da cadeia:
∂ ε ( n)
Para calcular a derivada parcial devemos lembrar que o erro é dado por:
∂ y j ( n)
1
2 k∑
2
ε (n)= e k (n)
∈C
para k sendo um neurônio da camada de saída. Diferenciando a expressão do erro de ambos os lados
em relação a y j (n) temos:
∂ ε (n) ∂e k (n)
=∑ e k ( n)
∂ y j (n) k ∂ y j (n)
e assim,
∂e k (n)
=− ϕ k ' (v k (n)) (B)
∂v k (n)
Note também que para um neurônio k, o campo induzido local é dado por:
m
v k (n)=∑ w kj (n) y j (n) (C)
j =0
∂ v k (n)
=w jk (n)
∂ y j (n)
Usando as equações (B) e (C) na equação (A), chega-se a derivada parcial desejada:
∂ ε (n)
=−∑ e k (n) ϕ k ' (v k (n)) w kj (n)=−∑ δ k (n) wkj (n) (R)
∂ y j (n) k k
Finalmente, usando a equação (R) em ($), chegamos na equação de retro propagação dos gradientes
locais δ j (n) , dada por:
O fator externo ϕ j '(v j (n)) envolvido no cálculo do gradiente local δ j (n) na equação (X)
depende somente da função de ativação associada ao neurônio escondido j. O fator restante,
somatório em k, depende de 2 conjuntos de termos. O primeiro conjunto de termos, δk ( n) ,
requer o conhecimento dos sinais de erro e k (n) de todos os neurônios localizados na camada
imediatamente a direita do neurônio j e que estão diretamente ligados a ele. O segundo conjunto de
termos consiste exatamente nos pesos sinápticos associados a essas conexões.
A figura a seguir ilustra uma representação gráfica do fluxo de propagação do sinal dos gradientes
locais na etapa de retro propagação, assumindo que a camada de saída contém m L neurônios.
RESUMO
Passo 1: Alimentar a rede com um padrão de entrada, computando as saídas de cada neurônio
ii) Se neurônio j pertence a camada escondida, o gradiente local é igual ao produto entre a
derivada da função de ativação de j e a soma ponderada dos gradientes locais computados
para os neurônios da camada a direita conectados a j:
Observação de ⃗x me faz alterar a noção intuitiva que tinha sobre o problema. (após observar
⃗x “atualizo” probabilidade a priori das classes para uma probabilidade a posteriori)
[ ]
0 L12 L13 ... L1 c
L21 0 L23 ... L2 c
L= L31 L32 0 ... L3 c
... ... ... ... ...
L c 1 Lc 2 L c 3 ... 0
Note que a matriz L pode ou não ser simétrica. Veremos a seguir que matrizes de perda simétricas e
binárias nos levam a um critério muito utilizado na prática (critério de decisão MAP).
Dessa forma, podemos associar uma perda média (risco condicional) a uma classe ω j , com
j=1,2, … , c , ou seja podemos calcular o risco de atribuir uma amostra x a classe ω j .
Matematicamente, o risco condicional r (ω j | x ) é simplesmente o valor esperado condicional da
perda para a j-ésima coluna da matriz L, sendo dado por:
c
r (ω j∣⃗x )=r j ( ⃗x )=∑k=1 Lkj p(ω k∣⃗x )=L1 j p (ω1 | x)+ L2 j p (ω2 | x )+...+ Lcj p (ω c | x)
Obs:
1) risco = perda média
2) o risco de atribuir um objeto x a classe ω j é igual a probabilidade de atribuir x a classe ω1
vezes a perda de se atribuir algo que pertence a classe ω1 a classe ω j mais a probabilidade de
atribuir x a classe ω2 vezes a perda de se atribuir algo que pertence a classe ω2 a ω j mais
a probabilidade de atribuir x a classe ω3 vezes a perda de se atribuir algo que pertence a classe
ω3 a ω j , etc.
1 c
r j( ⃗x )= ∑
p(⃗x ) k=1
Lkj p ( ⃗x∣wk ) p( wk )
Mas como o numerador é constante para todo j=1,2,3,... , c podemos descartá-lo e portanto
o risco de se decidir por ω j é:
c
r j( ⃗x )=∑k =1 Lkj p( ⃗x∣w k ) p( wk )
A Teoria de decisão Bayesiana nos fornece a seguinte regra: atribua a amostra ⃗x à classe que
minimiza o risco condicional (aquela que tem a menor perda média). Em teoria, ao se minimizar o
risco, estamos caminhando no sentido de minimizar a probabilidade de erro. Em outras palavras,
⃗x é atribuído a classe ωi se:
ou seja, se o risco de decidir por ωi for menor que todos os demais riscos associados as classes
ω j . Para o caso de uma matriz de perdas simétrica e binária, o que significa que L pondera
todos os erros de forma igualitária, apenas considerando erros ou acertos, tem-se:
[ ]
0 1 1 ... 1
1 0 1 ... 1
L= 1 1 0 ... 1
... ... ... ... ...
1 1 1 ... 0
p(⃗x∣w k ) p (w k )
p(w k∣⃗x )=
p ( ⃗x )
e como p(w k∣⃗x ) é a probabilidade a posteriori então a soma para todo k resulta em 1, ou seja:
c 1 c
∑k=1 p(wk∣⃗x )= p(⃗x ) ∑k=1 p(⃗x∣w k) p (w k )=1
o que implica em
c
p( ⃗x )=∑k=1 p( ⃗x∣w k ) p (w k )
e portanto o risco pode ser expresso como (o primeiro termo é uma constante!):
c
r i ( ⃗x )= p( ⃗x )−∑k=1 δki p( ⃗x∣w k ) p(wk )= p( ⃗x )− p( ⃗x∣wi ) p (wi )
uma vez que o segundo termo é não nulo apenas para k = i. Como p(⃗x ) é constante, para
minimizar o risco, devemos maximizar o segundo termo. Porém, note que ao se dividir todos os
riscos por uma constante p(⃗x ) não modificamos qual é a classe que minimiza o risco, o que nos
leva a:
p(⃗x∣wi ) p( wi )
r i (⃗x )=1− =1− p( wi∣⃗x )
p ( ⃗x )
ou seja, o termo a ser maximizado nada mais é que a probabilidade a posteriori da classe ωi , o
que nos leva ao conhecido critério MAP (Máximo a Posteriori), que define a seguinte regra de
decisão: devemos atribuir ⃗x à classe ωi que fornece a maior probabilidade a posteriori, ou
seja:
onde w * denota a decisão ótima para a amostra ⃗x . Em termos práticos, esse problema de
maximização pode ser resolvido de maneira bastante simples: basta definirmos c funções
discriminantes d j (⃗x) , j=1,2,... , c (uma para cada classe) dadas por:
que por tratabilidade matemática podem ser reescritas aplicando o logaritmo (que é uma função
monotonicamente crescente) como (o log não altera a noção de ordem e portanto não modifica o
máximo da função):
Essas são as funções de decisão para o critério MAP. A ideia consiste em construir c funções de
decisão, uma para cada classe. Vence a classe que obtiver o maior valor de d j (x ) para a amostra
x em questão.
wj wj
Mas sabemos que as probabilidades de erro condicionais em cada classe são definidas pela área da
densidade fora da região de aceitação, ou seja:
Então,
c
p(ε)=∑ ∫C(R ) p (x | ω j ) p(ω j ) dx
j
j=1
Sabendo que a integral do que está fora da região Rj é igual a um menos a integral do que
está dentro da região R j , temos:
[
p(ε)=∑ p(ω j ) 1−∫R p( x | ω j) dx
j=1
j
]
Aplicando a distributiva chega-se em:
c c c
p(ε)=∑ p(ω j )−∑ p(ω j )∫R p ( x | ω j)dx=1−∑ ∫R p(x | ω j) p (ω j) dx
j j
j=1 j=1 j=1
Neste caso a variável observada x é composta por um único atributo. Suponha por exemplo
que desejamos classificar indivíduos entre mulheres ( ω1 ) e homens ( ω2 ) a partir da altura.
Nesse caso, utilizamos apenas uma medida para discriminar entre as classes ω1 e ω2 .
2
p(x | ω 1) é uma N (μ1 , σ1 )
p( x | ω 2) é uma N (μ2 , σ21 )
p( x | ω j )=
√2 π σ
1
2
j
{
exp −
1
2σj
2
(x−μ j)
2
}
A densidade Gaussiana possui apenas 2 parâmetros e portanto necessitamos estimá-los a partir das
amostras de treinamento. Essa é a fase de treinamento do classificador. Para o classificador
Bayesiano sob hipótese Gaussiana no caso 1D, o treinamento consiste basicamente na estimação
dos parâmetros μ j , σ2j para todas as classes, ou seja, para j=1,2,. .. , c .
onde p( X ; ⃗
θ ) é a densidade conjunta das variáveis observadas como função dos parâmetros, ou
seja:
n
θ )=∏ p (xi ; ⃗
p( X ; ⃗ θ)
i=1
com p( x i ; ⃗θ )=
√2 π σ
1
2 {
exp −
1
2σ
2
(x i−μ)2
} .
Aplicando o logaritmo:
[ ]
n n
1 1 1
θ )=∑ log
log p( X ; ⃗ (x i−μ) =n log(2 π σ ) − 2 ∑ ( xi −μ )
2 2 −1/ 2 2
−
i=1 √2 π σ 2
2σ 2
2 σ i=1
Pode-se mostrar que na família exponencial, cuja distribuição Gaussiana é um membro, a função
log-verossimilhança é côncava, ou seja, ela admite um máximo. Sob essas condições, para
encontrar os parâmetros que maximizam tal função, devemos derivar log p( X ; ⃗
θ) em relação a
cada um dos parâmetros e igualar o resultado a zero:
n
∂ log p ( X ; ⃗ 1
2∑
θ )=−2 (x i−μ)(−1)=0
∂μ 2 σ i=1
∑ ( x i−μ )=0
i=1
∑ x i−n μ=0
i=1
Rearranjando os termos:
n
n 1 1
= 4 ∑ ( x i−μ)2
2 σ 2σ i=1
2
Funções de decisão
d j (x )=log
[√ ] 1
2 π σ 2j
1
−
1
2σj
2
(x−μ j)2 + log p( ω j )
1 −
d j (x )=log ( 2 π σ 2
j )
2
2
(x−μ j)2 + log p(ω j )
−
2σj
1 1 1 1 1
d j (x )=− log ( 2 π σ 2j )− 2 (x−μ j)2 +log p(ω j )=− log ( 2 π )− log ( σ2j ) − 2 ( x−μ j )2+ log p (ω j)
2 2σj 2 2 2σj
1 2 1 2
d j (x )=log p( w j)− log(σ j )− 2 ( x−μ j)
2 2σj
Caso as classes sejam equiprováveis, p(ω1 )= p(ω2)=0.5 e as funções de decisão podem ser
simplificadas ainda mais. Note que quanto maior o valor de d j ( x ) mais evidência a favor da
classe w j . Ao observar uma amostra x, plugamos seu valor em cada uma das funções de decisão
e atribuímos a essa amostra x o rótulo da classe com o maior valor de d j ( x ) .
d 1 (x)=d 2 ( x)
1 2 1 2 1 2 1 2
log p(w 1)− log σ1− 2 ( x−μ 1) =log p (w 2)− log σ 2− 2 ( x −μ 2)
2 2 σ1 2 2σ 2
Isso significa que queremos encontrar o valor de x tal que há um empate nos valores da função de
decisão, sendo impossível decidir por ω1 ou ω2 .
Por exemplo, suponha um problema 1D de 2 classes equiprováveis, com classes Gaussianas de
variâncias iguais, ou seja, apenas os parâmetros μ1 e μ 2 são diferentes. Nesse caso, é
possível mostrar que o limiar de decisão T é exatamente o ponto médio do segmento de reta
definido pelo intervalo [μ 1 ,μ 2 ] . O cenário de problema desse tipo é ilustrado pela figura a seguir.
Ao igualar as duas funções de decisão, nota-se que como as classes são equiprováveis e com
variâncias iguais, então
1 2 1 2
log p(w 1)− log σ1=log p (w2 )− log σ 2
2 2
1 1
2
( x−μ 1)2= 2 ( x−μ 2 )2
2 σ1 2 σ2
1 1
sendo que como os termos e são iguais e também podem ser cancelados, restando
2 σ 21 2 σ 22
2 2
μ1 −μ 2=2 x (μ 1−μ 2)
O efeito das probabilidades a priori p(ω1 ) e p(ω 2) é deslocar o limiar. Se p(ω1 )> p(ω 2)
então o limiar T desloca-se para a direita, se aproximando de μ 2 e assim aumentando a região R1
(de aceitação de ω1 ). Caso p(ω1 )< p(ω 2) , então o limiar T desloca-se para a esquerda, se
aproximando de μ1 e assim aumentando a região R2 (de aceitação de ω2 ).
Isso significa que nesse caso, na prática a classificação pode ser realizada com uma simples regra:
se amostra < T então
atribua amostra a classe 1
senão
atribua amostra a classe 2
Caso multivariado
No mundo real, a grande maioria dos problemas envolve a classificação de objetos que possuem
vários atributos. Nesse cenário, cada amostra é um vetor ⃗x =[x 1 , x 2 ,... , x d ]∈Rd . Na analogia com
o problema da classificação de indivíduos em mulheres e homens, é natural pensar em se utilizar
várias medidas para compor o vetor de padrões como peso, altura, cintura, etc.
d
Objetivo: particionar o espaço R em regiões, de modo a minimizar o erro de classificação
A maior diferença existente no caso multivariado são os modelos estatísticos assumidos para as
densidades condicionais. Agora, precisamos de densidades multivariadas. Novamente, por motivos
de simplicidade e tratabilidade matemática é comum adotarmos a hipótese Gaussiana. Temos então
a Gaussiana multivariada, N (⃗ μ , Σ) , definida por:
p(⃗x|ω j)=
1
d
2
(2 π) |Σ j|
1
2
{1 T −1
exp − (⃗x −μ⃗j ) Σ j (⃗x −μ⃗ j)
2 }
onde μ⃗j é o vetor média da classe ω j e Σ j é a matriz de covariâncias da classe ω j .
Esses dois parâmetros especificam unicamente uma densidade Gaussiana. O vetor média,
pertencente a Rd , especifica o centroide da nuvem de pontos que representa a classe. Já a matriz
de covariâncias d x d define a forma da distribuição, que pode variar entre circular e elíptica. A
forma geral da matriz de covariâncias é dada por:
{ }
2
σ 1 σ12 σ 13 ... σ 1 d
σ 21 σ 22 σ 23 ... σ 2 d
Σ= 2
σ 31 σ32 σ3 ... σ 3 d
2
... ... ... ... σd dxd
O problema consiste em dado uma amostra aleatória X ={ x⃗1 , x⃗2 , ... , x⃗n } (observação de n vetores
aleatórios Gaussianas independentes), obter estimativas para os parâmetros μ⃗j e Σ j da
distribuição Gaussiana. O método mais conhecido, denominado de máxima verossimilhança,
propõe como estimadores os valores:
μ^ , Σ
⃗ ^ =argmax { p ( X ; ⃗
θ)} com ⃗
θ=( μ
⃗ , Σ)
μ ,Σ
⃗
onde p( X ; ⃗
θ ) é a densidade conjunta das variáveis observadas como função dos parâmetros, ou
seja:
n
θ )=∏ p ( ⃗
p( X ; ⃗ xi ; ⃗
θ)
i=1
com x i ; ⃗θ )=
p( ⃗
1 1
exp − ( x⃗i−μ
d/2
(2 π) |Σ| 2
1/ 2 {
T −1
⃗ ) Σ ( x⃗i−⃗
μ) }.
Devido a tratabilidade matemática, é comum maximizar a log-verossimilhança:
n
θ )=∑ log p(x i ; ⃗
log p( X ; ⃗ θ)
i=1
[ { }]
n n
1 1
θ )=∑ log p(x i ; ⃗
log p( X ; ⃗ θ)=∑ log
T −1
exp − ( x⃗i−⃗
μ) Σ ( ⃗
x i−⃗
μ)
i=1 i =1
d /2
(2 π) |Σ|
1 /2
2
[ ]
n
1 (*)
=∑ log (2 π)
−d /2 −1 /2 T −1
+log|Σ| − (⃗
x −⃗
μ ) Σ (⃗x i−⃗
μ) =
i=1 2 i
n
nd n 1
log 2 π− log|Σ|− ∑ ( x⃗i −μ
T −1
=− ⃗ ) Σ ( x⃗i−μ
⃗)
2 2 2 i=1
Distribuindo o somatório:
n
∑ x⃗i−n ⃗μ =0
i=1
onde A, B e C denotam matrizes arbitrárias. O interesse nesse resultado deve-se ao fato de que ele é
útil no cálculo de derivadas de formas quadráticas. Em particular, é preciso computar a derivada de
uma expressão da forma ⃗x T A ⃗x , com relação a matriz A. O segredo consiste em expressão essa
fórmula como segue:
onde a primeira igualdade advém do fato de que o traço de um escalar é igual ao próprio escalar. Do
cálculo multivariado, pode-se mostrar que:
∂ tr [BA ]=BT
∂A
de modo que podemos utilizar esse resultado para calcular a derivada de uma forma quadrática:
∂ log|A|=( A−1 )T
∂A
A seguir são discutidas brevemente algumas propriedades interessantes das matrizes de covariâncias
[ ]
Gaussiana da direita possui Σ= 10 5 . Note que a existência de covariância entre as variáveis
5 5
faz a elipse rotacionar seus eixos.
Em resumo, no caso 2-D temos: Σ=
[ σ21
σ21
σ 12
σ 22 ]
A seguir são listados algumas variantes que podem ocorrer na prática.
[ ]
Σ= 3 0
0 3
x1
x2
b) σ21 > σ22 e σ12=σ 21=0
→ Variância maior no eixo x1 (espalhamento maior em x1)
→ Não há correlação
→ Curvas de nível são elipses “deitadas”
x1
x2
c) σ21 > σ22 e σ 12=σ 21=+0.5
→ Variância maior no eixo x1
→ Existência de correlação positiva
→ Curvas de nível são elipses na diagonal (ao aumentar x1 aumenta x2 também)
x1
x2
x1
Distância de Mahalanobis
Funções de decisão
Da mesma forma que no caso 1D, podemos definir funções de decisão para cada classe substituindo
as densidades condicionais em d j ( x ) :
[ ]− 12 (⃗x−μ⃗ ) Σ
d 1
− −
2 2 T −1
d j (⃗x )=log (2 π) |Σ j| j j (⃗x −μ⃗j )+log p(ω j )
d 1 1
d j ( ⃗x )=− log (2 π)− log|Σ j|− ( ⃗x −μ⃗j )T Σ−1
j (⃗
x −μ⃗ j)+ log p( ω j )
2 2 2
1 1 T −1
d j ( ⃗x )=log p( ω j )− log|Σ j|− ( ⃗x −μ⃗j ) Σ j ( ⃗x −μ j )
2 2
→ Caso 1) quando todas as matrizes de covariâncias das classes são idênticas e diagonais
(utilizamos a mesma matriz de covariância para todas as classes)
→ Caso 2) quando todas as matrizes de covariâncias das classes são iguais mas não diagonais
(utilizamos a mesma matriz de covariância para todas as classes)
→ Caso 3) quando todas as matrizes de covariâncias são distintas (uma para cada classe)
Caso 1: Σ j =σ2 I
pois o determinante de uma matriz diagonal é o produto dos elementos da diagonal e a inversa de
uma matriz diagonal é simplesmente o inverso de σ2 vezes a matriz identidade.
Assim, temos:
d 1
d j ( ⃗x )=log p( ω j )− log σ 2− 2 ‖⃗x −μ⃗ j‖2
2 2σ
Mas como o termo do meio é constante (não depende de j), podemos eliminá-lo:
1 2
d j ( ⃗x )=log p( ω j )− 2
‖⃗x −μ⃗ j‖
2σ
1 T T T
d j ( ⃗x )=log p( ω j )− 2
[ ⃗x ⃗x −2 ⃗
μ j ⃗x + μ
⃗j μ⃗ j]
2σ
Como o termo quadrático em ⃗x é constante (não depende de j) pode ser descartado, levando a:
1 T 1 T
d j ( ⃗x )= μ
⃗ ⃗x − 2 ⃗
2 j
μj ⃗
μ j +log p(ω j )
σ 2σ
⃗ Tj ⃗x +w j 0
d j (⃗x )= w
1 1 T
com w⃗ j= μ
⃗
2 j
e o bias w j 0=log p( ω j )− μ μ
⃗ ⃗
2 j j
σ 2σ
Por essa razão, nesse caso, chamamos essa função discriminante de linear.
Iremos agora obter analiticamente as superfícies de decisão para esse caso fazendo:
d j (⃗x )=di (⃗
x)
T T
w
⃗ j +w j 0= w
⃗ i + wi 0
1 T 1 T 1 T 1 T
μ ⃗x + log p(ω j )− 2 ⃗
⃗
2 j
μj μ
⃗ j= 2 μ
⃗ i ⃗x +log p(ω i)− 2 ⃗
μi μ
⃗i
σ 2σ σ 2σ
⃗
T
μj ⃗
x −μ
T
⃗ i ⃗x −σ log
2
( )
p (ω j) 1 T
− (⃗
p(ωi ) 2
μj μ
⃗ j −μ
T
⃗i μ⃗ i )=0
Colocando (⃗ μ i )T
μ j−⃗ em evidência:
(⃗
[ ‖⃗
2
μi )T ⃗x + σ 2 log
μ j−⃗
μ j −⃗
μ i‖
p (ω j)
p(ωi) ((⃗
μ j −⃗) 1
μ i)− (⃗
μ +⃗
2 j i
μ ) =0
]
E finalmente chegamos na equação linear de um hiperplano separador:
1
(
p( ω j )
)
2
com w
⃗ =(⃗ μ i) e
μ j−⃗ ⃗x 0= (μ μi )− σ 2 log
⃗ j +⃗ (⃗
μ j− ⃗
μi )
2 ‖⃗
μ j−⃗
μ i‖ p(ω i)
A equação acima define um hiperplano separador que passa pelo ponto x⃗0 e é ortogonal a
diferença das médias. Se as classes são equiprováveis, ou seja, p(ω j)=p (ωi ) , o ponto x⃗0 se
torna a mediatriz do segmento de reta que une as médias (ponto médio).
Caso 2: Σ j =Σ (todas as matrizes de covariâncias são iguais mas não diagonais)
1 T −1 1 T −1 T −1 1 T −1
d j ( ⃗x )=− ( ⃗x −μ
⃗ j) Σ ( ⃗x −μ
⃗ j )+log p (ω j)=log p (ω j)− ⃗x Σ ⃗x + μ
⃗ j Σ ⃗x − μ
⃗ Σ μ ⃗j
2 2 2 j
A expansão de d j (⃗x ) revela um termo quadrático ⃗x T Σ−1 ⃗x que não depende de j. Dessa
forma, chega-se novamente a uma função discriminante linear dada por:
T
d j (⃗x )= w
⃗ ⃗x +w j 0
1 T −1
com w⃗ j=Σ−1 μ
⃗j e w j 0=− μ
⃗ Σ μ ⃗ j + log p(ω j )
2 j
com w −1
⃗ =Σ (⃗μ j−⃗
1
μ i ) e ⃗x 0= ( μ
⃗ +⃗
μ )−
log
( p(ω j )
p (ωi )
(μ
⃗ j −μ
)
⃗ i)
2 j i (μ ⃗ i)T Σ−1 ( ⃗
⃗ j −μ μ j −⃗
μi )
Note porém que o hiperplano não é mais ortogonal a diferença das médias.
Caso 3: Σ j arbitrário (matrizes de covariâncias diferentes para cada classe)
1 1
d j ( ⃗x)=log p( ω j )− log|Σ j|− ( ⃗x −μ⃗ j)T Σ−1
j (⃗
x −μ j )
2 2
1 1 1 T −1
d j ( ⃗x)=log p( ω j )− log|Σ j|− ⃗x T Σ−1
j ⃗ μTj Σ−1
x +⃗ j ⃗x− μ
⃗ Σ μ ⃗
2 2 2 j j j
d j (⃗x )=⃗x T W j ⃗x + w
⃗ Tj ⃗x +w j 0
onde
1 1 T −1 1
W j=− Σ−1
j ⃗ j=Σ−1
, w j ⃗μ j e w j 0=− ⃗μ j Σ j ⃗μ j− log|Σ j|+log p( ω j)
2 2 2
Nesse caso, as superfícies de decisão são quadráticas e podem assumir diferentes formas, como
hiperparaboloides, hiperelipsoides, hiperesferas e hiperboloides.
Limites superiores para o erro na classificação Bayesiana
Na classificação Bayesiana é possível obter analiticamente limites para a probabilidade de erro. Tais
limites fornecem gariantias teóricas para a máxima probabilidade de erro em problemas de decisão.
ou seja, devemos minimizar p(erro | ⃗x ) para fazer a probabilidade de erro ser o menor possível.
Iremos calcular a probabilidade de erro ao observar o padrão ⃗x . Note que num problema de
classificação binário, temos:
p(erro | ⃗x )=
{
1−p (ω1 |⃗x), ⃗x ∈ω1
1−p (ω2 |⃗x), ⃗x ∈ω2
o que é equivalente a
{
p(erro | ⃗x )= p (ω2 |⃗x ), ⃗x ∈ω1
p (ω1 |⃗x ), ⃗x ∈ω2
Note que pela regra de decisão MAP definida em (*), podemos escrever:
Para que seja possível derivar um limite para o erro de Bayes, precisamos fazer uso da seguinte
desigualdade matemática:
β 1−β
min[a , b]≤a b (**)
para a , b≥0 e0≤β≤1 . Iremos omitir a prova desse teorema, mas para entender o resultado
()
β
β 1−β a
de maneira intuitiva, assuma a≥b . Então, devemos mostrar que b≤a b = b , o que é
b
trivialmente verdadeiro pois claramente
a β
b ()
≥1 . Assim, aplicando a desigualdade na expressão
para p(erro) temos:
1
p(erro)≤∫ min[ p( ⃗x | ω1) p(ω 1), p (⃗x | ω2 ) p (ω2 )] p( ⃗x )d ⃗x
p(⃗x )
p(erro)≤∫ p ( ⃗x | ω1 ) p (ω1 ) p( ⃗x | ω2 )
β β 1−β 1−β
p(ω 2) d ⃗x
onde
O problema é que computar o limite de Chernoff não é tão direto como gostaríamos. O limite de
Chernoff é calculado numericamente encontrando o valor de β que minimiza e−k(β) e
substituindo seu valor em na expressão (***).
Algumas observações interessantes podem ser feitas sobre o limite de Chernoff. Primeiramente,
note que a integral em (****) é igual a uma exponencial negativa. Isso significa que quanto maior o
valor de k (β) menor o valor de εβ . Note que no caso hipotético de termos a diferença entre as
médias tendendo a infinito, k (β) também tende a infinito, fazendo e−k(β) ser igual a zero,
indicando que a probabilidade de erro é nula (as duas Gaussianas estão muito distantes). Por outro
lado, se as médias forem iguais e as matrizes de covariâncias também forem, k (β) tende a zero,
fazendo o valor de e−k(β) ser igual a 1, que é o maior valor possível.
| |
Σ 1+ Σ 2
[ ]
−1
1 T Σ1 +Σ 2 1 2
k (1 /2)= (⃗
μ2−⃗
μ 1) (⃗
μ 2−⃗
μ 1 )+ log
8 2 2 √|Σ1||Σ2|
Note que quanto maior a distância de Bhattacharyya entre as Gaussianas, menor o valor de
e−k(1/ 2) e o limite superior para a probabilidade de erro, o que é bastante razoável. Esse limite é
mais fácil de ser computado, sendo uma aproximação muito boa para o limite de Chernoff na
prática.
Classificação não paramétrica
O classificador Bayesiano é um modelo paramétrico, no sentido de que é necessário assumir um
modelo estatístico para os dados a serem classificados. Em algumas situações, a estimação dos
parâmetros de tais modelos pode ser muito difícil, ou até mesmo impossível (por exemplo, se uma
determinada classe possui apenas uma ou duas amostras, como estimar a matriz de covariâncias?).
Por essa razão, diversas técnicas de classificação não paramétricas foram desenvolvidas, dentre as
quais podemos citar o classificador de mínima distância, o classificador KNN e as máquinas de
vetores de suporte (SVM).
Regra de decisão: Atribuir ⃗x a classe ω j cuja média é mais próxima (centroide mais
próximo). Em outras palavras, deseja-se minimizar a distância entre ⃗x e a média da classe ω j
2,
D j (⃗x )=‖⃗x −μ j‖ j =1,2, ... c
Porém note que quanto menor esse valor, melhor. Para escrever a função discriminante, tomamos o
negativo de D j (⃗x ) :
T 2 T T T
d j (⃗x )=−D j (⃗x )=−(⃗x −⃗
μ j ) (⃗x −⃗
μ j )=−[‖⃗x‖ −⃗x ⃗
μ j−⃗
μ j ⃗x + μ
⃗ j μ⃗j ]
T 1 T
d j ( ⃗x )=⃗x ⃗μ j− μ
⃗ ⃗μ
2 j j
de modo que a regra agora se torna: atribuir ⃗x à classe que maximiza a função d j (⃗x ) .
Interpretação Geométrica
d i (⃗x )=d j ( ⃗
x)
T 1 T T 1 T
⃗x μ⃗ i− μ μ i=⃗x μ
⃗i ⃗ ⃗j− μ
⃗ μ⃗
2 2 j j
T 1 T T
⃗x ( ⃗
μi −μ
⃗ j )− (μ μ −μ
⃗ ⃗ ⃗j μ⃗ j)=0
2 i i
T 1
⃗x ( ⃗
μi −μ
⃗ j )− (μ μ j )T ( ⃗
⃗ i−⃗ μi + ⃗
μ j)=0 (o segundo termo é um bias que desloca o hiperplano)
2
1
Ao projetar ( μ⃗ + μ⃗ ) na direção da diferença das médias (μ⃗1−μ⃗2) temos a distância d, que
2 1 2
representa justamente o offset (bias) do hiperplano (distância em relação a origem). A superfície de
decisão é linear (não há termo quadrático) e ortogonal a diferença das médias. O cenário é
equivalente caso 1 do classificador Bayesiano sob hipótese Gaussiana, em que todas as matrizes de
covariâncias são iguais a σ2 I O hiperplano de decisão é definido pelo conjunto de todos os
vetores que distam d da origem e cujo produto escalar com a diferença das médias resulta em zero).
Portanto, trata-se de um classificador não paramétrico e linear.
θ≈ p( x)V (*)
A probabilidade θ pode ser aproximada pela proporção de amostras que caem na região de
volume V. Se K é o número de amostras de um total de N que caem na região então:
K
θ≈ (**)
N
K
p(x)=
NV
Assim, podemos estimar a probabilidade condicional da classe ω j de modo não paramétrico por:
Kj
p(⃗x|ω j)=
N jV R
Nj
p(ω j)=
N
onde N é o número total de amostras disponíveis. Então, pelo critério MAP, devemos atribuir
⃗x a classe ω j se:
ou seja se ,
Kj N j Ki Ni
>
N jV R N NiV R N
Pergunta: A partir de um espaço de funções F, como escolher f^ de modo a garantir que o erro de
treinamento seja baixo e a capacidade de generalização seja alta? TAE nos fornece condições
matemáticas para se atingir esse objetivo. Tudo isso sem assumir hipóteses acerca da distribuição
dos dados (abordagem não paramétrica)
É preciso primeiramente definir um espaço de funções F da qual nosso calssificador fará parte
(espaço de funções possíveis de serem aprendidas pelo classificador).
Fall Erro de aproximação F : espaço das funções que classificador pode aprender
fF
f F : classificador de mínimo risco em F
Erro de estimação F f bayes : classificador de mínimo risco possível
fn
Podemos associar um risco R a cada possível classificador (assim como visto na Teoria de Decisão
Bayesiana). Denotamos de R( f n) o risco do classificador f n , para uma amostra de tamanho n.
Problema: Para F → Fall, aprendizado não é consistente (se F cresce muito, não consigo aprender).
Dilema: Se F é muito grande → erro de estimação muito grande (não é consistente pois f n não
consegue se aproximar de f F ). Por outro lado, se F é muito pequeno → erro de aproximação é
muito grande ( f n longe de f bayes pois F restringe possibilidades), mas é consistente.
A pergunta fundamental é: como escolher F contido em F all e f^ ∈ F ? A TAE nos ajuda a resolver
esse problema propondo as Suport Vector Machines (SVM's) que é uma classe de funções
(classificadores) ótimos no que diz respeito ao compromisso entre os erros de estimação e
aproximação (compromisso entre F pequeno ou grande).
Hipótese: dados são gerados de forma i.i.d (independente e identicamente distribuídas) de acordo
com P(⃗x , y ) que descreve a relação entre as amostras e seus rótulos (distrib. conjunta)
Exemplo: função de custo é outra forma de ver a matriz de perdas (contínua x discreta)
1
c ( f (⃗x ), y)= |y−f (⃗x )|
2
{
f ( ⃗x )= −1, x∈ω 1
1, x ∈ω2
Existe nesse caso, o risco empírico, que mede o desempenho de f apenas no conjunto de
treinamento.
n
1
Remp (f )= ∑ c(f ( x⃗i ), y i )
n i=1
(Uma média da função de perda)
OBS: Risco empírico nada mais é que uma contagem de quantos erros há no conjunto de
treinamento.
√ ( )
2n
h ln +1 −ln θ
h 4
R( f )≤Remp ( f )+
n
A dimensão-VC h é um atributo de uma classe de funções F que mede a complexidade das funções f
que se pode aprender desse conjunto. Quanto maior h, mais complexas as funções em F.
Ex:
2
⃗x ∈ R (domínio – plano)
F : conjunto das retas no plano
VC dim ( F)=h=3
As funções f ∈F atribuem rótulo 1 para amostras de uma lado da reta e -1 para amostras do outro
lado. Veremos que o número máximo de pontos que podem ser separados por uma reta no plano é 3,
pois exste uma configuração de 3 pontos no plano (figura abaixo) que pode ser fragmentada
corretamente por uma reta em todas as possíveis combinações de rótulos ( 23=8 ). Dada uma
disposição quaisquer de pontos, quais são as possíveis combinações de rótulos binários essa
configuração geral?
Não importa a combinação de rótulos nos pontos, com uma única reta (f in F) consigo separar as
amostras. Porém, não existe configuração de 4 pontos em R^2 que possa ser particionada por uma
reta (para todas as combinações de rótulos). → Problema do XOR (exige uma função de
complexidade maior que reta)
Princípio da Minimização do Risco Estrutural
O risco empírico R( f ) pode ser minimizado pela escolha adequada por parte do algoritmo de
aprendizado de um classificador f^ que minimize o risco empírico Remp ( f ) e pertença a uma
classe de funções F com baixa dimensão-VC.
Pode-se observar que a equação que define um limite superior para o risco empírico é composta por
dois termos principais:
Podemos dividir o conjunto de todas as possíveis funções (F), conforme ilustra a figura a seguir:
F0 F1 F2 F3
de modo que h0 <h 1< h2< …<hi (conforme o conjunto cresce, sua dimensão VC aumenta)
Erro
Termo de Capacidade
R( f )
Remp
h
Problema: Computar dimensão VC h de uma classe F não é trivial (pode ser até infinita).
Pode-se mostrar que para a classe F de funções lineares, com probabilidade (1−θ) , θ∈[0,1] e
ρ> 0 vale a seguinte relação (limite superior para risco esperado):
R( f )≤R ρ (f )+
√( [
c R2
n ρ 2 ( )
2 n 1
log ρ +log ( )
θ ])
onde ρ define a margem de segurança, Rρ (f ) é o erro marginal no conjunto de treinamento
(número de amostras do conjunto de treinamento que não satisfazem a margem de segurança ρ )
e R é uma constante.
Em resumo:
Caso (i) : ρ muito grande, diminui o termo de capacidade e aumenta o Rρ (Erro marginal)
Caso (ii) : ρ muito pequeno, diminui o Rρ mas aumenta o termo de capacidade
Objetivo: Encontrar hiperplano que maximiza margem e cometa poucos erros marginais (isso é que
minimize Rρ )
→ Essa ideia é a base para a construção das máquinas de vetores de suporte (as SVM's)
Máquinas de vetores de suporte
Observações:
⃗ ⃗x =0
H =ω + ⃗ ⃗x +b=0
H =ω
-
b ⃗ ⃗x +b> 0
ω
⃗‖
‖w
⃗ ⃗x +b< 0
ω
H
H
ω
⃗⃗x i+ b>1
ω
⃗⃗x i+b<−1
⃗ ⃗x +b=1
H 1=ω
⃗ ⃗x +b=0
H =ω
⃗ ⃗x +b=−1
H 2=ω
Sendo assim, temos o seguinte cenário para um Conjunto de treinamento para problema binário (2
d
classes): T ={(⃗
x i , y i )}, i=1,... , n , ⃗
xi ∈ R , y i ∈{−1, 1}
H 1:ω
⃗⃗ x i+ b=1⇒ ω
⃗ x⃗i +(b−1)=0
H2: ω
⃗ x⃗i +b=−1⇒ ω ⃗ x⃗i +(b+1)=0
ω
⃗ ⃗x i+b≤−1 se y i≤−1
ω
⃗ x⃗i +b≥1, se y i≥1
y i (⃗
ω⃗x i+ b)−1≥0, ∀( x⃗i , y i )∈T → Restrição do problema
b+1 b−1 1 2
− = (b +1−b+1)=
⃗ ‖ ‖ω
‖ω ⃗ ‖ ‖ω
⃗‖ ⃗‖
‖ω
de modo que para maximizar a margem de separação (distância entre vetores de suporte), devemos
minimizar ‖ω‖ .
1 2
ω‖ sujeito a
minω⃗ , b= ‖⃗ y i (⃗
ω⃗x i+ b)−1≥0 para i=1,2,. .., n (note que há n restrições)
2
Obs: As restrições garantem que não exista dados de treinamento entre margens de separação.
A função Lagrangiana (L) deve ser otimizada, o que implica em maximizar as variáveis αi e
minimizar ω⃗ e b. Deve-se portanto encontrar as soluções de:
∂ L( ω
⃗ ,b,α
⃗ )=0
∂b
∂ L( ω
⃗ ,b,⃗
α )=0
∂ω⃗
∑ α i y i =0 e ⃗ =∑ αi y i x⃗i (*)
ω
i=1 i=1
Substituindo as expressões encontradas em (*) na forma primal, obtém-se a forma dual do problema
de otimização:
{ }
n
1
n n αi ≥0, ∀ i=1, 2,... , n
max α⃗ ∑ α i− ∑ ∑ α i α j y i y j ( x⃗i x⃗j) sujeito a n
2 i=1 j=1
i=1
∑ αi y i=0
i=1
Vantagem: função objetivo definida em termos de uma única variável de interesse (vetor α ⃗ ),
além de permitir expressar o problema em termos de produtos escalares. (o que será muito útil na
* *
generalização para SVMs não-lineares). Assim, se α ⃗ é a solução do problema dual, ω⃗ pode
ser computado diretamente pela equação (*). Para computar b* , pode ser mostrado que:
*
αi ( y i ( ω
⃗ x⃗i +b)−1)=0, ∀ i=1,2,... , n (condições de Karush-Kuhn-Tucker são condições
necessárias para que uma solução seja ótima num problema
de otimização)
Note que como δ= y i ( ω ⃗⃗ xi +b)−1=0 apenas para amostras que se encontram sobre os
hiperplanos H 1 ou H 2 , para que (**) seja satisfeita α*i pode ser não nulo apenas para os
vetores ⃗ x i que se encontram sobre os hiperplanos H 1 e H 2 . Isso implica que α*i =0
para todos as demais amostras (que encontram-se além das margens definidas por H 1 e H 2 ).
Esses pontos não participam do cálculo de ω ⃗ . Os dados que possuem α*i > 0 são chamados
“vetores de suporte” e são as amostras mais próximas do hiperplano separador H, sendo as mais
informativas do conjunto de treinamento.
Assim, b* é uma função apenas dos vetores de suporte . Pode-se mostrar que:
b=
* 1
∑
1
n sv x ∈SV y j
j
−⃗
{*
ω x⃗j
}
nsv denota o número de vetores de suporte e SV é o conjunto dos vetores de suporte.
*
Ou ainda, substituindo ω
⃗ por (*):
b=
* 1
∑
1
{
− ∑ αi yi ( x⃗i x⃗j )
n sv x ∈SV y j ⃗x ∈SV
j
*
i
} (<>)
Solução dada em termos dos produtos internos entre cada par de vetores de suporte.
Portanto, como resultado tem-se a seguinte regra de decisão/classificação:
ω ⃗x +b }=sgn { ∑ y i α i (⃗
* * * *
g(⃗x )=sgn {f (⃗x )}=sgn {⃗ x i ⃗x )+ b }
x i ∈SV
⃗
onde sgn denota a função sinal, de modo que a amostra ⃗x é classificada como classe 1 se
g(⃗x )< 0 (sinal negativo) e classificada como classe 2 se g(⃗x )> 0 . Note que os parâmetros a
* * *
serem aprendidos na etapa de treinamento ω ⃗ e b . Enquanto ω ⃗ controla a inclinação do
hiperplano separador ótimo, b* define sua posição em relação as margens H 1 e H 2 .
SVM com margens suaves
Ideia: Lidar com sobreposição entre as classes, permitindo que alguns elementos/amostras possam
violar a restrição e situem-se entre as margens.
Variáveis de folga tem o papel de suavizar as margens (algumas amostras podem permanecer entre
hiperplanos H 1 e H 2 ). Nesse caso, a função objetivo fica:
{ }
n
1
minω⃗ , b ,⃗ϵ ω‖2+ C( ∑ ϵi )
‖⃗ sujeito a restrição R1 acima, onde ϵ i∈[0,1] indica dados entre
2 i=1
as margens
sujeito as restrições ∑ α i y i =0, ∀ i (note que agora αi é limitada superiormente por cte C)
i=1
0≤αi≤C
Assim como no caso anterior, b* precisa ser computado como uma média num conjunto SV de
vetores de suporte. Na definição desse conjunto, temos as duas seguintes condições (KKT):
α*i ( y i( ω
⃗ * x⃗i +b *)−1+ ϵ* )=0 (I)
Os pontos ⃗ x i para os quais α*i > 0 são os SV's. Porém, nesse caso existem vários tipos de
vetores de suporte, de acordo com os valores de α*i e ϵ *i :
i) Se α*i <C , então pela equação (II) temos que ϵ *i =0 e da equação (I) conclui-se que esses
SV's estão sobre as margens (hiperplanos H 1 e H 2 ).
ii) Se α*i =C , tem-se 3 situações possíveis:
A) ϵ *i >1 → ERROS (SV's cruzam o hiperplano – erro de treinamento)
B) 0⩽ϵ*i <1 → amostras entre margens (OK – Não é erro)
C) ϵ *i =0 → caso raramente ocorre (sobre as margens de acordo com (I))
α=0
ρ αi =C ,ϵi ∈[0,1]
αi <C ,ϵ i =0
ϵi >1
α=0 H
αi <C ,ϵ i =0
*
Sendo assim, para calcular b computa-se a média dada pela equação (<>) sobre todos os SV's
com α*i <C , ou seja:
b*=
1
∑ (1
− ∑ α *i y i ( ⃗
n v :(α <C ) x⃗ ∈ SV :(α <C) y i x⃗ ∈ SV
*
j
*
i
x i x⃗ j)
)
OBS: Note que o somatório mais externo é sobre os SV's que satisfazem α*i <C e o segundo
somatório (interno) envolve todos os SV's (tanto livres quanto limitados).
SVM Não-Lineares
[ ]
n n n
1
maxα⃗ ∑ αi − ∑ ∑ α α y y (Φ( ⃗xi )Φ( x⃗j ))
2 i=1 j =1 i j i j
i=1
Obs: b* é dado pela mesma expressão anterior (margens suaves) com aplicação da função Φ .
b*=
1
∑
n sv : α < C x⃗ ∈ SV :α <C
*
j
* [ 1
− ∑ α*i y i Φ ( ⃗
y j x ∈SV i
x i) Φ( x⃗j)
]
Problema: Como projetar operador de mapeamento Φ ?
- Cômputo variável devido a alta dimensão (i.e., como fazer para mapear do plano para R100?)
- Pode ter dimensão infinita
Solução: Funções de Kernel (não é necessário conhecer mapeamento em si, apenas como realizar
produtos escalares no novo espaço)
K(⃗
xi , ⃗
x j )=Φ ( ⃗
x i) Φ ( x⃗j )
A função Kernel recebe dois vetores no espaço de entrada e retorna o valor do produto escalar entre
eles no espaço de características (maior dimensão)
Ex:
x i=(x 1 i , x 2 i) , x⃗j=( x 1 j , x 2 j )
⃗
K ( x⃗i , x⃗j )=Φ( x⃗i) Φ ( x⃗j )=(x 1 i √(2) x 1 i x 2 i , x 2i )(x 1 j √(2)x 1 j x2 j , x 2 j )
2, 2 2, 2
2 2 2 2 2
(x 1i x 1 j +2 x 1 i x 2 i x 1 j x 2 j + x 2 i x 2 j )=( x⃗i x⃗k )
Obs: Uma função de kernel K satisfaz as condições de Mercer se dá origem a uma matriz positiva
semi-definida K onde K ij =K ( x⃗i , x⃗ j) (Os autovalores são todos maiores ou iguais a zero).
Exemplo de Kernels:
d
a) Polinomial: K ( x⃗i , x⃗j )=(⃗
x i x⃗j )
{ }
2
−‖⃗
xi− x⃗j‖
b) Gaussiano: K ( x⃗i , x⃗j )=exp σ
Outros desafios
K-Médias (K-Means)
→ Método não supervisionado (não faz uso de rótulos disponíveis no conjunto de treinamento)
→ Algoritmo de clustering: agrupamento de dados de acordo com similaridade
→ Depende fortemente da distância utilizada (Euclidiana, norma L1, Mahalanobis, cosseno, ...)
Note que desejamos que os centros dos grupos estejam o mais próximo possível dos dados.
Pode-se verificar que encontrar a solução ótima para esse problema é NP-Hard para um número
qualquer de dimensões d. A heurística adotada pelo K-médias para simplificar o problema consiste
em fixar o valor de K.
P2) Associar cada amostra x i ao agrupamento mais próximo (centro mais próximo)
P3) Atualiza os centros dos clusters (novo centro é a média dos pontos do agrupamento)
1
μ(tj +1)= ∑ ⃗x , j=1,2, ... ,c
N j x ∈ω i
i j
P4) Se não houverem mudanças nos rótulos (centros não mudaram), algoritmo convergiu
→ Critério de parada
Senão, retorne ao passo P2.
Problemas:
→ Sensibilidade à escolha randômica do conjunto de centros iniciais. Diversas vezes é comum
utilizar-se de algum tipo de supervisão na seleção dos centros iniciais (1 amostra representativa de
cada classe).
→ Escolha incorreta do número de clusters (K)
→ Dados com anisotropia (dados fortemente correlacionados)
Gaussian Mixture Models (GMM)
Esse classificador não supervisionado pode ser considerado como uma generalização do algoritmo
k-médias, em que ao invés de tentar estimar apenas os centroides de cada agrupamento, tentamos
estimar além deles a forma e a proporção de cada Gaussiana da mistura observada.
Dados X ={⃗x 1 , ⃗x 2 ,... , ⃗x n } com ⃗x i∈ R d , assumimos que as observações são amostras iid
(independentes e identicamente distribuídas) de uma densidade p(⃗x ) . Assumimos também que a
densidade p(⃗x ) é uma mistura finita de K componentes:
K
p(⃗x ; ⃗θ )=∑ πk p (⃗x | ⃗
μ k , Σ k )=π 1 p(⃗x | μ
⃗ 1 , Σ 1)+ π2 p(⃗x | μ
⃗ 2 , Σ2 )+...+π K p(⃗x | ⃗
μ K , ΣK )
k=1
K
onde ∑ πk=1 e ⃗
θ=( π1 , ..., π K , ⃗
μ1 , ..., ⃗
μ K , Σ 1 , ... , Σ k )
k=1
p(⃗x|μ
⃗ k , Σ k )=
1
d /2
(2 π) |Σk|
1
{ T −1
exp − (⃗x −μ⃗k ) Σk (⃗x −μ⃗k )
2
1 /2 }
→ Os pesos π k representam a probabilidade de que um ⃗x selecionado aleatoriamente tenha
sido gerado gerado pela componente k.
Formulação matemática
L( ⃗
θ ; X , Z)= p ( X , Y | ⃗θ )
Entretanto, essa quantidade é geralmente intratável, pois computar a integral quase nunca é
possível. O algoritmo EM busca encontrar o EMV da verossimilhança marginal iterativamente
aplicando os dois passos a seguir:
Q( ⃗
θ | ⃗θ (t ) )=E Z| X , ⃗θ [log L( ⃗θ ; X , Z )]
(t )
⃗ argmax
θ(t +1)= ⃗ Q( ⃗θ | ⃗θ(t ))
θ
Os modelos típicos nos quais o algoritmo EM é aplicado usam Z como variável latente indicando a
pertinência das amostras X em um de um conjunto de grupos/clusters.
Obs:
1) As observações X podem ser tanto discretas quanto contínuas (Gaussianas por exemplo);
2) As variáveis latentes Z são discretas, podendo assumir um número fixo de valores, de modo que
podemos associar uma variável latente por observação;
3) Os parâmetros são contínuos e podem ser de dois tipos: parâmetros associados a todas as
amostras, e parâmetros associados com um valor específico de variável latente;
Prova de corretude
Antes de aplicar o algoritmo EM no modelo GMM é essencial entender como as iterações propostas
anteriormente fazem o método convergir para o EMV. O conceito chave para entender a
convergência do EM é saber que ele funciona melhorando Q( ⃗ θ | ⃗θ (t ) ) ao invés de melhorar
diretamente a log-verossimilhança marginal log p ( X | ⃗ θ ) . A ideia dessa prova consiste em
verificar que melhorias no primeiro implicam em melhorias no segundo.
p(X , Z | ⃗
θ )= p( Z | X , θ ) p(X | ⃗θ )
Aplicando o logaritmo e rearranjando os termos temos:
log p( X | ⃗
θ )=log p ( X , Z | ⃗θ )−log p( Z | X , θ )
A seguir tomamos o valor esperado sobre todos os possíveis valores dos dados desconhecidos Z sob
a estimativa atual dos parâmetros ⃗ θ(t ) . Isso pode ser feito multiplicando ambos os lados por
p( Z | X , ⃗
θ(t) ) e somando para todo Z:
EZ | X , ⃗θ [log p( X | ⃗
(t) θ )]=E Z| X , ⃗θ [log p( X , Z | ⃗θ )]+ E Z | X , ⃗θ [log p ( Z | X , ⃗θ )]
(t ) (t)
Como o termos do lado esquerdo não depende de Z (é constante), seu valor esperado é igual a ele
mesmo:
log p( X | ⃗
θ )=Q( ⃗θ | ⃗θ(t ))+ H ( ⃗θ | ⃗θ(t )) (*)
log p( X | ⃗
θ(t ))=Q ( ⃗θ(t ) | ⃗θ(t ))+ H ( ⃗θ(t) | ⃗θ(t) ) (**)
log p( X | ⃗
θ )−log p ( X | ⃗θ(t) )=Q( ⃗θ | ⃗θ(t ))−Q ( ⃗θ(t) | ⃗θ(t ))+ H ( ⃗θ | ⃗θ(t) )−H ( ⃗θ(t) | ⃗θ(t )) (***)
A desigualdade de Gibbs nos diz que se P={ p 1 , p2 ,... , p n } e Q={q1 , q2 ,... , q n } são
distribuições de probabilidade então a entropia da distribuição P é sempre menor ou igual que a
entropia cruzada de P com Q:
n n
−∑ pi log pi≤−∑ pi log qi
i=1 i=1
Dessa forma, pela desigualdade de Gibbs pode-se concluir que H (⃗ θ | ⃗θ (t ) )≥H (⃗θ (t ) | ⃗θ(t ) ) . Ora, se
isso é verdade, então H (⃗
θ | ⃗θ (t ) )−H (⃗θ (t ) | ⃗θ(t ) )≥0 e podemos concluir:
log p( X | ⃗
θ )−log p ( X | ⃗θ(t) )≥Q( ⃗θ | ⃗θ(t ))−Q ( ⃗θ(t) | ⃗θ(t ))≥0
O algoritmo EM não é perfeito. Assim como todo método, ele apresenta algumas desvantagens,
como: 1) EM modelos cuja log-verossimilhança é multimodal, podemos ficar presos em máximos
locais; 2) Convergência pode ser lenta;
Seja X ={ x⃗1 , x⃗2 , ... , x⃗n } uma amostra de n observações independentes de uma mistura de duas
distribuições Gaussianas multivariadas de dimensão d e seja Z ={z 1 , z 2 ,... , zn } as variáveis
latentes que determinam a componente de que a observação se origina. Então,
P( Zi =1)=π1 e P( Zi =2)=π2=1−π 1
Isso significa dizer que a densidade condicional de x i dado Z i igual a j é dada por:
⃗
xi | Z i= j , μ⃗j , Σ j)=
f (⃗
1
d /2
(2 π ) |Σ j|
1
2
1/ 2 {
exp − (⃗x −μ⃗j )T Σ−1 x −μ⃗j)
j (⃗ } (*)
⃗
θ =( π1, π 2, μ⃗1 , μ⃗2 , Σ 1 , Σ2)
i =1 j=1
{ }
n 2
θ ; X , Z)=exp log ∏ ∏ [ π j f (⃗x i | Zi = j , μ⃗j , Σ j )]I (z = j )
L( ⃗ i
i=1 j=1
{∑ ∑ }
n 2
L( ⃗
θ ; X , Z)=exp I ( z i= j)[log π j + log f ( ⃗
x i | Z i = j , μ⃗j , Σ j )]
i=1 j=1
{ }
n 2
1 1 d
L( ⃗
θ ; X , Z)=exp ∑ ∑
i=1 j=1
T −1
I ( z i= j)[log π j− 2 log|Σ j|− 2 (⃗x −μ⃗j) Σ j (⃗x −μ⃗ j)− 2 log 2 π ]
Passo E: Dado a estimativa atual dos parâmetros ⃗ θ(t ) , a distribuição condicional de Z i dado
X é determinada pelo Teorema de Bayes (probabilidade a posteriori):
(t ) (t )
x | Z = j , μ⃗j , Σ j ) P(Zi = j)
f (⃗
xi ,⃗
(t)
T =P (Z i= j | ⃗
j ,i θ (t ) )= 2 i i
∑ f ( x⃗i | Z i= j, μ⃗ j(t ) , Σ(tj ) ) P(Z i= j)
j=1
(t ) (t)
xi | Z i= j , μ⃗j , Σ j ) π1
f (⃗
T (t) xi ,⃗
j ,i=P (Z i = j| ⃗ θ (t ) )= (t ) (t) (t ) (t )
f ( x⃗i | Z i=1, μ⃗1 , Σ1 ) π1 +f ( ⃗
xi | Z i=2, μ⃗2 , Σ 2 ) π2
Essas medidas são como os scores de cada amostra pertencer a classe j, também conhecidas como
“membership probabilities” e usualmente são consideradas as saídas do passo E. Na realidade, em
termos matemáticos, esse passo E é responsável por definir a seguinte função para Q( ⃗
θ | ⃗θ (t ) ) :
[ ] [∑ ]
n n
θ | ⃗θ (t ) )=E Z| X , ⃗θ [ log L( ⃗θ ; X , Z) ]=EZ | X , ⃗θ log ∏ L( ⃗θ ; x⃗i , Z i) =EZ | X , ⃗θ
Q( ⃗ (t ) (t) (t) log L( ⃗θ ; ⃗
xi , Z i ) =
i=1 i=1
n n 2
=∑ E Z | X , ⃗θ (t) [ log L( ⃗θ ; ⃗x i , Zi )]=∑ ∑ P(Z i= j| x⃗i , ⃗θ(t) ) log L(θ⃗j ; ⃗x i , Z i )=
i=1 i=1 j=1
n 2
1 1 d
=∑ ∑ T (tj ,i) [log π j− log|Σ j|− (⃗x−μ⃗j )T Σ−1 x −μ⃗j )− log 2 π ]
j (⃗
i=1 j=1 2 2 2
Todos os parâmetros necessários no passo E são conhecidos anteriormente com exceção de T (t)
j ,i
que é computado no início do passo E. O valor esperado condicional não precisa ser calculada
completamente pois os parâmetros π , ⃗ μ e Σ aparecem em termos lineares separados e
portanto podem ser maximizados independentemente.
Passo M: Para iniciar, iremos estimar os parâmetros π(t1 +1) e π(t2 +1) . Para isso, note que é
possível simplificar a função Q( ⃗
θ | ⃗θ (t ) ) descartando termos constantes:
{[∑ ] [∑ ] }
n n
=argmax Q ( ⃗
θ , ⃗θ(t ))=argmax
(t +1) (t +1) (t ) (t )
π ,π T log π1+ T 2 ,i log π2
1 2
π1, π2 π1 , π 2 i =1
1 ,i
i=1
Note que isso implica que solução desse problema é dada pelo estimador de máxima
verossimilhança. Nesse caso, pode-se verificar que ele possui expressão analítica fechada. Para isso
basta derivarmos Q( ⃗θ | ⃗θ (t ) ) em relação a π1 e igualarmos o resultado a zero, lembrando que
π2 =1− π1 . Dessa forma temos:
[ ] [ ]
n n
Q( ⃗
θ | ⃗θ (t ) )= ∑
i=1
(t )
T 1 ,i log π 1+ ∑
i=1
(t)
T2, i log(1− π1)
∂Q( ⃗
θ | ⃗θ (t ) )
[ ] [∑ ]
n n
1 1
∂π1
= ∑
i=1
T (t1 ,i) π1 +
i=1
T (t)
2 ,i
(1−π1 )
(−1)=0
E isolando π1 :
[ ] [∑ ]
n n
∑ T 1 ,i (1− π1)−
i=1
(t)
i=1
(t )
T 2, i π1=0
[∑ ] [ ∑ ] [ ∑ ]
n n n
(t) (t ) (t )
T 1 ,i − T 1 ,i π 1− T 2 ,i π1 =0
i=1 i=1 i=1
[∑ ] ∑
n
T (t1 ,i) n
i=1 1
π1 = = T (t)
[∑ ]
n
(t ) (t )
n i=1
1, i
(T 1 ,i +T 2, i)
i=1
∂Q( ⃗
θ | ⃗θ (t ) ) n (t) −1
=∑ T j ,i Σ j ( ⃗
x i−μ⃗ j)=0
∂ μ⃗j i=1
E isolando μ⃗j :
n
∑
i=1
(t )
xi −μ⃗j )=0
T j,i(⃗
n n
∑
i=1
(t )
T j ,i ⃗
xi
μ⃗j= n
∑
i=1
T (t)
j ,i
onde A, B e C denotam matrizes arbitrárias. O interesse nesse resultado deve-se ao fato de que ele é
útil no cálculo de derivadas de formas quadráticas. Em particular, é preciso computar a derivada de
uma expressão da forma ⃗x T A ⃗x , com relação a matriz A. O segredo consiste em expressão essa
fórmula como segue:
T T T
⃗x A ⃗x =tr [⃗x A ⃗x ]=tr [⃗x ⃗x A ]
onde a primeira igualdade advém do fato de que o traço de um escalar é igual ao próprio escalar. Do
cálculo multivariado, pode-se mostrar que:
∂ tr [BA ]=BT
∂A
de modo que podemos utilizar esse resultado para calcular a derivada de uma forma quadrática:
Outro resultado importante do cálculo multivariado que será útil é a derivada do logaritmo do
determinante de uma matriz A:
∂ log|A|=( A−1 )T
∂A
uma vez que o determinante da inversa é igual ao inverso do determinante, de modo que agora é
possível computar a derivada em relação a Σ−1
j :
∂Q( ⃗
θ|⃗θ (t ) ) 1 n (t ) 1
n
= ∑ T j ,i Σ j− ∑ T (tj ,)i ( ⃗
xi −⃗
μ )( ⃗ μ )T =0
xi −⃗
∂ Σj
−1
2 i=1 2 i=1
∑
i=1
(t )
T j , i (⃗
x i−⃗
μ )( ⃗
x i−⃗
μ)
T
Σj= n
∑
i=1
T (t)
j ,i
μ k , Σk
1. Inicializar os parâmetros ⃗ e πk
Obs: uma maneira de inicializar os parâmetros é utilizar o algoritmo k-médias para obter:
⃗ (0)
μ k =⃗μk (centroides)
Nk
π k= (proporção do num. de amostras em cada cluster)
N
π j p( ⃗xi | μ
⃗ j , Σj)
E-step: Calcular scores T (t)
j ,i é definido como T (t)
j ,i = K
∑
k=1
πk p (⃗x i | μ
⃗k , Σk)
i=1
N
1
Nj ∑
⃗ (tj +1)=
μ T (t)
j ,i ⃗
xi
i=1
N
1
= ∑ T j ,i (⃗x i−⃗
(t +1) (t ) (t +1) (t+1 ) T
Σ μ j )(⃗x i−⃗
μj )
j
N j i=1
(t +1) Nj
πj =
N
Verossimilhança (Log-Likelihood)
→ logaritmo da densidade conjunta como função dos parâmetros
→ medida de confiança de que dados X ={⃗x 1 , ⃗x 2 ,... , ⃗x n } foram gerados pelos parâmetros
estimados
[∑ ]
N K
θ )=∑ log
log p ( X | ⃗ π k p(⃗xn | μ
⃗ k , Σk )
n=1 k=1
Deve ser computado ao final de cada iteração, quando fica constante, significa que algoritmo
convergiu, pois estamos no ponto de máxima verossimilhança.
Autovalores e autovetores: uma breve revisão
Seja V um espaço vetorial de n dimensões equipado com produto interno. Então, podemos definir:
n
⟨⃗u , ⃗
v ⟩=⃗ v = ∑ ui v i
u⋅⃗
i=1
n
v =∑ v i =‖⃗v‖
2 2
⟨⃗v , ⃗
v ⟩=⃗
v⋅⃗
i=1
Geometricamente:
Um operador linear é uma matriz que mapeia um vetor de entrada ⃗v para um vetor de saída ⃗
u
u =P ⃗
⃗ v (analogia com y=f ( x ) )
u =P ⃗
⃗ v =λ ⃗v (*)
P⃗v =λ ⃗v
Ex: Seja P=I n×n o operador identidade. Então, I n×n ⃗v =1 ⃗v ,ou seja, ∀ ⃗v ∈ Rn , ⃗v é
autovetor de I n×n com autovalor igual a 1
2
Ex: operador projeção em R
Seja w ⃗ ∈S , então Ps w⃗ =⃗
w , portanto todo vetor que pertence a reta S é um autovetor de Ps
com autovalor λ=1 . Seja ⃗x ∈ S _|_ , então Ps ⃗x =0 ⃗x , portanto todo vetor que pertence a
_|_
S é um autovetor de Ps com autovalor λ=0 .
A⃗
v =λ ⃗v
A⃗
v −λ I ⃗
v =0
( A−λ I ) ⃗v =0
( )
2
3 1
−λ − =0
2 4
9 3 2 1
−2⋅ λ+ λ − =0 , que é a equação do segundo grau λ 2−3 λ+ 2=0 , cujas soluções são:
4 2 4
3−1
λ 1= =1
2
3+1
λ 2= =2
2
{ []
1 1 1
v 1 − v 2=0
[ 1/2 −1/2 v 1 0
=
−1/2 1/2 v 2 0 ][ ] [ ] → 2
1
2
1
− v1 + v 2=0
→ v 1=v 2 → ⃗v(1)= √ 2
1
2 2 √2
{ []
1 1 1
− v1 − v 2=0
[−1/2 −1/2 v 1 0
=
−1/2 −1/2 v 2 0 ][ ] [ ] → 2
1
2
1
− v1 − v 2=0
→ v 1=−v 2 → ⃗v(2)= √ 2
−
1
2 2 √2
Def: Se P é um operador linear que possui n autovalores distintos então os autovetores de P definem
uma nova base para Rn
[ ]
| | ... |
Q= v⃗1 ⃗
v 2 ... ⃗v n (matriz dos autovetores)
| | ... |
Obs: Uma matriz é dita positiva semidefinida se todos seus autovalores forem maiores ou iguais a 0
Def: Seja P um operador linear. Se a matriz Q dos autovetores de P define uma nova base para
n
R , então PQ=Q Λ onde Λ é a matriz diagonal dos autovalores.
[ ] [ ]
| - ⃗p1 - | ⃗p1 ⃗
v 1 ⃗p1 ⃗v 2 ... ⃗p1 ⃗vn
| - ⃗p2 - | ⃗p ⃗v ⃗p2 ⃗v 2 ... ⃗p2 v⃗ n
Note que P= e assim PQ= 2 1 .
... ... ... ... ... ... ... ... ...
| - ⃗pn - | ⃗pn ⃗v 1 ⃗pn ⃗
v2 ... ⃗pn ⃗vn
[ ]
| | ... |
Observando PQ , podemos reescrever a matriz como PQ= P ⃗v 1 P ⃗
v 2 ... P ⃗
vn
| | ... |
[ ][ ]
v11 λ1 v 12 λ2 ... v 1 n λn
| | ... |
v λ v 22 λ2 ... v 2 n λn
O lado direito é dado por Q Λ= 21 1 = λ1 ⃗
v 1 λ 2 ⃗v 2 ... λnP ⃗v n
... ... ... ...
| | ... |
v n 1 λ1 v n 2 λ 2 ... v nn λ n
Portanto, o que temos definido em PQ=Q Λ são n equações do tipo P⃗v i=λi ⃗v i , i==1,...,n
Def (Eigendecomposition): Seja P uma matriz quadrada n x n, Q a matriz dos autovetores de P nas
colunas e Λ a matriz diagonal dos autovalores de P. Então P pode ser decomposta como:
−1
P=Q Λ Q
Para verificar essa igualdade basta partir de PQ=Q Λ . Multiplicando ambos os lados pela
inversa de Q, temos:
−1 −1
PQ Q =Q Λ Q
−1
P I=Q Λ Q
Fenômeno de Hughes:
Para um número finito de amostras, existe uma dimensionalidade ótima k* após a qual o
desempenho da classificação cai.
Número de amostras como função do número de atributos:
Em classificadores não paramétricos (KNN, SVM), em geral, o número de amostras de treinamento
é uma função exponencial do número de atributos.
Por essa razão, é importante se ter uma etapa prévia a classificação para realizar uma redução de
dimensionalidade. A Análise de Componentes Principais é uma família de técnicas para tratar dados
de alta dimensionalidade que utilizam as dependências entre as variáveis para representá-los de uma
forma mais compacta sem perda de informação relevante. PCA é uma dos métodos mais simples e
robusto de realizar redução de dimensionalidade. É uma das técnicas mais antigas e foi redescoberta
muitas vezes em diversas áreas da ciência, sendo conhecida também como Transformação de
Karhunen-Loeve, Transformação de Hotelling ou decomposição em valores singulares.
→ Método linear: assume hipótese de que daos encontram-se num subespaço Euclidiano do Rn
→ Método não supervisionado (não requer rótulos das classes)
→ Decorrelaciona os dados de entrada eliminando redundâncias
[] []
x1
y1
d x ⇒ k
⃗x ∈ R = 2 ⃗y ∈R = ... , k ≪d
... W pca
yk
xd
T T =[ w⃗1, w⃗2, ... , w⃗k ] (d componentes que desejamos reter no processo de redução)
S T =[ w⃗k+1 , w⃗k +2 ,... , w⃗d ] (componentes restantes que deve ser descartadas)
O problema em questão pode ser resumido como: dado um espaço de entrada, deseja-se encontrar
as direções w ⃗ i que, ao projetar os dados, maximizam a variância retida na nova representação.
Ou seja, queremos encontrar as direções em que o espalhamento dos dados é máximo. A pergunta
que surge é: quais são essas direções?
w
T
{
⃗ i w⃗ j= 1, se i= j
0, se i≠ j
Dessa forma, busca-se uma transformação linear T que maximize a variância retida nos dados, ou
seja, que maximize o seguinte critério:
k
J PCA
1 (T )=E[‖⃗y‖2 ]=E [⃗y T ⃗y ]=∑ E[c 2j ] (*)
j=1
Note que E[ ⃗y T ⃗y ]=E[ y 21 ]+ E[ y 22 ]+...+ E[ y 2k ] é justamente a soma das variâncias em cada eixo
coordenado da nova representação. Como c j =⃗xT w⃗ j (projeção de ⃗x em wj ⃗ ), podemos
escrever (substituindo c em *):
k k k
J PCA
1 (T )=∑ E[ w
⃗ Tj ⃗x ⃗x T w⃗ j ]=∑ w ⃗ j =∑ w
⃗ Tj E[⃗x ⃗x T ] w ⃗ Tj Σ x w⃗ j sujeito a ‖⃗
w j‖=1
i=1 i=1 j=1
max f ( x , y ) sujeito a
g( x , y )=c
Nesta função, o termo λ pode ser adicionado ou subtraído. Se f(x,y) é um ponto de máximo para
o problema original, então existe um λ tal que ( x , y , λ) é um ponto estacionário para a
função lagrangiana.
Para múltiplas restrições no problema, a generalização é direta:
m
L( x , y , λ1 , λ 2 , ... , λm )=f ( x , y )−∑ λi ( g i( x , y)−c i)
i =1
∂ J (T , λ )=Σ w⃗ −λ w =0
j x j j j
∂ w⃗ j
e portanto nos diz que os vetores w⃗ j da nova base devem ser autovetores da matriz de
covariâncias.
ou seja, devemos maximizar a soma dos k autovalores. Isso define a regra a ser utilizada pelo PCA:
devemos escolher para compor a nova base os K autovetores da matriz de covariâncias associados
aos K maiores autovalores.
Após aplicar PCA, os dados projetados na base PCA não exibem correlação, ou seja, a matriz de
covariâncias torna-se diagonal.
Def: Toda matriz A simétrica e positiva semidefinida possui uma decomposição A=Q Λ Q T onde
Q é a matriz dos autovetores (nas colunas) e Λ é a matriz diagonal dos autovalores. Sabemos
que matrizes de covariâncias são matrizes positivas semidefinidas.
Além disso, pode-se mostrar que se ⃗y= A ⃗x ( ⃗y é uma transformação linear de ⃗x ) então a
matriz de covariância de ⃗y é transformada por Σ y = A T Σ x A .
Combinando os fatos definidos acima, a matriz de covariâncias dos dados transformados Σy é
dada por:
Σ y = A T Q Λ QT A
[ ]
λ1 0 ... 0
Σ y =Q T Q Λ Q T Q=Λ= 0 λ 2 ... 0
0 0 ... 0
0 0 ... λn
Um segundo critério otimizado pela representação PCA é a minimização do erro quadrático médio
(MSE) entre os dados originais e a nova representação mais compacta. Em outras palavras, isso
significa que o PCA é ótimo em termos de compactação, pois esse método descarta as componentes
menos importantes no sentido de minimizar o erro de aproximação. Sendo assim, é possível definir
o funcional a ser minimizado como:
[‖ ‖]
k 2
[( )( )]
k T k
J PCA
2 (T )=E ⃗x −∑ ( w
⃗ ⃗x ) w
⃗j
T
j ⃗x −∑ ( w
T
⃗ j ⃗x ) w
⃗j
j=1 j=1
[ ( ) ( ) (∑ )]
k k T k T k
J PCA
2 (T )=E ⃗x T ⃗x −⃗x T ∑ ( w T
⃗ j ⃗x ) w
⃗ j− ∑ ( w⃗ Tj ⃗x ) w⃗ j ⃗x + ∑ (w⃗ Tj ⃗x ) w⃗ j (w T
⃗ j ⃗x ) w
⃗j
j=1 j=1 j=1 j=1
Rearranjando os termos:
[ ] [ ] [( )(∑ )]
k k k k
J 2 (T )=E [‖⃗x‖ ]−E ∑ ( w⃗ j ⃗x )(w⃗ j ⃗x ) −E ∑ w⃗ j ( ⃗x w⃗ j )⃗x + E ∑ w⃗ j (⃗x w⃗ j)
PCA 2 T T T T T T T
(w
⃗ j ⃗x ) w
⃗j
j=1 j=1 j=1 j=1
k k k
J PCA
2 (T )=E [‖⃗x‖2 ]−∑ E [( w
⃗ Tj ⃗x )2 ]−∑ E [ (⃗
w Tj ⃗x )2 ] + ∑ E [ (⃗
w Tj ⃗x )2 ]
j =1 j=1 j=1
Note que o primeiro termo não depende de w⃗ j , sendo uma constante. Então para minimizar o
erro devemos maximizar o segundo termo, que nada mais é que a variância retida em cada novo
eixo coordenado da base T:
k k k
J PCA
2 (T )=E [‖⃗x‖ ]−∑ E[ w
2
⃗ ⃗x ⃗x w⃗ j ]=E [‖⃗x‖ ]−∑ w
T
j
T
⃗ j =E [‖⃗x‖ ]−∑ w
⃗ E [⃗x ⃗x ] w 2
⃗ Tj Σ x w⃗ j T
j
T 2
j =1 i=1 j =1
Ou seja, caímos no mesmo problema resolvido anteriormente de maximizar a variância. Como esse
problema já foi resolvido, sabemos que a solução é dada na forma de uma equação de autovalores e
autovetores Σ x w⃗ j=λ j w
⃗ j . Isso significa que voltando ao funcional acima temos a equivalência:
k k
J PCA
2 (T )=E [‖⃗x‖2 ]−∑ w
⃗ Tj λ j w⃗ j=E [‖⃗x‖2 ]−∑ λ j
j =1 j=1
ou seja, para minimizar o erro quadrático médio, devemos selecionar os k autovetores associados
aos k maiores autovalores da matriz de covariâncias, o que é exatamente a mesma conclusão obtida
anteriormente.
Importante: Os dados precisam estar centralizados, ou seja, média deve ser nula para que a rotação
dos eixos seja realizada de maneira correta (isso significa que ⃗
x i=⃗
x i−μ
⃗x ∀i )
Limitações do PCA
Embora a redução de dimensionalidade implementada pelo PCA seja ótima do ponto de vista da
compactação dos dados, pois minimiza o erro quadrático médio entre a representação original e a
nova representação, ela não é ótima para a discriminação dos dados em classes. A figura a seguir
ilustra um simples exemplo dessa limitação.
Algoritmo PCA
Iremos supor inicialmente o caso mais simples: há duas classes ω1 e ω2 com médias
1 1
μ1 =
⃗ ∑
n 1 ⃗x ∈ω
μ 2= ∑ ⃗x i
⃗x i e ⃗
n2 ⃗x ∈ω
i 1 i 2
μ1 '=
1
n1 ⃗x ∈ω
i 1
( 1
∑ w⃗ T ⃗x i=⃗w T n ∑ ⃗x i = w⃗ T ⃗μ1
1 ⃗x ∈ω
i 1
)
μ 2 '=
1
n2 ⃗x ∈ω
i 2
( 1
∑ w⃗ T ⃗x i=w⃗ T n ∑ ⃗x i =⃗wT μ⃗2
2 ⃗x ∈ω
i 2
)
Um critério adequado a ser maximizado é a distância entre a projeção das médias: |μ1 '−μ 2 '|
A intuição é que quanto mais distantes as médias projetadas, mais separadas as classes.
Isso ocorre pois o critério não leva em consideração a variância ou espalhamento das classes.
n
s 2=∑ (x i−μ x )2
i=1
Note que o espalhamento (scatter) nada mais é que a variância multiplicada por n (n. de amostras).
T
⃗ ⃗x i a projeção das amostras na direção do vetor w
Seja y i= w ⃗ . Então os espalhamentos das
classes ω1 e ω2 são definidos por:
y i ∈ω 1
ou seja, deseja-se maximizar a distância entre as médias, minimizando o espalhamento das classes.
S 1= ∑ (⃗x i−⃗
T
μ 1)(⃗x i−⃗μ1 ) e
⃗xi ∈ ω 1
S 2= ∑ (⃗x i−⃗
T
μ 2)(⃗x i−⃗μ 2)
⃗xi ∈ω 2
Seja S W =S 1+ S 2 a matriz de espalhamento intra-classe (within-class). Note que:
T
s^1 = ∑ ( y i−μ1 ' ) = ∑ ( w μ 1) = ∑ [ w μi ) ] [ w ⃗ i)]
2 2 T T 2 T T
⃗ ⃗x i− w
⃗ ⃗ ⃗ ( ⃗x i−⃗ ⃗ ( ⃗x i−μ
y i ∈ω 1 y i ∈ω 1 ⃗xi ∈ω 1
s^1 = ∑ [ ( ⃗x i−⃗
T
⃗ ] [( ⃗xi −μ ⃗ ]= ∑ w ∑ (⃗x i−μ⃗1 )( ⃗xi −μ⃗ 1)T w⃗
2 T T T T T
μ 1) w ⃗ 1) w ⃗ ( ⃗x i−μ μ 1) w
⃗ 1)( ⃗x i−⃗ ⃗ =w
⃗
⃗xi ∈ ω1 ⃗x i ∈ω 1 x i ∈ω 1
⃗
μ 1−⃗
S B =(⃗ μ 1−⃗μ2 )T
μ 2 )(⃗
Essa matriz de alguma forma mede a separação dos vetores médias antes da projeção.
T T
(μ 1 '−μ 2 ' ) =[ ( ⃗ ] [ (μ⃗1−μ⃗ 2) w⃗ T ]= w⃗ T (μ⃗1−⃗μ2 )(μ⃗ 1−μ⃗2)T w⃗ = w⃗ T S B w⃗
2
μ1−μ⃗ 2) w
⃗
∂J ( w
⃗)
=0
∂w⃗
T
Dividindo a equação pelo escalar w ⃗ :
⃗ SW w
T
(w
⃗ SB w
⃗)
SB w
⃗− T
SW w
⃗ =0
(w
⃗ SW w
⃗)
T
(w
⃗ SB w
⃗)
Como a razão λ = T
é um escalar, chega-se a:
(w
⃗ SW w
⃗)
⃗ = λ SW w
SB w ⃗
−1
⃗ =λ w
(S W S B ) w ⃗ (**)
mostrando que a direção de projeção w ⃗ deve ser o autovetor associado ao maior autovalor da
−1
matriz S W S B . Par o caso de duas classes é possível cderivar uma expressão fechada para o vetor
solução w⃗ . Note que S B w ⃗ aponta para a mesma direção da diferença das médias:
T
SB w μ 1−⃗
⃗ =(⃗ μ 2)(⃗
μ1−⃗
μ 2) w
⃗
No caso do problema de classificação admitir múltiplas classes ω1, ω2, ... , ωC podemos reduzir a
dimensionalidade dos dados de entrada para no máximo C – 1 dimensões. Nesse caso, definimos o
vetor após a transformação como:
⃗y i=W T ⃗x i
onde W T é a matriz de projeção em que cada coluna representa uma direção ortogonal w
⃗j ,
m d
⃗x i∈R e ⃗y i ∈R com d <C−1<m . Sejam
Então, temos:
n
1 1
μi = ∑ ⃗x j
⃗ μ = ∑ ⃗x i
e ⃗
ni ⃗x ∈ωj i
n i=1
C C
S W = ∑ S i =∑ ∑ (⃗x k −⃗μ i)(⃗x k−⃗μ i )T
i=1 i=1 ⃗x k ∈ω i
C
S B =∑ ni (⃗
μ i−⃗
μ )(⃗ μ )T
μ i−⃗
i=1
∂J (W )
=0
∂W
o que implica em
[ ∂W∂ |W T
] T
S B W| W SW W −W S B W
T
[ ∂W∂ |W T
] =0
SW W|
T 2
|W S W W |
Sabendo que
∂ |X T A X|=2|X T A X|(X −1 )T
∂X
T
|W S B W|
T
S W W −S B W =0
|W SW W|
λ SW W −S B W =0
ou seja
S B W = λ SW W
−1
(S W S B )W = λ W
Limitações:
1. Número de atributos é sempre inferior ao número de classes; problemas com poucas classes e
dimensionalidade muito alta em geral não funcionam muito bem com LDA.
Algoritmo LDA
⃗v i≈W ⃗hi
de modo que cada ⃗ h i (coluna de H) é como se fosse a representação dos vetores ⃗v i num
espaço de menor dimensão. Em outras palavras, cada vetor ⃗v i é aproximado por uma
combinação linear das colunas de W ponderadas pelos componentes de ⃗ h i . Portanto, W pode ser
interpretada como uma base que é otimizada para aproximação linear de dos dados em V. Como
relativamente poucos vetores de base são utilizados para representar muitos vetores de dados
(apenas r), boa aproximação só pode ser alcançada se os vetores de base descobrirem estrutura que
é latente nos dados.
Para encontrar uma fatoração aproximada V ≈WH é preciso primeiramente definir funções de
custo que quantificam a qualidade da aproximação. Funções de custo podem ser construídas
utilizando medidas de distância entre matrizes não negativas A e B. Uma medida muito conhecida é
a distância Euclidiana quadrática entre A e B:
‖A−B‖2=∑ ( Aij −Bij )2
i, j
Essa medida é limitada inferiormente por zero, atingindo esse limite se e somente se A = B.
D( A || B)=∑ A ij log
i, j
( A ij
Bij
− A ij + Bij
)
Assim como a distância Euclidiana, essa medida é limitada inferiormente em zero, atingindo esse
valor se e somente se A = B. Se ∑i , j Aij =∑i , j Bij =1 de modo que tanto A quanto B
representem densidades de probabilidade, essa medida se reduz a divergência de Kullback-Leibler.
Assim, é possível definir duas formulações matemáticas para o NMF como problemas de
otimização:
Note que essas regras de atualização são invariantes se e somente se são um ponto estacionário da
medida de distância, ou seja, quando V =WH . Note que o fator multiplicador em (*) simplifica-
se para a matriz constante de 1’s quando V =WH :
[ ]
1 1 1 ... 1
((W n )T V )ij ((W n)T W n H n )ij
n T n n
= n T n n
= 1 1 1 ... 1
((W ) W H )ij ((W ) W H )ij ...
1 1 1 ... 1 r×m
[ ]
n+1 T
1 1 1 ... 1 n n +1 n+1 T
(V (H ) )ij (W H (H ) )ij
n n+ 1 n+1 T
= n n +1 n+1 T = 1 1 1 ... 1
(W H ( H ) )ij (W H ( H ) )ij ...
1 1 1 ... 1 n×r
A prova do teorema será omitida. Para os leitores interessados, a prova matemática completa
encontra-se no artigo1.
V
∑ H njk (W n Hik n )
n +1 n k ik
W ij =W ij (***)
∑H n
jr
r
V
∑ W n+1
ki
kj
(W H n )
n +1
k
H n+1 n
ij =H ij
kj
(****)
∑W n+1
ri
r
1 Lee, D. D. and Seung, H. S. “Algorithms for non-negative matrix factorization”, Advances in Neural Information
Processing Systems, 2001.
(W n H n )ik
∑H n
jk
(W n H n )ik ∑ H njk
k
W nij +1=W nij =W nij k
=W nij
∑H n
jr ∑H n
jr
r r
(W n +1 H n )kj
∑W n+1
ki
(W n +1 H n )kj ∑ W nki+1
k
H n+1 n
ij =H ij =H nij k =H nij
∑ W n+1
ri ∑ W ri
n +1
r r
Seja ϕ (⃗x ) um mapeamento não linear do espaço m dimensional de entrada para um espaço
intermediário de dimensão M, com m < M. Um problema que pode ocorrer na prática é que
mapeamentos para espaços de muitas dimensões podem causar um aumento significativo no custo
computacional. A ideia consiste em utilizar o kernel trick, a mesma estratégia adotada nas máquinas
de vetores de suporte, para expressar o algoritmo de redução de dimensionalidade KPCA apenas em
termos de produtos internos, de forma que torna-se possível computar produtos internos em espaços
de maior dimensão sem conhecer o mapeamento propriamente dito, ou seja, sem a necessidade de
projetar os dados. Essa é a estratégia do método Kernel PCA.
A primeira hipótese que devemos assumir é que a média dos dados no espaço intermediário de
maior dimensão (RM) é nula, ou seja:
n
1
∑ ϕ (⃗x i )=0
n i=1
Assim, a matriz de covariâncias M x M dos dados neste espaço pode ser estimada por:
n
1
C= ∑
n i=1
ϕ (⃗x i ) ϕ (⃗x i )T (*)
A seguir veremos um resultado muito importante que nos permite expressar os autovetores da
matriz de covariância em termos de ϕ (⃗x i) .
Teorema: Os autovetores de C podem ser expressos como combinações lineares dos atributos do
espaço intermediário de maior dimensão, ou seja:
n
⃗v k =∑ α ki ϕ (⃗x i)
i=1
1
α ki= ϕ ( ⃗x i)T ⃗v k (#)
n λk
(∑ )
n n n
1
∑
n i=1
ϕ (⃗x i )ϕ (⃗x i )T αkj ϕ (⃗x j ) =λ k ∑ αkj ϕ (⃗x j)
j=1 j=1
( )
n n n
1
∑ ϕ (⃗x i )
n i=1
∑ α kj ϕ (⃗x j )T ϕ (⃗x j ) = λ k ∑ α kj ϕ (⃗x j )
j=1 j=1
T
Aplicando o kernel trick, ou seja, K (⃗x i ,⃗x j)= ϕ (⃗xi ) ϕ (⃗x j ) , temos:
( )
n n n
1
∑ ϕ (⃗x i )
n i=1
∑ α kj K (⃗x i , ⃗x j ) =λ k ∑ αkj ϕ (⃗x j)
j=1 j=1
( )
n n n
1
∑
n i=1
ϕ (⃗x l )T ϕ (⃗x i) ∑ αkj K (⃗x i , ⃗x j) = λk ∑ α kj ϕ (⃗x l)T ϕ (⃗x j)
j=1 j=1
( )
n n n
1
∑ K (⃗x l , ⃗xi )
n i=1
∑ α kj K (⃗x i ,⃗x j) =λ k ∑ α kj K (⃗xl , ⃗x i)
j=1 j =1
αk =( λk n) α
K⃗ ⃗k
mostrando que os vetores α ⃗ k são os autovetores da matriz de kernel. Para uma nova amostra
⃗x que não pertence ao conjunto de dados, a projeção na k-ésima componente principal pode ser
calculada como:
n n
y k (⃗x )=ϕ (⃗x ) ⃗v k =∑ α ki ϕ (⃗x ) ϕ (⃗x i )=∑ α ki K (⃗x , ⃗x i)
T T
i=1 i=1
A grande vantagem de empregar o kernel trick é que nós não precisamos computar o mapeamento
ϕ (⃗x i) explicitamente para cada amostra do conjunto de dados.Nós podemos construir a matriz de
kernel diretamente a partir dos dados. Dois tipos de kernel particularmente úteis na redução de
dimensionalidade não linear são os kernels polinomiais e Gaussianos, dados por:
T d
K (⃗x , ⃗y )=(⃗x ⃗y +c)
K (⃗x , ⃗y )=exp −
(
‖⃗x −⃗y‖2
2σ
2 )
onde c e σ2 são parâmetros que controlam o deslocamento e a largura dos kernels em questão.
Na prática, o que pode ocorrer é que a média dos dados projetados pode não ser nula. Para torná-la
nula, devemos centralizar os dados, ou seja, computar:
n
~ 1
ϕ (⃗xi )= ϕ ( x⃗i )− ∑ ϕ ( x⃗k )
n k=1
( )( )
n T n
~ 1 1
x i , x⃗j )=~
K (⃗ ϕ ( x⃗i )T ~
ϕ ( x⃗j)= ϕ ( x⃗i )− ∑ ϕ ( x⃗k ) ϕ ( x⃗ j)− ∑ ϕ ( x⃗k )
n k=1 n k=1
onde 1n é uma matriz n×n com todos os elementos iguais a 1/n. A seguir apresentamos um
algoritmo que descreve o método Kernel PCA.
A figura a seguir ilustra a diferença ente o PCA padrão e o Kernel PCA em um dataset que exibe
comportamento não linear. Note que a projeção dos dados na componente principal do PCA padrão
não fornece uma boa representação em termos de compactação, pois os dados do hemisfério norte
se misturam com os dados do hemisfério sul. Por outro lado, a projeção obtida pelo Kernel PCA é
muito mais representativa, pois consegue extrair uma espécie de “esqueleto” dos dados em questão.
Porém, assim como o PCA padrão, o Kernel PCA é não supervisionado, ou seja, não é otimizado
para problemas de classificação. Para esse tipo de situação, o método Kernel Fisher Discriminant
Analysis será apresentado a seguir.
em que
ϕ ϕ ϕ ϕ ϕ T
μ 1−⃗
S B =(⃗ μ 2 )(⃗
μ 1 −⃗
μ2 ) é a matriz de espalhamento entre classes no espaço de maior dimensão e
ϕ ϕ ϕ
S w =S1 +S 2 é a matriz de espalhamento intra classe, com
S j = ∑ ( ϕ (⃗x i)−⃗
ϕ ϕ ϕ T
μ j )( ϕ (⃗x i)−⃗
μj ) para j=1, 2 e
x i ∈ω j
⃗
nj
1
μ = ∑ ϕ (⃗x i)
⃗
ϕ
j para j=1, 2
n j i=1
n
⃗ =∑ α i ϕ (⃗x i )
w (1)
i=1
⃗ ϕj para calcular a
Sendo assim, podemos utilizar a equação (1) juntamente com a definição de μ
projeção de ⃗μ ϕj na direção de w ⃗ , como:
(∑ )( )
n T n1 n n1 n n1
1 1 1
w T
⃗ μ
⃗ = ϕ
1 αi ϕ (⃗x i) ∑
n1 j=1
ϕ (⃗x j) = ∑ ∑ αi ϕ (⃗x i)T ϕ (⃗x i )= ∑ ∑ α i K (⃗xi , ⃗x j)
n1 i=1 j=1 n1 i=1 j=1
(2)
i=1
(∑ )( )
n T n2 n n2 n n2
1 1 1
w T
⃗ μ
⃗ = ϕ
2 αi ϕ (⃗x i) ∑
n2 j=1
ϕ ( ⃗x j) = ∑ ∑ αi ϕ (⃗x i)T ϕ (⃗x i )= ∑ ∑ α i K (⃗xi , ⃗x j ) (3)
n2 i=1 j=1 n2 i=1 j=1
i=1
Note que as projeções dependem apenas da matrizes de kernel K (⃗x i ,⃗x j) . Essa matriz associa
cada amostra da classe j com toda outra amostra da classe j, sendo n j x n j .
⃗ 1∈Rn como:
Definindo o vetor m
n1
1
m1 (i)= ∑ K (⃗x i , ⃗x k ) em que ⃗x k ∈ ω1 e ⃗x i é a i-ésima amostra da base
n1 k=1
Note que o escalar acima é a média da i-ésima linha da matriz de kernel, considerando apenas as
colunas das amostras que pertencem a classe ω1 .
=( ⃗ ⃗ 2 )( m ⃗ )=
T T T T
α m α m
⃗ 1−⃗ ⃗1 α m2 α
⃗ −⃗
αT (m
=⃗ ⃗ 2 ) (m
⃗ 1− m m 2 )T α
⃗ 1−⃗ ⃗=
T
α Mα
=⃗ ⃗
T
onde M =( m ⃗ 2) (m
⃗ 1− m ⃗ 2)
⃗ 1−m
( )( )(∑ )
n T 2 nj n
⃗ T S ϕw w
w ⃗= ∑ α i ϕ (⃗xi ) ∑ ∑ (ϕ (⃗x k )−⃗μϕj )( ϕ( ⃗x k)−⃗μϕj )T α l ϕ (⃗x l )
i=1 j=1 k=1 l=1
Aplicando a distributiva:
2 n nj n
w T
⃗ S w ϕ
w
j=1 i=1 k=1 l=1
[
⃗ =∑ ∑ ∑ ∑ ( αi ϕ (⃗x i)T ϕ (⃗x k )− αi ϕ (⃗xi )T μ
⃗ j )( α l ϕ (⃗x k ) ϕ (⃗x l)−αl μ
ϕ T
⃗j
ϕ T
) ϕ (⃗x i)]
Lembrando que
nj
1
ϕ
μj=
⃗ ∑ ϕ (⃗x i)
n j i=1
[( )( )]
2 n nj n nj nj
1 1
⃗ =∑ ∑ ∑ ∑ αi ϕ (⃗x i) ϕ (⃗x k )− ∑ α i ϕ (⃗x i )T ϕ (⃗x p) α l ϕ (⃗x k )T ϕ (⃗x l)− ∑ αl ϕ (⃗x l)T ϕ (⃗x q )
T ϕ T
w
⃗ S w w
j=1 i=1 k=1 l=1 n j p=1 n j q =1
[( )( )]
2 n nj n nj nj
1
w
T
⃗ =∑ ∑ ∑ ∑ αi K (⃗x i ,⃗x k )−
⃗ Sw w
ϕ
∑ α K (⃗x i ,⃗x p ) αl K (⃗x l ,⃗x k )− n1 ∑ αl K (⃗x l , ⃗x q)
n j p=1 i
j=1 i=1 k=1 l=1 j q=1
Aplicando novamente a distributiva nos parêntesis, note que teremos 4 termos. O primeiro termo,
que chamaremos de T1, fica:
αi αl n j
T 2 =− ∑ K (⃗x i , ⃗x k ) K (⃗x l , ⃗x q)
n j q =1
αi αl n j
αi α l n n j j
2 ∑∑
T 4= K (⃗x i ,⃗x p )K (⃗x l , ⃗x q )
n j p=1 q=1
Note que os dois termos cruzados, T2 e T3, são de fato idênticos. Assim, podemos escrever:
[ ]
nj
2 n n
αi αl n j
αiαl n n j j
w T
⃗ =∑ ∑ ∑ ∑
⃗ S w ϕ
w α i αl K (⃗x i , ⃗x k ) K (⃗x l , ⃗x k )−2 ∑ K (⃗x i ,⃗x k ) K ( ⃗xl , ⃗x q)+ n2 ∑ ∑ K (⃗x i , ⃗x p )K (⃗x l , ⃗x q )
j=1 i=1 k=1 l=1 n j q=1 j p=1 q=1
αi αl n n j j
αi αl n j
Note que é possível efetuar a soma do segundo com o terceiro termo, resultando em:
[∑ ∑ ∑ ( )]
2 n nj n nj
αα
⃗ =∑ αi α l K (⃗x i , ⃗x k ) K (⃗x l ,⃗x k )− i l ∑ K (⃗x i ,⃗x k )K (⃗xl , ⃗x q)
T ϕ
w
⃗ S w w
j=1 i=1 k=1 l=1 n j q=1
[ (∑ ) ]
2 n nj n n nj n nj
1
w ⃗ =∑
⃗ T S ϕw w ∑ ∑ ∑ α i K (⃗xi , ⃗x k ) K (⃗x l ,⃗x k ) αl−∑ ∑ ∑ αi K (⃗x i ,⃗x k ) K (⃗x l ,⃗x q ) α l
j=1 i=1 k=1 l=1 i=1 k=1 l=1 q=1 nj
Reescrevendo na notação matricial, temos que o primeiro termo fica:
n nj n
T
onde α ⃗ =[ α1 , α2 ,…, αn ] e K j é a matriz de kernel de dimensões n×n j da classe ω j .
Em termos práticos, a matriz K 1 (⃗x i , ⃗x j ) é construída variando ⃗x i para todas as amostras da
base de dados e ⃗x j para todas as amostras da classe ω1 . De modo similar, a matriz
K 2 (⃗x i , ⃗x j ) é construída variando ⃗x i para todas as amostras da base de dados e ⃗x j para
todas as amostras da classe ω2 .
( )
n nj n nj
1
∑ ∑ ∑ αi ∑ K (⃗x i , ⃗x k ) n K (⃗x l , ⃗x q ) αl =⃗
T
α K j 1n K j α
⃗ j
T
i=1 k=1 l =1 q =1 j
1
onde a matriz 1n é uma matriz n j×n j com todas as entradas iguais a . Assim, temos:
j
nj
2
⃗ =∑ ( α ⃗)
T ϕ T T T T
w
⃗ S w w⃗ Kj Kj α α K j 1n K j α
⃗ −⃗ j
j=1
[∑ ]
2 2
⃗ =∑ [ α ⃗ ]=⃗
T ϕ T T T T
w
⃗ S w w⃗ K j ( I −1n ) K α α j j K j (I −1n ) K j α
j
⃗
j=1 j=1
Identificando que o termo entre colchetes nada mais é que a soma de duas matrizes, podemos
escrever:
⃗ T S ϕw w
w αT N α
⃗ =⃗ ⃗
Mα αT N α
⃗ (⃗ ⃗T M α
⃗ )−( α ⃗) N α
⃗
T 2
=0
α Nα
(⃗ ⃗)
Mα ⃗T N ⃗
⃗ (α α )−( ⃗αT M ⃗α ) N α
⃗ =0
T
Dividindo ambos os lados por α
⃗ Nα
⃗ , chega-se a:
αT M ⃗α )
(⃗
Mα
⃗− α =0
N⃗
αT N α
(⃗ ⃗)
⃗T M ⃗
α α
Note que T
é um escalar, e por isso iremos chamá-lo de λ . Assim, chegamos a:
α
⃗ Nα ⃗
Mα
⃗ =λ N ⃗
α
(N−1 M ) α
⃗ =λ α
⃗
Obs: Não é raro, a matriz N ser singular ou próxima da singularidade. Nesses casos, devemos
adicionar uma pequena perturbação na diagonal principal de N:
Uma pergunta que surge é: como podemos projetar uma nova amostra que não pertence ao conjunto
de treinamento (out-of-sample problem)?
Lembrando do teorema, sabemos que todo vetor solução pode ser expresso como uma combinação
linear das amostras, ou seja:
n
⃗ =∑ α i ϕ (⃗x i )
w
i=1
onde K representa a função de kernel aplicada na nova amostra em relação a cada amostra da
base.
KFDA multiclasses
O método apresentado na seção anterior, fornece uma projeção dos dados para a reta real em
problemas de classificação binários. É possível generalizar o KFDA para lidar com múltiplas
classes. Para isso, devemos modificar o cálculo das matriz M :
C
M =∑ n j ( m
T
⃗ j −⃗
m*)( m
⃗ j −⃗
m *)
j=1
nj
1
m j (i)= ∑ K (⃗x i , ⃗x k ) em que ⃗x i deve variar entre todas as amostras da base e ⃗x j deve
n j k=1
variar entre todas as amostras da classe ω j
n
1
m* (i)= ∑ K (⃗x i ,⃗x k )
n k=1
em que ⃗x i e ⃗x j devem variar entre todas as amostras da base
em que a matriz K j (⃗xi , ⃗x k ) é construída variando ⃗x i para todas as amostras da base de dados
e ⃗x k para todas as amostras da classe ω j .
A solução ótima nesse caso consiste em obter os d autovetores associados aos d maiores autovalores
da matriz N−1 M . A nova base é então definida por:
W =[ α α2 ,... , α
⃗1 , ⃗ ⃗ d] (cada coluna de W representa um vetor α k )
Como fica a projeção dos dados? Temos agora d direções, definidas pelos vetores w
⃗ 1, w
⃗ 2 , ... , w
⃗d .
n n
⃗ k =∑ α ik ϕ (⃗x )T ϕ (⃗x i)=∑ αik K (⃗x , ⃗x i)
y k = ϕ (⃗x )T w
i=1 i=1
Em vários casos, métodos lineares não são capazes de aprender a estrutura geométrica dos dados.
Hipótese de que dados pertencem a um espaço Euclidiano não é válida. É preciso encontrar uma
métrica mais adequada que a distância Euclidiana (metric learning).
Ideia geral: Construir um grafo unindo os vizinhos mais próximos, computar os menores caminhos
entre cada par de vértices e, conhecendo as distâncias entre os pontos, encontrar um mapeamento
para o plano que preserve essas distâncias.
Hipótese: caminhos mínimos em grafos podem aproximar bem as verdadeiras distâncias geodésicas
nos espaços não Euclidianos (variedades)
Passo1: Induzir um grafo a partir do conjunto de dados {⃗x i , y i } para i = 1,2,…,n onde ⃗x i
denota o vetor de características que representa a i-ésima amostra e y i denota a classe ou
categoria a que o vetor pertence, sendo geralmente um inteiro maior que zero.
é satisfeita com probabilidade (1−μ) . Em outras palavras, esse resultado nos diz que a distância
estimada no grafo ( d G ) fica limitada num intervalo muito estreito em relação a verdadeira
distância na variedade/manifold ( d M ), ou seja d G tende a d M .
Objetivo: Dada uma matriz de distâncias par a par, recuperar quem são as coordenadas dos pontos
k
⃗x r ∈R ,r =1,2,. .., n , onde K é definido pelo usuário (plano, espaço 3D, etc…)
2
A matriz de distâncias é dada por D={d rs }, r , s=1,2,... , n (r é linha, s é coluna)
Hipótese: a média dos dados é nula (pontos estão ao redor do vetor nulo)
n
2 T T T
d rs =⃗x r ⃗x r +⃗x s ⃗x s−2 ⃗x r ⃗x s (*)
n
2
= ∑ ⃗x Tr ⃗x r (****)
n r=1
1
brs =⃗x Tr ⃗x s =− (d 2rs −⃗x Tr ⃗x r−⃗x Ts ⃗x s )
2
n n
1 1
−⃗x ⃗x r =− ∑ d 2rs + ∑ ⃗x Ts ⃗x s (1)
T
r
n s=1 n s =1
n n
1 1
T
−⃗x s ⃗x s =− ∑
n r=1
d rs + ∑ ⃗x r ⃗x r (2)
2
n r =1
T
n r=1 s=1
2
De modo que temos uma expressão completa para brs em função dos elementos de D:
( )
n n n n
1 2 1 1 1
brs =− d − ∑ d2 − ∑ d2 + ∑ ∑ d2
2 rs n r =1 rs n s=1 rs n2 r=1 s=1 rs
1
Chamando de ars =− d rs podemos escrever:
2
n
1
ar .= ∑ ars (média na linha r)
n s=1
n
1
a. s= ∑ a (média na coluna s)
n r=1 rs
n n
1
a..= ∑ ∑ ars
n2 r=1 s=1
(média em D)
1
Definindo a matriz A={ars }, r , s=1,2,. .., n , como A=− D pode-se mostrar que a relação
2
entre B e A é ainda mais simplificada, sendo dada por:
1 T
H=I − ⃗1 ⃗
1 sendo ⃗ T
1 =[1,1,... ,1] (vetor de 1’s com n dimensões)
n
[ ]
1 1 ... 1
1 1 ... 1
Dessa forma tem-se que ⃗
1 ⃗1 =U=
T
... ... ... ...
1 1 ... 1
Note que B=H A H nada mais é que a forma matricial da equação (@) uma vez que
1 1
( 1
n )(
1
n
1
n
1
n)( 1
B=H A H= I − U A I − U = A− U A I − U = A−A U− U A + 2 U A U
n n n )( )
Portanto, temos a matriz B.
Note que a matriz B dos produtos internos pode ser expressa por:
T
B n×n=X n×p X p ×n
Isso implica em dizer que a matrix B possui p autovalores não negativos e n - p autovalores nulos.
Assim, pela decomposição espectral de B (eigendecomposition) pode-se escrever:
T
B=V Λ V onde
[ ]
| | ... |
| | ... |
V '= ⃗
v1 v2
⃗ ... ⃗v p
| | ... |
| | ... | n× p
Mas como
T T 1 /2 1 /2 T
B n×n=X n×p X p ×n=V ' Λ ' V ' =V ' Λ ' Λ' V '
Cada linha de X n× p terá a coordenada de um vetor ⃗x i∈R p , onde p é uma parâmetro que
controla o número de dimensões do espaço de saída: se desejamos um plot em 2D, p = 2, em caso
de um plot 3D, k = 3, etc.
Algoritmo MDS
1
1. Faça A=− D
2
1 T
2. Faça H=I − ⃗1 ⃗
1
n
3. Compute B=H A H
1/ 2
6. Calcular X n×k =V ' n×k Λ ' k×k
Convém destacar que o algoritmo ISOMAP é totalmente não supervisionado, no sentido que ele não
usa qualquer informação sobre a distribuição das classes. Ele tenta encontrar uma representação
mais compacta dos dados originais apenas preservando as distâncias.
Limitação do ISOMAP: não convexidade dos dados (presença de buracos na variedade) pode ser
um problema.
A figura a seguir ilustra uma diferença entre o PCA e o ISOMAP na redução de dimensionalidade.
Note que a projeção linear do PCA destrói os dados, enquanto o ISOMAP consegue aprender a
geometria intrínseca dos dados.
Lembre-se que no Kernel PCA, após a construção da matriz de kernel K, nós temos que remover a
média dos dados utilizando a seguinte relação:
~
K=K −1n K −K 1n+ 1n K 1n
onde 1n é uma matriz n×n com todos os elementos iguais a 1/n. Seja o vetor ⃗e definido
como:
1 T
⃗e = [1 ,1 , ... ,1]
√n
É fácil notar que podemos escrever a seguinte igualdade
eT
1n=⃗e ⃗
Novamente, note que é possível agrupar termos, colocando em evidência, o que nos leva a:
~
K=(I −⃗e ⃗e T ) K (I −⃗e ⃗e T )
1
B=− H D H
2
1
e T )D(I −⃗e ⃗e T )
K iso =− (I −⃗e ⃗
2
Portanto, o Kernel PCA se torna o ISOMAP quando a matriz de kernel é igual ao negativo de
metade da matriz das distâncias geodésicas.
Um outro algoritmo não supervisionado para redução de dimensionalidade não linear é o LLE,
também conhecido como Local Linear Embedding (Imersão Linear Local).
Hipótese: Supondo uma densidade alta de amostras é esperado que um vetor ⃗x i e seus vizinhos
definam um patch linear (pertençam a um mesmo plano).
Sendo assim, torna-se possível caracterizar a geometria local por coeficientes lineares:
(podemos tentar reconstruir um vetor como uma combinação linear dos seus vizinhos)
Sem perda de generalidade pode-se expressar E(W) como o erro de local (sem somatório):
⃗ )=|∑ w j (⃗xi −⃗x j )| =∑ ∑ w j w k (⃗x i−⃗x j )(⃗x i−⃗x k )T
2
E( w
j j k
temos
⃗ )=∑ ∑ w j C jk w k = w
E( w ⃗T
⃗ Cw (produto matriz vetor: faça j =1 e varie k)
j k
min w ⃗ T sujeito a
⃗Cw ∑ w j =1
j
∑ C−1jk
k
w j=
∑ ∑ C−1jk
j k
⃗ =⃗1 , onde ⃗
Cw 1 é um vetor de 1’s
wj
Logo após, devemos normalizar os coeficientes fazendo w j=
∑wj
Nessa primeira etapa, estimamos os pesos que melhor construíam cada ponto baseado em seus
vizinhos. A ideia da segunda etapa é fixar esses pesos e tentar ajustar novas coordenadas y (em um
espaço de menor dimensão) que minimizem o erro de reconstrução.
ϕ (Y )=∑ |⃗y i −∑ w ij ⃗y j|
2
(fixo pesos e ajusto coordenadas dos pontos para min. erro)
i j
onde
[ ] [ ]
- - ⃗y 1 - - - - w
⃗1 - -
- - ⃗y 2 - - - - w
⃗2 - -
Y= - - ⃗y 3 - - W= - - w
⃗3 - - (matriz de pesos n x n)
... ... ... ... ... ... ... ... ... ...
- - ⃗y n - - n×k - - w
⃗n - - n×n
1 T
ii) YY =I (matriz de covariância = identidade)
n
1 T
T
argmin Tr [Y M Y ] sujeito a
Y
∑ ⃗y i=0 e
n
YY =I
i
∂L
=MY + M T Y −λ Y =0
∂Y
2 MY =λ Y
Obs: 0=λ n≤λ n−1≤λ n−2≤...≤λ1 (descartar os autovetores que possuem autovalores nulos)
[ ]
| | ... |
| | ... |
Y n×k = ⃗
v n−1 v n−2
⃗ ... ⃗v n−k
| | ... |
| | ... | n×k
Cada linha da matriz Y representa a coordenada de uma amostra no espaço de saída. No caso 2D,
apenas os 2 autovetores associados aos 2 menores autovalores não nulos são selecionados.
Algoritmo LLE
for i = 1 : n
computar distâncias de ⃗x i a todo ⃗x j
encontrar k menores distâncias
associar amostras ⃗x i aos vizinhos
for i = 1 : n
criar matriz Z com todos os vizinhos de ⃗x i nas colunas
subtrair ⃗x i de toda coluna de Z
computar covariância local C=Z T Z
resolver sistema linear C w⃗ =⃗1 , onde ⃗1 é um vetor coluna de 1’s
setar w i ( j)=0 se ⃗x i não é vizinho de ⃗x j
w i ( j)
normalizar pesos: w i ( j)=
∑ wi ( j)
j
criar matriz M =( I −W )T ( I −W )
encontrar os k autovetores associados aos k menores autovalores não nulos de M
montar matriz Y das coordenadas
[ ]
| | ... |
| | ... |
Y n×k = ⃗
v n−1 v n−2
⃗ ... ⃗v n−k (cada linha de Y é um ponto)
| | ... |
| | ... | n×k
Obs: Trata-se de uma abordagem local (os pesos para reconstrução são estimados localmente)
Laplacian Eigenmaps
Ideia geral: Aproximar variedade Riemanniana por um grafo e encontrar um mapeamento para R k
que preserva localidades, ou seja, pontos próximos na variedade devem permanecer próximos no
espaço Euclidiano. Utiliza como ferramenta matemática a matriz Laplaciana do grafo.
Para melhor compreender essa importante técnica de redução de dimensionalidade não linear,
iremos apresentar uma breve introdução a Teoria de Grafos Espectral.
Objetivo: estudar grafos como objetos matemáticos que fornecem aproximações discretas para
espaços não Euclidianos (como variedades Riemannianas – superfícies curvas, etc).
Seja G = (V, E) com |V| = n e seja ⃗f =[f 1 , f 2 ,... , f n ]∈ Rn um vetor de coeficientes dos vértices
v ∈V . Dizemos que f i : V → R é uma função que mapeia cada v ∈V para um número real.
É uma versão discreta de uma função definida em uma variedade (espaço com curvatura) em que o
número de pontos do domínio da função é finito.
Nesse contexto, desejamos analisar o papel da matriz de adjacências como um operador linear que
pode ser aplicado nessa “função” f, que é um vetor em Rn . Sabemos que a matriz de adjacências
é definida pela matriz quadrada n x n que satisfaz:
{
aij = 1, i ~ j
0, c.c.
Ex:
[ ]
0 1 1 1
1 0 0 1
A=
1 0 0 0
1 1 0 0
Como a matriz A é simétrica, todos os autovalores de A são reais. Seja ⃗g ∈R n com ⃗g= A ⃗f .
Note que o i-ésimo elemento do vetor ⃗g é o produto da i-ésima linha de A com ⃗f , pois
a 1 , ⃗f ⟩
g1=⟨ ⃗
g2=⟨⃗a 2 , ⃗f ⟩
a 3 , ⃗f ⟩
g3=⟨ ⃗ a i , ⃗f ⟩=∑ f j
gi=⟨⃗ (soma os valores de f onde há aresta, ou seja nos
j ∈ηi
vizinhos do vértice i)
…
a n , ⃗f ⟩
gn=⟨ ⃗
Ex:
g1=2+1+3−2=4
Apesar de simples e intuitivo, veremos a seguir que esse operador (A) não possui propriedades
matemáticas desejáveis, como por exemplo ser uma matriz positiva definida. Isso é importante pois
no estudo de problemas de otimização, formas quadráticas envolvendo um vetor ⃗f qualquer
como ⃗f T A ⃗f são sempre positivas e convexas, ou seja, é garantido a existência de pontos ótimos
(máximos ou mínimos de tais funcionais).
h= ⃗f A ⃗f
T
Uma matriz A é dita ser positiva definida se ∄ ⃗f ∈ Rn tal que h<0 . Porém, é fácil verificar que
a matriz de adjacências A não pode ser positiva definida pois para um grafo de 5 vértices como o
definido a seguir, podemos encontrar o vetor ⃗f =[−1,1, 1, 1,1] para o qual h é negativo.
Aplicando a definição de h, temos:
Portanto, a conclusão é que a matriz A não é positiva definida. Uma das decorrências desse fato é
que seus autovalores não são todos positivos, ou seja, é possível se ter autovalores negativos.
Informalmente falando, o espectro desse operador não é bem comportado como gostaríamos.
Uma observação relevante consiste na definição de tais critérios quando o grafo G = (V, E, w) é
ponderado. Nesse caso os resultados são análogos. A matriz de adjacência fica:
{
aij = w ij , i~ j
0 , c.c.
gi= ∑ w ij f j
j∈η i
h= ⃗f A ⃗f =
T
∑ wij f i f j
(i , j )∈ E
O espectro de A
Sem perda de generalizada iremos considerar λ 1≥λ 2≥...≥λn (ordenados do maior ao menor)
n n
2. Tr ( A2 )=∑ λ2i =∑ d (v i ) (soma dos autovalores ao quadrado = soma dos graus)
i=1 i =1
3. d≤λi≤d max (maior autovalor é limitado pelo grau médio e grau máximo)
n
4. Energia de G: E(G)=∑ |λi|
i=1
Toda a informação contida na matriz A está na matriz L, mas o espectro de L é mais bem
comportado, fazendo com que ela seja preferível.
{
d (v i ), i= j
l ij = −1, i~ j
0, c.c
{
∑ wij , i= j
j
l ij =
−w ij , i ~ j
0, c.c
Iremos prosseguir com a mesma análise feita anteriormente com a matriz A. Seja o vetor
⃗f =[f 1 , f 2 ,... , f n ]∈ Rn em que f i denota o valor da função no vértice v i . Considere
⃗g=L ⃗f . Então:
h= ⃗f T L ⃗f =⃗f T D ⃗f −⃗f T A ⃗f =∑ f 2i d ii −∑ ∑ f i f j
i i j
1
(∑ f i d ii −2 ∑ ∑ f i f j + ∑ f j d jj
)
2 2
h=
2 i i j j
1 1
(∑ ∑ a f −2∑ ∑ f f wij + ∑ ∑ aij f j =
) 2 [∑ ∑ (f −2 f f + f )]
2 2 2 2
h= ij i i j i i j j
2 i j i j j i i j
e portanto ∄ ⃗f ∈ Rn para o qual h<0 . Em outras palavras, chegamos a conclusão que a matriz
Laplaciana L é positiva semidefinida (pois ⃗f T L ⃗f pode ser igual a zero). Isso significa que todos
os seus autovalores são positivos, fato que será de extrema importância nos problemas que veremos
mais adiante.
gi = ∑ w ij ( f i−f j)
(i , j)∈ E
1
h= ∑
2 (i , j )∈ E
wij (f i −f j)
2
mostrando que no caso de termos os pesos definidos como distâncias, o valor de h continua sendo
sempre positivo.
O espectro de L
1. Note que o vetor ⃗f =[1,1,. .. ,1] é sempre um autovetor de L, associado ao autovalor λ=0
(é o menor autovalor possível).
L ⃗f = ⃗
0 =0 ⃗f
∑ μ j=2|E|
j=1
4. μ n−1 : segundo menor autovalor de L (menor autovalor não nulo) é conhecido como
conectividade algébrica de G (algebraic connectivity). É uma medida de quão fácil é separar os
vértices em clusters. Se μ n−1 é pequeno mais fácil separar (mais modular é G), se μ n−1 é
grande mais difícil (menos modular é G).
⃗v n−1 : Fiedler vector (autovetor associado menor autovalor não nulo. Tem um papel importante
na imersão Laplaciana (utilizada para partição do grafo em clusters)
n
5. Pode-se mostrar que a soma dos coeficientes de um autovetor é nula, ou seja, ∑ ⃗v i ( j)=0
j=1
Laplacianas Normalizadas
Em alguns casos, é comum utilizar versões normalizadas da matriz Laplaciana. Basicamente, a
motivação para esse fato é se ter um limite superior para o maior autovalor. Pode-se mostrar que nas
matrizes Laplacianas normalizadas 0≤μ i≤2 .
L1=D−1 L
Imersão Laplaciana
Objetivo: encontrar um mapeamento suave ⃗f dos vértices de G para a reta real de modo a
preservar proximidades, ou seja, o que é próximo no grafo deve permanecer próximo na reta.
J ( ⃗f )= ∑ wij (f i−f j )
2
(i , j)∈E
Sabemos que o critério J ( ⃗f ) pode ser expresso por ⃗f T L ⃗f , de modo que o problema de
otimização torna-se:
argmin ⃗f L ⃗f
T
⃗
f ∈R
n
Porém para termos uma solução válida é preciso considerar algumas restrições. A primeira delas é
garantir que a norma da solução ⃗f ∈ R n seja limitada unitária, ou seja, ⃗f T D ⃗f =1 . Em outras
palavras, o que importa é a direção do vetor não seu comprimento.
A segunda restrição visa eliminar a solução trivial, que é aquele vetor ⃗f ∈R n que mapeia todos
os vértices do grafo para o mesmo ponto na reta, fazendo com que ⃗f seja constante, ou seja,
queremos que a solução seja ortogonal ao vetor ⃗ 1 =[1,1,. .. ,1] . Sendo assim, o problema fica:
argmin ⃗f L ⃗f
T
sujeito a ⃗f T D ⃗f =1 e ⃗f T D ⃗1=0
⃗
f ∈R
n
L ⃗f =λ D ⃗f
ou seja, a solução deve ser o autovetor associado ao menor autovalor não-nulo da matriz Laplaciana
normalizada (para evitar o mapeamento constante):
Isso significa que a solução ⃗f é o Fiedler vector e o mínimo valor obtido para J ( ⃗f ) é a
conectividade algébrica de G. Por essa razão dizemos que quanto menor for μ n−1 , melhor o
mapeamento obtido.
Note que a imersão Laplaciana á parecida com o PCA, mas ao invés de ser restrita a espaços
Euclidianos, permite que a redução de dimensionalidade seja não linear.
Um passo importante na aplicação prática dessa técnica na classificação binária de padrões consiste
em induzir um grafo G ponderado a partir das amostras da base de dados, de modo a gerar a matriz
de adjacências A.
Há basicamente 2 formas de se criar um grafo G a partir dos dados. É evidente que em ambos os
casos, cada amostra representará um vértice do grafo e se duas amostras estiverem ligadas em G, o
peso da aresta será a distância entre os respectivos vetores.
1. Grafo KNN:
d (⃗x i ,⃗x j)= √(x i (1)−x j (1))2 +( x i (2)−x j (2))2+...+( x i (n)−x j (n))2
2. Grafo R-neighborhood:
d (⃗x i ,⃗x j)= √( x i (1)−x j (1))2 +(x i (2)−x j (2))2+...+( x i (n)−x j (n))2
Se d (⃗x i ,⃗x j)≤R
Criar aresta entre ⃗x i e ⃗x j em G com peso igual a d (⃗x i ,⃗x j)
1. Dado o conjunto de amostras {⃗y i ∈Rd } para i=1,2,. .., n induzir o grafo G (matriz A)
5. Repetir para cada subgrafo (partições) até que o número de clusters seja o desejado.
O processo descrito anteriormente pode ser generalizado para mais de uma dimensão. A pergunta é:
e se desejássemos encontrar um mapeamento dos vértices de G não para uma reta mas para um
plano, ou seja, R2. Nesse caso, devemos encontrar dois vetores ⃗f 1 e ⃗f 2 ortogonais. Essa ideia
pode ser generalizada para um número k de vetores, originando o método conhecido como
Multidimensional Laplacian Eigenmaps.
Iremos assumir que no caso geral ⃗f j ∈ Rn , para j=1,2,. .. , k com k < d são as coordenadas
dos vértices em um espaço k dimensional, ou seja, cada ⃗f j representa o mapeamento dos
vértices a um eixo de um sistema coordenado. Seja F a matriz n x k em que cada coluna está
disposto um ⃗f j :
[ ]
| | ... |
| | ... |
F= ⃗f 1 ⃗f
2 ... ⃗f
n
| | ... |
| | ... | n×k
Isso significa que cada linha representa a coordenada de um vértice no espaço k dimensional. Seja
⃗
ϕ i a i-ésima linha de F (coordenada do vértice v i ). Podemos generalizar o critério J
definido anteriormente para:
J ( F)= ∑ w ij‖⃗
ϕ i −⃗
ϕ j‖
2
(i , j)∈ E
LF=Λ D F
F n×k
T
Fn×k
T
Fn×k
T
argmin Tr ( F L F )=argmin Tr (F Λ D F)=argmin Tr ( Λ F D F)=argmin Tr (Λ)=argmin
F n×k Fn ×k
∑ λk
k
ou seja, para minimizar o critério definido, devemos escolher como vetores para formar a nova base
os k autovetores associados aos k menores autovalores não nulos da matriz Laplaciana e então
projetar os dados na nova base, realizando a imersão no espaço k-dimensional.
[ ]
| | ... |
| | ... |
F= ⃗v n−1 ⃗v n−2 ... ⃗v n −k (matriz dos novos eixos coordenados)
| | ... |
| | ... | n×k
onde cada coluna da matriz X representa as coordenadas normalizadas de cada amostra no espaço k
dimensional gerado. A multiplicação pela matriz diagonal com o inverso dos autovalores Λ−1/
k×k
2
1. Dado o conjunto de amostras {⃗y i ∈Rd } para i=1,2,. .., n induzir o grafo G (matriz A)
2. Computar a matriz Laplaciana L = D – A e normalizá-la: L = D-1 L.
−1/ 2 T −1/ 2
4. Opcional: computar X k×n =Λ k×k F k×n , onde Λ k×k é a matriz diagonal do inverso dos
autovalores
Variantes do algoritmo
Na literatura são reportadas algumas variações do algoritmo, sendo a mais conhecida a ponderação
das arestas do grafo com os seguintes pesos (entre passos 1 e 2):
{ }
2
‖⃗y i −⃗y j‖
w ij=exp − 2
2σ
Veremos a seguir a relação de cada uma das matrizes Laplacianas com um tipo específico de corte
em grafos, o que auxilia no entendimento sobre quando usar uma ou outra matriz.
Interpretação geométrica
A matriz Laplaciana de um grafo é análoga ao operador Laplaciano em uma variedade. Essa seção
fornece uma justificativa do porque as autofunções desse operador possuem propriedades desejáveis
para imersão em R.
Considere uma variedade suave e diferenciável M definida em Rk . Como fizemos com grafos,
estamos buscando por um mapeamento da variedade M para a reta real de modo que pontos
próximos em M sejam mapeados próximos na reta. A ideia é que vizinhos em M devem ser vizinhos
na reta. Seja f : M → R esse mapeamento. O gradiente ∇ f é uma campo vetorial na variedade
pois associa a cada ponto de M um vetor tal que para um pequeno δ x (deslocamento
infinitesimal), pode-se mostrar que:
Sendo assim, pode-se notar que se a norma do gradiente ‖∇ f‖ é pequena, pontos próximos de x
serão mapeados para pontos próximos em Rk . Em outras palavras, uma forma de garantir
suavidade em f é buscar um mapeamento que, em média, melhor preserva localidade, ou seja:
argmin
f
∫‖∇ f‖2 com ‖f‖=1
M
([ ]) ( )
n
∂f ∂f ∂f ∂2 f ∂2 f ∂ 2 f ∂2 f
=−∑ 2 =−
2
L(f )=∇ f =−div (∇ f )=−div , , ... , + +...+
∂ x1 ∂ x2 ∂ xn i=1 ∂ xi ∂ x21 ∂ x 22 ∂ x 2n
onde div denota o operador divergente, que transforma um campo vetorial num campo escalar.
Pode-se mostrar que os operadores -div e ∇ são adjuntos, ou seja, para uma função f : M → R
e um campo vetorial X, vale:
∫ ⟨ X , ∇ f ⟩=−∫ div ( X) f
M M
isto é, pode-se trocar o gradiente de um argumento pelo negativo do divergente no outro argumento
ou vice-versa. Sendo assim:
Note que L é positivo semidefinido e a função f que minimiza (*) tem que ser uma autofunção do
operador L.
Nesse ponto, deseja-se buscar por uma justificativa do porque utilizar o método Spectral Clustering.
Veremos a seguir que existe uma forte ligação entre cortes mínimos e esse algoritmo.
Cortes em grafos são um poderoso ferramental para avaliar partições em conjuntos de dados.
Idealmente, buscam-se cortes que minimizem a soma dos pesos das arestas do corte. Em termos
matemáticos, podemos definir o seguinte critério intuitivo:
k
1
cut ( A1 , A 2 , ... , A k )= ∑ w( A i , Ai )
2 i=1
onde w (A , A)= ∑ wij (soma dos pesos das arestas que saem/entram em A)
(i , j)∈ E
i∈ A
j∈ A
Note que podemos expressar o valor do corte A1, A2, …, Ak alternativamente como:
k
cut ( A1 , A 2 ,... , A k )=∑ cut ( Ai , A i )
i=1
1
onde cut ( Ai , A i)= w( A i , Ai )
2
Ideia: obter o corte mínimo, aquele que rompe menos arestas (sinaliza boas partições no grafo)
Problema: heterogeneidade, isto é, tamanho das partições pode ser muito diferente. Por exemplo,
uma partição pode conter apenas 1 vértice a outra conter os demais n-1 vértices. É preciso balancear
o tamanho das partições encontrando um compromisso.
Isso nos permite definir 2 cortes balanceados muito utilizados em problemas de particionamento:
1
k
w ( Ai , A i) k cut ( Ai , A i)
RCut ( A 1 , A 2 , ... , A k )= ∑ |A | =∑ |A |
2 i =1 i i=1 i
1
k
w( Ai , Ai ) k cut( A i , Ai )
NCut (A 1 , A 2 , ... , A k )= ∑ =∑
2 i=1 vol( Ai ) i=1 vol( A i)
Note que ambos as funções objetivo assumem valor pequeno se os clusters A i não são tão
pequenos.
k
1
Observe que a função ∑ é minimizada se todos os valores de |Ai| forem iguais. Por
i=1 |Ai|
exemplo, considere um problema com 3 classes em que n = 9. Suponha que o cluster 1 contenha
uma única amostra, o cluster 2 também contenha uma única amostra e o cluster 3 contenha as
demais 7 amostras. Nesse caso, teríamos 1+1+ 1/7=15 /7=2.142 . Agora, suponha o caso em
que os 3 clusters contenham 3 amostras cada. Nessa situação teríamos 1/3 + 1/3 + 1/3 = 1.
1
i) cut ( A , A )= [ w( A , A)+w ( A , A )]
2
ii) RCut ( A , A)=
2 [
|A|
+
|A|
=
|A| ]
1 w( A , A) w (A , A) cut( A , A) cut ( A , A )
+
|A|
iii) NCut (A , A )=
[
2 vol( A )
+
vol( A)
=
vol( A)
+
]
1 w( A , A) w( A , A) cut ( A , A) cut ( A , A)
vol( A)
min RCut ( A , A)
A⊂V
Para isso iremos associar o Rcut com a matriz Laplaciana L. Seja ⃗f ∈ R n dado por:
{ √
|A|
, v ∈A
|A| i
f i=
−
|A|
√, v ∈A
|A| i
⃗f T L ⃗f = 1 ∑ w ij ( f i−f j)2
2 (i , j)∈ E
é o objetivo da imersão Laplaciana. Note que existem 2 tipos de arestas (i, j) para as quais f i ≠f j
(observe que se ambos v i e v j pertencem a mesma partição, f i −f j=0 . Assim, as duas
possibilidades são
i) v i ∈A e v j∈ A
ii) v i ∈ A e v j∈ A
[ (√ √ ) ] [ ( √ √ )]
2 2
⃗f T L ⃗f = 1 ∑ w |A| |A| 1 |A| |A|
+ + ∑ w ij − −
2 (i, j )∈ E ij |A| |A| 2 (i , j)∈ E |A| |A|
i∈ A i∈ A
j∈A j∈ A
i∈ A
[( √ √
|A| |A| |A| |A| 2 (i , j)∈E |A| )]
⃗f T L ⃗f = 1 ∑ wij |A| +2 |A| |A| + |A| + 1 ∑ w ij |A|+ 2 |A| |A| + |A|
2 (i, j )∈ E |A| |A| |A|
i∈A
[( √ √ )]
j∈A j∈A
[ (
2 (i, j )∈ E
i∈ A
|A| |A| )]
⃗f T L ⃗f = 1 ∑ wij |A| +|A| +2 + 1 ∑ wij |A| + |A| +2
2 (i , j )∈ E |A| |A|
i∈ A
[ ( )]
j∈A j∈ A
Retirando as constantes para fora do somatório:
(
⃗f T L ⃗f = |A| + |A| +2 1
|A| |A| 2 )
[( ∑
(i , j)∈E
i∈A
j∈ A
wij + ∑
(i , j)∈E
i∈A
j∈ A
w ij
)]
Reescrevendo a equação temos:
( )[
⃗f T L ⃗f = |A| +1+|A| +1 1 ( w( A , A)+w ( A , A ) )
|A| |A| 2 ]
A equação pode ser simplificada ainda mais:
(
⃗f T L ⃗f = |A|+|A|+ |A|+|A| cut (A , A)
|A| |A| )
Como |A|+|A|=|V| , temos:
(
⃗f T L ⃗f = |A|+|A|+ |A|+|A| cut (A , A)
|A| |A| )
Notando que a expressão ente parêntesis é a definição de Rcut, chega-se finalmente a:
⃗f T L ⃗f =|V|RCut ( A , A)
√ (√ )
n
|A| |A|
1 ⟩=∑ f i =|A|
⟨ ⃗f , ⃗ +|A| − =√|A||A|−√|A||A|=0
i=1 |A| |A|
min ⃗f L ⃗f
T
sujeito a ⟨ ⃗f , ⃗
1 ⟩=0 e ‖⃗f ‖=√ n
⃗f
{ √
|A|
, v i∈ A
com f i = |A|
−
|A|
√
, v ∈A
|A| i
Note que infelizmente esse problema é NP-Hard, pois como o vetor solução tem n componentes,
sendo que cada componente pode assumir 1 de 2 valores (binário), temos um total de 2n
soluções candidatas. Certamente fazer uma busca exaustiva por esse espaço de soluções é
computacionalmente inviável uma vez que o número de soluções cresce exponencialmente
(situação análoga a percorrer todos os vértices de um hipercubo no Rn).
{
1
, v ∈Aj
hij = √|A j| i para i=1,2,. .., n e j=1,2,. .. , k (*)
0, v i ∉A j
Assim, definimos a matriz H ∈R n×k como a matriz que contém esses k vetores como suas
colunas. Note que ⟨ ⃗h j , ⃗hk ⟩=0 para j≠k e ⟨ ⃗h j , ⃗hk ⟩=1 para j=k , o que implica em
dizer que as colunas de H formam uma base ortonormal, ou seja, H T H=I .
Sabemos que:
1
h Tk L ⃗hk = ∑ w ij (hk (i)−hk ( j))2
⃗
2 (i, j )∈ E
Existem apenas 2 tipos de arestas para os quais a diferença entre parêntesis é não nula:
i) v i ∈A k e v j∈ A k
ii) v i ∈ A k e v j∈ A k
Assim, substituindo os valores de hk (i) e hk ( j) temos:
( ) ( )
2 2
1 1 1 1
h Tk L ⃗hk = ∑ w ij
⃗ −0 + ∑ wij 0−
2 (i , j )∈ E √|A k| 2 (i , j )∈ E √|A k|
i ∈ Ak i ∈ Ak
j∈ A k j∈ A k
1 1 1 1 1 1 cut ( Ak , A k )
⃗
h k L ⃗hk =
T
∑
|A k| 2 (i , j)∈E
wij + ∑
|A k| 2 (i , j )∈ E
wij =
|A k| 2
[ w( A k , A k )+w ( A k , A k ) ]=
|A k|
i∈ A k i ∈ Ak
j ∈ Ak j∈ A k
⃗
h k L ⃗hk =( H L H)kk
T T
k=1 k=1
Note que esse também é um problema NP-Hard e portanto computacionalmente inviável de ser
resolvido. Novamente, podemos relaxar o problema, permitindo que os coeficientes da matriz H
sejam números reais. Assim, o problema relaxado se torna:
min Tr ( H T L H ) sujeito a
n ×k
H T H=I
H ∈R
[ ]
| | ... |
| | ... |
⃗ ⃗
H= h1 h2 ... ⃗
hk
| | ... |
| | ... | n×k
A solução para esse problema é dada pela escolha dos K autovetores associados aos k menosres
autovalores não nulos de L, ou seja, devemos fazer a seguinte atribuição:
⃗h1=⃗v n−1
⃗
h 2=⃗v n−2
...
⃗
h k =⃗v n−k
Após a definição da matriz H, uma maneira que quantizá-la, ou seja tornar seus valores discretos, é
aplicar um algoritmo para clusterização como k-médias utilizando K sementes, por exemplo. Assim,
cada coluna de H, terá uma variável indicadora da pertinência ou não da amostra i ao cluster j.
Sendo assim, vimos que o algoritmo Spectral Clustering pode ser visto como a solução de um
problema de otimização relaxado: minimizar o Rcut.
Técnicas muito similares as utilizadas anteriormente para Rcut podem ser empregadas para derivar
o algoritmo Spectral Clustering como um método que surge da relaxação de outro problema: a
minimização do Ncut.
min Ncut ( A , A)
A⊂V
Para isso iremos associar o Ncut com a matriz Laplaciana normalizada. Seja ⃗f ∈ R n dado por:
{ √vol( A)
, v i∈ A
vol( A)
f i= (**)
−
√
vol( A)
vol( A)
, vi ∈ A
Seja D=diag(d (v 1 ) ,d (v 2) , ... , d( v n )) a matriz diagonal dos graus. Assim, como ⃗f era
1 no Rcut, segue que ⟨ D ⃗f , ⃗1 ⟩=0 . De maneira análoga, como ⃗f T ⃗f =1
ortogonal ao vetor ⃗
no Rcut, segue que ⃗f T D ⃗f =vol(V ) (soma dos graus).
min ⃗f L ⃗f
T
sujeito a ⟨ D ⃗f , ⃗1 ⟩=0 e ⃗f T D ⃗f =vol(V ) com ⃗f definido conforme (**)
⃗f
Novamente, vemos que se trata de um problema NP-Hard. Relaxando o problema, permitimos que
⃗f ∈ R n (variáveis contínuas). Fazendo ⃗g=D1 /2 ⃗f temos que ⃗f =D −1 /2 ⃗
g . Substituindo as
variáveis no problema original temos:
min ⃗
gD
−1 /2 −1 /2
L D ⃗g sujeito a ⟨D 1/ 2 ⃗g , ⃗ T
1⟩=0 e ⃗g ⃗g=vol(V )
n
g ∈R
⃗
O vetor ⃗g deve ser o autovetor associado ao menor autovalor não nulo da matriz Laplaciana
normalizada L2=D−1/ 2 L D−1/ 2 .
Resumo: Resolver min Rcut e min Ncut são problemas NP-Hard. Utilizando Spectral
Clustering, estamos resolvendo uma versão aproximada desses problemas que são polinomiais. Se
empregamos a matriz L, temos uma boa aproximação para Rcut, ao passo que se empregamos a
matriz Laplaciana normalizada L2=D−1/ 2 L D−1/ 2 , temos uma boa aproximação para Ncut.
Busca-se por um mapeamento suave que preserve vizinhanças, ou seja, proximidade no grafo deve
implicar em proximidade na reta.
Sabe-se que um critério para ótimo para esse cenário é definido pela imersão Laplaciana, onde
busca-se pelo mapeamento ⃗y=[ y1 , y 2 ,... , y n ] que minimize:
1
T
⃗y L ⃗y= ∑
2 (i , j)∈ E
wij ( y i− y j)
2
[ ]
| | ... |
| | ... |
X = ⃗x 1 ⃗x 2 ... ⃗x n
| | ... |
| | ... | D×n
onde n denota o número de amostras e cada coluna da matriz denota uma amostra ⃗x i∈ R D .
Dessa forma, o critério anterior pode ser reescrito como:
1
2 (i ∑
T T T 2
⃗y L ⃗y = wij (⃗
a ⃗xi −⃗
a ⃗x j)
, j)∈ E
1
T
⃗y L ⃗y = ∑ w [⃗aT ⃗x i ⃗x Ti ⃗a−2(⃗aT ⃗x i ⃗xTj ⃗a )+⃗a T ⃗x j ⃗x Tj ⃗a ]
2 (i , j) ij
1 1
T
⃗y L ⃗y = ∑ w ( 2⃗aT ⃗x i ⃗x Ti ⃗a )− 2 ∑ w ij(2⃗aT ⃗x i ⃗x Tj ⃗a )
2 (i , j) ij (i , j)
Como sabemos que d ( vi )=∑ wij , o primeiro termo pode ser simplificado:
j
⃗y L ⃗y =∑ ⃗ ⃗ −∑ ⃗aT ⃗x i wij ⃗x Tj ⃗a
T T T
a ⃗x i d (v i) ⃗x i a
i (i , j)
⃗y L ⃗y =∑ ⃗
a ⃗x i Dii ⃗x i ⃗a−∑ ⃗
T T T T T
a ⃗xi w ij ⃗x j ⃗
a
i (i , j )
∂ L(⃗ T
a , λ )=X L X ⃗
T
a − λ ( X D X ⃗a )=0
∂⃗
a
o que nos leva ao problema de autovalores e autovetores generalizado:
T T
X L X a⃗ =λ X D X ⃗a
ou ainda
T −1 T
(X D X ) (X L X ) ⃗
a =λ ⃗a
Assim, a solução para esse tipo de problema é bastante conhecida. Temos que o vetor a
⃗ deve ser
o autovetor associado ao menor autovalor de Z =( X D X T )−1 ( X L X T ) .
Kernel LPP
Como o método LPP é uma aproximação linear do Laplacian Eigenmaps, é possível torná-lo não
linear com a utilização de kernels. Considere um mapeamento não linear ϕ : R m →R M para um
espaço intermediário de maior dimensão, e seja ϕ ( X ) a matriz dos dados neste espaço R M, ou
seja, ϕ ( X )=[ ϕ ( x⃗1 ) , ϕ ( x⃗2 ),... , ϕ ( x⃗n)] . Então, o problema de autovalores e autovetores do método
LPP pode ser expresso por:
ϕ ( X ) L ϕ ( X)T ⃗v = λ ϕ ( X ) D ϕ ( X )T ⃗v (@)
Para generalizar o algoritmo LPP para o caso não linear, o problema deve ser formulado em termos
de produtos internos, uma vez que pelo kernel trick temos:
Conforme visto anteriormente no Kernel PCA, os autovetores da equação (*) podem ser expressos
como combinações lineares de ϕ ( x⃗1), ϕ ( x⃗2) ,... , ϕ ( x⃗n) , ou seja:
n
⃗v =∑ α i ϕ ( x⃗i )=ϕ ( X) α
⃗
i=1
T n
onde α
⃗ =[ α 1 , α 2 , ... , α n ] ∈ R . Assim, a equação (@) pode ser expressa por:
ϕ ( X ) L ϕ ( X)T ϕ ( X) α
⃗ =λ ϕ (X )D ϕ ( X )T ϕ ( X) α
⃗
ϕ ( X )T ϕ ( X ) L ϕ ( X)T ϕ ( X ) α T T
⃗ = λ ϕ ( X ) ϕ ( X ) D ϕ ( X) ϕ ( X )⃗
α
K LK α
⃗ =λ K D K ⃗
α
( K D K )−1 K L K α
⃗ =λ α
⃗
de modo que devemos escolher como α⃗1 , α⃗2 , ..., α⃗d os d autovetores associados aos d menores
autovalores da matriz (KDK )−1 ( KLK ) . Para uma nova amostra que não pertence ao conjunto de
dados original, as projeções nos autovetores v⃗k , k = 1, 2, …, d são dadas por:
n n n
v⃗Tk ϕ (⃗x )=∑ αk (i) ϕ ( x⃗i )T ϕ (⃗x )=∑ α k ( i) ϕ (⃗x )T ϕ ( x⃗i )=∑ α k (i) K (⃗x , x⃗i )
i=1 i=1 i=1
“Antes de pensar em desistir, lembre-se: a última parte de uma árvore a crescer são os frutos.”
(Anônimo)