Support Vector Machines
Support Vector Machines (SVM) é um algoritmo de aprendizagem supervisionado para classificação de dados, semelhante à regressão logística e às redes neurais. Esse algoritmo apresenta algumas vantagens sobre os outros métodos, entretanto, a complexidade matemática de sua formulação torna a codificação de tais sistemas uma tarefa mais trabalhosa.
Serão apresentadas as formalizações matemáticas desse método e suas consequências em problemas de classificação. Posteriormente, alguns exemplos ilustrativos de sua aplicação.
Começamos com a definição da hipótese para esse tipo de algoritmo. Em regressão logística, e de certa forma em redes neurais, a hipótese é formulada pela função sigmoid:
hθ(x )=g(θ T
x)= 1
1+e−θTx
Analisando conjuntamente a equação acima e seu gráfico, quando temos amostras de um conjunto de dados de treinamento, onde o sistema deve classificar tal amostra como positivo (y = 1), isso requer que hθ(x) ≈ 1, que significa que θTx deve ser muito maior que zero. De forma análoga, dados
que devem ser classificados com y = 0, devem ter θTx muito menor que zero.
A função custo que representa essa idéia para a regressão logística, penalisando valores de θTx
muito diferentes do desejado, é dada por:
J (θ)=
[
1 m∑
i =1m
y(i)⋅(−log(h θ(x
(i))))+(1− y(i))⋅(−log(1−h θ(x (i ) )))
]
+ λ 2 m∑
j=1 n θ2jA idéia citada, implementada pela função-custo acima, pode ser melhor compreendida se analisarmos a expressão dentro do colchete.
−y(i)⋅log
(
1 1+e−θTx)
−(1− y (i) )⋅log(
1−(
1 1+e−θTx)
)
para y = 1 para y = 0No caso das SVMs, as funções acima sofrem uma ligeira alteração. Ao invéz de uma única curva logarítmica, ela será uma composição de duas retas, mas com similar comportamento. A figura abaixo ilustra tal função em vermelho, comparando com a função anterior em azul.
para y = 1 para y = 0
As funções em vermelho continuam com comportamento semelhante, atribuindo alto custo para valores de z que se distanciam da classe alvo do dado de treinamento. Sem nos preocuparmos com a formalização da equação da reta da função em vermelho, podemos reescrever a função-custo anterior na forma:
J (θ)=
[
1 m∑
i =1m
y(i)⋅cost1(θ T
x(i))+(1− y(i))⋅cost0(θ T
x(i ))
]
+ λ 2 m∑
j=1n
θ2j
Onde cost1( ) é a função em vermelho para y = 1 e cost0( ) é a função em vermelho para y = 0.
A equação da função-custo acima pode ser obervada como a soma de dois termos independentes, ou seja, J = A + λB. Considerando que λ é constante, podemos reescrever a equação anterior na forma J = CA + B. Se for desejável que ambas as formas representem numericamente o mesmo valor, basta fazer C = 1/λ. Logo:
J (θ)=C
∑
i=1 m
[
y(i )⋅cost1(θTx(i))+(1− y(i))⋅cost0(θTx(i))]
+1 2∑
j=1n
θ2j
Repare que em ambos os termos, 1/m foi removido. A razão principal disso é por convenção, visto que as definições matemáticas formais de SVM foram desenvolvidas sem esse multiplicador. Adicionalmente, o fator 1/m é constante, e não interfere nos valores de θ ótimos achados durante a minimização de J.
Outra importante diferença entre a regressão logística e SVM, é a interpretação da hipótese. Em regressão logística, o valor da hipótese representa a probabilidade de um certo dado de entrada pertencer a classe alvo, enquanto que em SVM, não há essa probabilidade, somente:
hθ(x )=
{
1 se θ Tx⩾0 0 caso contrário
Formalização Matemática
O treinamento de uma SVM consiste, assim como nos demais algoritmos, em determinar o conjunto de parâmetros θ que minimizam a função-custo J. Analisando a função J acima, vemos que devemos minimizar dois termos.
O termo de regularização é sempre positivo, assim, minimizar tal termo consiste somente em atribuir valores pequenos para θ. O primeiro termo da função, por outro lado, pode ser minimizado, se as funções cost1( ) e cost0( ) forem mínimas. Observando os gráficos dessas funções (retas
θTx⩾1 para y = 1 θTx⩽−1 para y = 0
Note que os limiares de decisão (classificação) são -1 e 1, e não mais o valor 0. Dessa forma, é desejável ter sempre as duas condições acima atendidas, minimizando ao máximo o valor de J. Uma forma de garantir tais condições durante o processo de treinamento, é fazer o valor de C bastante elevado.
Portanto, o treinamento de uma SVM consiste em achar os valores de θ que minimizem J:
min θ =C
∑
i=1m
[
y(i )⋅cost1(θTx(i ))+(1− y(i ))⋅cost0(θTx(i))]
+1 2∑
j=1n
θ2j
Uma vez satisfeitas as condições acima para θTx, o treinamento do algoritmo (minimização da
função-custo) se resume em:
min θ = 1 2
∑
j=1 n θ2jProduto Interno (Produto Escalar)
Para formalizar a matemática da SVM, devemos deixar claro e explícito a definição algébrica de produto interno entre dois vetores. Considere os vetores bidimensionais u e v. Algebricamente, eles são definidos por:
u=
[
u1u2
]
e v =[
v1v2
]
O produto interno é, portanto, representado por u ∙ v. Graficamente, sabemos que o produto interno é o produto da projeção do vetor v sobre o eixo de u e o comprimento do vetor u, resultando em um valor escalar. O mesmo resultado pode ser obtido fazendo a projeção do vetor u sobre o eixo de v, multiplicando pelo comprimento de v. Algebricamente:
onde p é o comprimento da projeção de v sobre o eixo de u, e ||u|| é o comprimento do vetor u, formalmente chamado de norma de u:
‖u‖=
√
u12+u 2 2A expressão acima nos permite escrever o termo de regularização da função-custo como:
1 2
∑
j =1 n θ2j=1 2(θ1 2 +θ22+⋯)=1 2(√
θ1 2 +θ22+⋯)2=1 2‖θ‖ 2É importante lembrar que a operação do produto interno resulta em um número Real, ou seja, podendo ser negativo ou positivo. O produto interno será negativo quando a projeção de um vetor sobre o eixo do outro estiver em uma direção oposta, ou seja, quando o ângulo entre os vetores for maior que 90º.
É possível provar algebricamente que:
u⋅v= p⋅‖u‖=u1v1+u2v2
Logo, temos que o produto interno será:
u⋅v=uTv= p⋅‖u‖
Se considerarmos, agora, a multiplicação vetorial θTx, temos:
θTx= p⋅‖θ‖
onde p é a projeção do vetor x sobre o eixo do vetor θ. Limiar de Decisão
Considerando um conjunto de dados de treinamento, cujas variáveis de entrada são representadas por vetores x(i), com i = 1, 2, … , m, devemos calcular θTx(i), que minimize a função custo para todas
as amostras x(i)., onde cada amostra é representada por um vetor x = [x
Considere, por exemplo, um problema de classificação com 2 variáveis (x1 e x2), como ilustrado na
figura abaixo. Logo, teremos θ = [θ0 θ1 θ2], podendo fazer θ0 = 0 como simplificação.
Uma opção de classificação é usar uma fronteira de decisão linear como mostrada abaixo. É intuitivo pensar que tal fronteira não é a melhor opção, apesar de separar as duas possíveis classes.
É possível provar algebricamente, que o vetor θ que resulta em tal fronteira é ortogonal a ela. A simplificação adota de θ0 = 0 faz com que a reta da fronteira de decisão cruze o eixo ortogonal na
origem, bem como a origem do vetor θ será na origem dos eixos.
Podemos então calcular o produto interno de cada vetor de amostra e o vetor de parâmetros. Considerando, por exemplo, a amostra x(1) indicada abaixo, a projeção dela no eixo de θ será o
Fazendo o mesmo para uma segunda amostra x(2), sua projeção será p(2).
Repare que as projeções p para essas amostras são relativamente pequenas. Assim, as funções cost1( ) (para y = 1) e cost0( ) (para y = 0) somente serão nulas, o que corresponde ao mínimo da
função-custo, se ||θ|| for grande, pois temos que as funções citadas serão zero caso θTx= p⋅‖θ‖⩾1 para y = 1 e θTx= p⋅‖θ‖⩽−1 para y = 0.
Para minizarmos a função-custo, anulando as funções cost(), sem aumentar desnecessariamente ||θ||, o que causaria um aumento de J devido ao termo de regularização, devemos aumentar o máximo possível o valor de p para cada amostra. No exemplo acima, isso pode ser obtido se considerarmos a fronteira de decisão ilustrada abaixo.
Limiar de Decisão com Margem Larga
A principal consequência da abordagem acima para determinação da fronteira de decisão, e a criaçao de uma margem larga em torno da fronteira.
A margem é uma linha paralela à fronteira, que a separa das amostras de uma determinada classe. Considere a figura abaixo, com amostras linearmente separáveis em duas classes.
A fronteira de decisão H1 claramente não separa as duas classes, e portanto não é uma solução
aceitável. Ambas fronteiras H2 e H3, e por isso podem ser consideradas soluções para a
classificação. Ao analisar as margens de cada fronteira, vemos que as distâncias entre as fronteiras e as amostras mais próximas, vemos claramente que as margens de H3 são maiores que H2.
Por isso, SVM é conhecida como uma ferramenta de classificação de alta margem, ou margem larga, geralmente convergindo para soluções mais otimizadas que algorimos de regressão logística. Essa vantagem, contudo, é garantida quando é minimizada a função-custo J com um alto valor de C. Uma desvantagem do uso de um alto valor de C, é o aumento da sensibilidade do sistema com relação a amostras de treinamento discrepantes. Suponha o problema de classificação abaixo. Uma fronteira com alta margem é ilustrada em preto.
Caso o conjunto de treinamento tenha uma amostra de valor discrepante, como o mostrada abaixo, a SVM pode ter comportamentos diferentes a depender do valor de C.
Intuitivamente, podemos ver que a fronteira de decisão deve ser mantida, ou pouco alterada, visto que o valor discrepante não representa todo o conjunto de amostras, ou a maioria delas. Entretanto, caso um alto valor de C seja usado, a fronteira de decisão será fortemente alterada, representada em rosa na figura abaixo. A partir disso, deve-se achar um valor de C que resulte numa fronteira de decisão ótima, sem ser afetada excessivamente por valores extremos.