--- presentation theme: beige.css slideNumber: true width: 1024 height: 768 --- ## Aprendizado de Máquina ### Máquinas de vetores de suporte (SVM's) ### Prof. Ronaldo Cristiano Prati [ronaldo.prati@ufabc.edu.br](mailto:ronaldo.prati@ufabc.edu.br) Bloco A, sala 513-2 ## SVM's - Máquinas de vetores de suporte são uma outra família de algoritmos de aprendizado de máquina supervisionado - Em certos casos, é mais simples de usar que redes neurais - Também tem ótimo desempenho em certas aplicações ## Função de custo - Relembramos da função de custo da regressão logística: $$ J(\theta) = \frac{1}{m} \sum_i^m - y^i \log (h_\theta(x^i)) - (1- y_i)\log (1-h_\theta(x^i)) + \frac{\lambda}{2m} \sum_{j=1}^n\theta^2 $$ - Na regressão logística queremos: - se $y=1$, $h_\theta(x)\approx 1 $ e $\theta^\intercal x > 0 $ - se $y=0$, $h_\theta(x)\approx 0 $ e $\theta^\intercal x < 0 $ ## Função de custo
### Quando $y=1$ ![](rl_cost1.png)
### Quando $y=0$
![](rl_cost1.png)
## Função de custo - SVM
### Quando $y=1$ ![](svm_cost1.png) $cost_1(z) $
### Quando $y=0$
![](svm_cost1.png) $cost_0(z)$
### Função de custo completa - SVM - Removemos $\frac{1}{m}$ (convenção, não altera o mínimo) - Parâmetro de regularização associado ao primeiro termo (razão mais adiante) $$ \min_{\theta} C \sum_i^m - y^i cost_1 (h_\theta(x^i)) - (1- y_i) cost_0 (1-h_\theta(x^i)) + \frac{1}{2} \sum_{j=1}^n\theta^2 $$ ### Função de custo completa - SVM - O parâmetro $C$ pode é equivalente a $\frac{1}{\lambda}$. - Se quisermos regulizarar mais (reduzir overfitting), decrescemos $C$ - Se quisermos regularizar menos (reduzir underfitting), aumentados $C$ - Ao contrário da regressão logística, a saída de $h_\theta(x)$ é somente 0 ou 1 (não uma probabilidade) ### Maximização da margem - SVM também é conhecida como **classificador de margem larga** - Em SVM queremos: - se $y=1$, $\theta^\intercal x \geq 1 $ (não apenas $>0$) - se $y=0$, $\theta^\intercal x \leq -1 $ (não apenas $<0$) ### Maximização da margem - Para entender o efeito, vamos considerar um valor de $C$ muito grande - Nesse caso $\sum\theta^2$ predomina na função de custo, que resulta no problema $$ \begin{aligned} \min_\theta & \frac{1}{2} \sum_i^n \theta^2\\ s.a. & \theta^\intercal x \geq 1 \text{ se } y=1 \\ & \theta^\intercal x \leq -1 \text{ se } y=0 \\ \end{aligned} $$ ### Maximização da margem - Esse problema corresponde a encontrar a fronteira de decisão que maximiza a margem de separação entre as classes ![](margin.png) ### Maximização da margem - O parâmetro de regularização $C$ ajuda a contornar *outliers*
$C$ adequado ![](marginClarge.png)
$C$ muito grande ![](marginCsmall.png) ### Maximização da margem - Por que a margem é maximizada? - Vamos analisar intuitivamente - Vamos considerar um problema com 2 dimensões (é mais fácil desenhar) - Vamos desconsiderar $\theta_0$ por hora - Vamos considerar também um problema linearmente separável ### Maximização da margem - Relembre que queremos $\min_\theta \frac{1}{2} \sum_i^n \theta^2$ - Vamos reescrever $\sum_i^n \theta^2$: $$ \begin{aligned} \sum \theta^2 & = (\theta_1^2 +\theta_2^2)\\ & = \left(\sqrt{\theta_1 +\theta_2}\right)^2\\ & = \lVert\theta\rVert^2 \end{aligned} $$ - em que $\lVert\theta\rVert^2$ é a norma (tamanho) do vetor ### Maximização da margem - O que $\theta^\intercal x$ faz? $$ \begin{aligned} \theta^\intercal x^i &= \begin{bmatrix} \theta_1\\ \theta_2 \end{bmatrix} [x_1^i x_2^i] \\ & = \theta_1 x_1 + \theta_2 x_2 \\ & = \langle \theta,x^i\rangle \\ & = p^i\lVert\theta\rVert \end{aligned} $$ - em que $\langle \theta,x^i\rangle$ é o produto interno entre $\theta$ e $x^i$, e $p^i$ é o comprimento da projeção de $x^i$ em $\theta$. ### Maximização da margem - As restrições $$ \theta^\intercal x \geq 1 \text{ se } y=1 \\ \theta^\intercal x \leq -1 \text{ se } y=0 $$ podem ser reinterpretadas como $$ p^i\lVert\theta\rVert \geq 1 \text{ se } y=1 \\ p^i\lVert\theta\rVert \leq -1 \text{ se } y=0 $$ ### Maximização da margem - Se a margem entre as classes for pequena
Margem pequena ![](slowmargin1.png)
Projeção pequena ![](slowmargin2.png) ### Maximização da margem - Se a margem entre as classes for grande
Margem grande ![](largemargin1.png)
Projeção maximizada ![](largemargin2.png) ### Maximização da margem - Se $p$ é pequeno, $\lVert\theta\rVert$ tem que ser grande para garantir as restrições. - Mas queremos minimizar $\lVert\theta\rVert^2$! - Maximizar $p$ minimiza $\lVert\theta\rVert$ ### Maximização da margem - Inicialmente ignoramos $\theta_0$ - A fronteira de decisão deve passar obrigatóriamente pela origem - Se $\theta_0$ puder assumir outros valores, não temos a restrição da fronteira de decisão passar pela origem - Os princípios gerais continuam os mesmos ## Kernel - O **kernel** é útil quando queremos computar uma fronteira de decisão não linear - A ideia consiste em calcular um novo espaço de atributos - Já fizemos algo parecido quando usamos polinômios a partir do conjunto original de atributos - Kernels são uma outra maneira de fazer isso ### Kernel gaussiano - Considere que temos 3 pontos de referencia $l^1$, $l^2$ e $l^3$ ![](landmark.png) ### Kernel gaussiano - Vamos agora definir 3 novos atributos $f^1$, $f^2$ e $f^3$ com base em $l^1$, $l^2$ e $l^3$ tal que: $$ f^i = \exp \left( - \frac{\lVert x - l^i\rVert}{2 \sigma^2}\right)$$ - Essa função de similiradade é chamada de *kernel gaussiano* ### Influência de sigma - Sigma controla a "influência" da função de similaridade no espaço ![$\sigma = 1$](sigma1.png)![$\sigma = 0.5$](sigma2.png)![$\sigma = 3$](sigma3.png) ### Hipótese - Como essa funções influenciam na hipótese? - Vamos supor que $\sigma = [-0.5, 1, 1, 0]$ ### Hipótese $$ h := \theta_0 + \theta_1 f_1 + \theta_2 f_2 + \theta_3 f_3 \geq 0 $$
$-0.5 + 1 + 0 + 0 = 0.5$ ![](newpoint1.png) magenta é classificado como 1
$-0.5 + 0 + 0 + 0 = - 0.5$ ![](newpoint2.png) verde é classificado como 0
### Hipótese - Dentro da região marcada como vermelho é classificado como 1 - Fora é classificado como 0 ![](hipotese.png) ## Kernels - Podemos usar cada exemplo do conjunto de treinamento como um ponto de referência - Cada novo atributo mede o quão próximo um novo exemplo está dos pontos do conjunto de treinamento - Podemos usar SVM para aprender os valores de $\theta$ associados a cada novo atributo ## Kernels - Isso nos leva a nova função de custo $$ \min_{\theta} C \sum_i^m - y^i cost_1 (h_\theta(f^i)) - (1- y_i)cost_0 (1-h_\theta(f^i)) + \frac{1}{2} \sum_{j=1}^m\theta^2 $$ - O calculo de $\theta^2$ é normalmente implementado como $\theta^\intercal\theta$ - Isso permite usar alguns truques como $\theta^\intercal M \theta$ - $M$ depende do kernel - Calcula uma variação desse termo de maneira mais eficiente ## SVM com kernel gaussiano - Parâmetro $C$ da SVM - $C$ grande leva a uma hipótese com baixo bias/alta variância: overfitting - $C$ pequeno leva a uma hipótese com alto bias/baixa variância: underfitting - Parâmetro $\sigma^2$ do Kernel - $\sigma^2$ grande - os atributos variam mais suavemente - alto bias, baixa variância - $\sigma^2$ pequeno - os atributos variam mais abruptamente - baixo bias, alta variância ## Outros Kernels - Linear (não usar kernel) - Polinomial (parecido com a ideia de usar polinômios de maior grau) - String - $\Chi^2$ - Intersecção de histograma Cada um tem um conjunto própio de parâmetros ## implementação - Não é trivial implementar (não podemos usar a minização do gradiente diretamente) - Diversos pacotes provêem implementações eficientes - Multiplos Kernels - Variações multiclasse - Diferentes abordagens de otimização