SVM - Máquina de Vetores de Suporte
UFPE
Observamos \((\mathbf{x}_i, y_i)\), \(i = 1, \ldots, n\), com \(\mathbf{x}_i \in \mathbb{R}^p\).
No SVM, as duas classes são codificadas como \(y_i \in \{-1, +1\}\).
\[\hat{y} = \text{sinal}\big(f(\mathbf{x})\big) = \begin{cases} +1, & f(\mathbf{x}) > 0, \\ -1, & f(\mathbf{x}) < 0. \end{cases}\]
Pergunta da aula: entre as muitas fronteiras que separam as classes, qual escolher?
SVM - Support Vector Machine

Definição 1. Um hiperplano em \(\mathbb{R}^p\) é o conjunto \[H = \{\mathbf{x} \in \mathbb{R}^p : \mathbf{w}^\top \mathbf{x} + b = 0\}, \qquad \mathbf{w} \neq \mathbf{0},\] em que \(\mathbf{w}\) é um vetor normal (perpendicular) a \(H\) e \(b \in \mathbb{R}\) é o intercepto.
Em \(\mathbb{R}^2\), \(H\) é uma reta; em \(\mathbb{R}^3\), um plano; em geral, tem dimensão \(p - 1\).
Exemplo em \(\mathbb{R}^2\): \(\; 2x_1 + x_2 - 4 = 0\), com \(\mathbf{w} = (2, 1)\) e \(b = -4\).
Proposição 1. A distância de \(\mathbf{x}_0\) ao hiperplano \(H\) é \(\;\displaystyle d(\mathbf{x}_0, H) = \frac{|\mathbf{w}^\top \mathbf{x}_0 + b|}{\|\mathbf{w}\|}\), com \(\|\mathbf{w}\| = \sqrt{\textstyle\sum_{j=1}^p w_j^2}\).
Demonstração. Seja \(\mathbf{x}_H\) a projeção ortogonal de \(\mathbf{x}_0\) em \(H\). Como \(\mathbf{x}_0 - \mathbf{x}_H\) é paralelo a \(\mathbf{w}\),
\[\mathbf{x}_0 = \mathbf{x}_H + t\,\frac{\mathbf{w}}{\|\mathbf{w}\|}, \quad \text{com } |t| = d(\mathbf{x}_0, H).\]
Aplicando \(f\) e usando \(\mathbf{w}^\top \mathbf{x}_H + b = 0\):
\[\mathbf{w}^\top \mathbf{x}_0 + b = \underbrace{\mathbf{w}^\top \mathbf{x}_H + b}_{=\,0} + t\,\frac{\mathbf{w}^\top \mathbf{w}}{\|\mathbf{w}\|} = t\,\|\mathbf{w}\| \;\;\Rightarrow\;\; |t| = \frac{|\mathbf{w}^\top \mathbf{x}_0 + b|}{\|\mathbf{w}\|}. \;\; \blacksquare\]
\[\min_{i} \; y_i(\mathbf{w}^\top \mathbf{x}_i + b) = 1.\]
Então esses pontos estão a distância \(1/\|\mathbf{w}\|\) de \(H\) (Proposição 1), sobre os hiperplanos \(f(\mathbf{x}) = +1\) e \(f(\mathbf{x}) = -1\).
A margem (largura da faixa entre \(f = -1\) e \(f = +1\)) é
\[M = \frac{2}{\|\mathbf{w}\|}.\]
Maximizar a margem \(\;\Longleftrightarrow\;\) minimizar \(\|\mathbf{w}\|\).

Na figura, o hiperplano é \(\mathbf{w}\cdot\mathbf{x} - b = 0\): o sinal de \(b\) está trocado em relação aos slides.
Se as classes são linearmente separáveis, o SVM resolve:
\[\min_{\mathbf{w},\, b} \; \frac{1}{2}\|\mathbf{w}\|^2 \qquad \text{sujeito a} \qquad y_i(\mathbf{w}^\top \mathbf{x}_i + b) \geq 1, \quad i = 1, \ldots, n.\]
Restrições: todo ponto fica do lado certo e fora da faixa da margem.
Objetivo: \(\frac{1}{2}\|\mathbf{w}\|^2\) em vez de \(\|\mathbf{w}\|\) dá o mesmo mínimo e é mais fácil de derivar.
É um problema quadrático convexo: tem solução única, encontrada por algoritmos de otimização.
. . .
Os pontos \(+1\) estão na reta \(x_2 = x_1 + 1\); os \(-1\), na reta \(x_2 = x_1 - 2\).
O hiperplano ótimo é paralelo e no meio: \(x_2 = x_1 - \tfrac{1}{2}\).
. . .
Exercício: encontre \(\mathbf{w}\), \(b\), a margem e a classe de \((2, 2)\).

\[k\left(-1 + 2 + \tfrac{1}{2}\right) = 1 \;\Rightarrow\; k = \tfrac{2}{3} \;\Rightarrow\; \mathbf{w} = \left(-\tfrac{2}{3}, \tfrac{2}{3}\right), \quad b = \tfrac{1}{3}.\]
Verificação: \(y_i f(\mathbf{x}_i) = 1\) para os quatro pontos: todos estão sobre a margem.
Margem: \(\|\mathbf{w}\| = \frac{2\sqrt{2}}{3}\) \(\;\Rightarrow\; M = \dfrac{2}{\|\mathbf{w}\|} = \dfrac{3}{\sqrt{2}} \approx 2{,}12\).
Com multiplicadores de Lagrange \(\alpha_i \geq 0\), as condições de otimalidade dão
\[\mathbf{w} = \sum_{i=1}^{n} \alpha_i y_i \mathbf{x}_i \qquad \text{e} \qquad \sum_{i=1}^{n} \alpha_i y_i = 0,\]
e os \(\alpha_i\) resolvem o problema dual:
\[\max_{\boldsymbol{\alpha}} \; \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j\, \mathbf{x}_i^\top \mathbf{x}_j \quad \text{s.a.} \quad \alpha_i \geq 0, \; \sum_{i} \alpha_i y_i = 0.\]
Complementaridade: \(\alpha_i \big[y_i f(\mathbf{x}_i) - 1\big] = 0\). Logo, \(\alpha_i > 0\) só para pontos sobre a margem: os vetores de suporte (SV).
No exemplo, uma solução é \(\boldsymbol{\alpha} = \left(\tfrac{2}{9}, \tfrac{2}{9}, 0, \tfrac{4}{9}\right)\); confira que \(\sum_i \alpha_i y_i \mathbf{x}_i = \mathbf{w}\). Aqui os \(\alpha_i\) não são únicos: \((2, 0)\) está na margem, mas recebeu \(\alpha = 0\).
Na prática, as classes se sobrepõem. Permitimos violações \(\xi_i \geq 0\) (variáveis de folga):
\[\min_{\mathbf{w},\, b,\, \boldsymbol{\xi}} \; \frac{1}{2}\|\mathbf{w}\|^2 + C \sum_{i=1}^{n} \xi_i \quad \text{s.a.} \quad y_i(\mathbf{w}^\top \mathbf{x}_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0.\]
\(\xi_i = 0\): ponto correto e fora da margem; \(\;0 < \xi_i \leq 1\): dentro da margem, lado certo; \(\;\xi_i > 1\): erro de classificação.
\(C > 0\) equilibra margem larga e poucas violações. No dual, muda apenas a restrição: \(0 \leq \alpha_i \leq C\).

Ideia: aplicar uma transformação \(\boldsymbol{\phi} : \mathbb{R}^p \to \mathbb{R}^D\) (\(D\) grande) e procurar um hiperplano no novo espaço.
Um hiperplano em \(\boldsymbol{\phi}(\mathbf{x})\) corresponde a uma fronteira curva no espaço original.

Definição 2. Um kernel é uma função \(K(\mathbf{x}, \mathbf{z}) = \boldsymbol{\phi}(\mathbf{x})^\top \boldsymbol{\phi}(\mathbf{z})\), que calcula o produto interno no novo espaço sem calcular \(\boldsymbol{\phi}\).
Exemplo (\(p = 2\)): com \(\boldsymbol{\phi}(\mathbf{x}) = \big(x_1^2,\; \sqrt{2}\,x_1 x_2,\; x_2^2\big)\),
\[\boldsymbol{\phi}(\mathbf{x})^\top \boldsymbol{\phi}(\mathbf{z}) = x_1^2 z_1^2 + 2\,x_1 x_2 z_1 z_2 + x_2^2 z_2^2 = (x_1 z_1 + x_2 z_2)^2 = (\mathbf{x}^\top \mathbf{z})^2.\]
| Kernel | \(K(\mathbf{x}, \mathbf{z})\) | Parâmetros |
|---|---|---|
| Linear | \(\mathbf{x}^\top \mathbf{z}\) | — |
| Polinomial | \((\gamma\, \mathbf{x}^\top \mathbf{z} + r)^d\) | grau \(d\), \(\gamma > 0\), \(r \geq 0\) |
| Radial (RBF, gaussiano) | \(\exp\big(-\gamma \|\mathbf{x} - \mathbf{z}\|^2\big)\) | \(\gamma > 0\) |
| Sigmoide | \(\tanh(\kappa\, \mathbf{x}^\top \mathbf{z} + \theta)\) | \(\kappa\), \(\theta\) |
Dados simulados em círculos: \(n = 200\) no treino, \(4.000\) no teste, \(C = 1\).

O kernel linear não consegue separar círculos.
RBF com \(\gamma\) grande: influência mais local, fronteira irregular, risco de sobreajuste.
O SVM é binário. Com \(c > 2\) classes, combinamos vários SVMs:
\[\hat{y} = \arg\max_{g \in \{1, \ldots, c\}} f_g(\mathbf{x}).\]
Um contra um (one-vs-one): ajustam-se \(\binom{c}{2} = \frac{c(c-1)}{2}\) classificadores, um para cada par de classes; a classe final é a mais votada.
Com \(c = 4\): 4 classificadores (um contra todos) ou 6 (um contra um). Bibliotecas como a libsvm usam um contra um.
Só os vetores de suporte entram na previsão: os demais pontos podem ser removidos sem mudar \(f\).
Vantagens
Limitações
Prática no Google Colab
SVM linear e radial em Python
Cortes, C. e Vapnik, V. Support-Vector Networks. Machine Learning, 20(3), 273–297, 1995.
Boser, B., Guyon, I. e Vapnik, V. A Training Algorithm for Optimal Margin Classifiers. COLT, 1992.
James, G., Witten, D., Hastie, T. e Tibshirani, R. An Introduction to Statistical Learning. 2ª ed., Springer, 2021.
Hastie, T., Tibshirani, R. e Friedman, J. The Elements of Statistical Learning. 2ª ed., Springer, 2009.
Izbicki, R. e Santos, T. M. Aprendizado de Máquina: uma abordagem estatística. 2020.
Morettin, P. e Singer, J. Estatística e Ciência de Dados. LTC, 2022.
OBRIGADO!
Slide produzido com quarto
Introdução à Ciência de Dados - Prof. Jodavid Ferreira