Máquinas de Vetores de Suporte (SVM)

Continuando nossa exploração do guia do scikit-learn, chegamos a um dos algoritmos mais influentes e amplamente utilizados no machine learning: as Máquinas de Vetores de Suporte (SVM). Primordialmente, as SVM representam uma abordagem elegante baseada em teoria de aprendizado estatístico que combina princípios de maximização de margens com a flexibilidade dos métodos de kernel.

Conceitos Fundamentais

Analogamente aos classificadores lineares que discutimos anteriormente, as SVM buscam encontrar um hiperplano ótimo para separar classes. Contudo, a abordagem das SVM é distintiva pois focaliza na maximização da margem entre as classes, o que frequentemente leva a melhor generalização.

O Hiperplano Ótimo

As SVM buscam o hiperplano que maximiza a margem entre as classes mais próximas:

\(w^T x + b = 0\)

Onde w é o vetor normal ao hiperplano e b é o termo de bias. A margem é definida pelas linhas paralelas:

\(w^T x + b = \pm 1\)

Formulação Matemática

Problema de Otimização

O problema de otimização das SVM pode ser formulado como:

\(\min_{w, b} \frac{1}{2} \|w\|^2\)

Sujeito a:

\(y_i(w^T x_i + b) \geq 1 \quad \text{para } i = 1, \dots, n\)

Forma Dual e Vetores de Suporte

Através da formulação dual, obtemos:

\(\max_{\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 x_i^T x_j\)

Sujeito a:

\(\alpha_i \geq 0 \quad \text{e} \quad \sum_{i=1}^n \alpha_i y_i = 0\)

Os pontos com α_i > 0 são os vetores de suporte, que definem o hiperplano de decisão.

SVM com Margem Suave

Para dados não linearmente separáveis, introduzimos variáveis de folga (slack variables):

\(\min_{w, b, \xi} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^n \xi_i\)

Sujeito a:

\(y_i(w^T x_i + b) \geq 1 – \xi_i \quad \text{e} \quad \xi_i \geq 0\)

O parâmetro C controla o trade-off entre maximização da margem e minimização do erro de classificação.

Kernels em SVM

Similarmente à Regressão de Crista do Kernel que exploramos anteriormente, as SVM podem utilizar kernels para lidar com dados não linearmente separáveis:

  • linear: \(K(x_i, x_j) = x_i^T x_j\)
  • polynomial: \(K(x_i, x_j) = (\gamma x_i^T x_j + r)^d\)
  • rbf: \(K(x_i, x_j) = \exp(-\gamma \|x_i – x_j\|^2)\)
  • sigmoid: \(K(x_i, x_j) = \tanh(\gamma x_i^T x_j + r)\)

Implementação no scikit-learn

O scikit-learn oferece duas implementações principais de SVM:

SVC (Support Vector Classification)

Baseada na biblioteca libsvm, oferece suporte a múltiplas classes através das estratégias “one-vs-one” ou “one-vs-rest”.

LinearSVC

Implementação otimizada para kernels lineares, baseada na biblioteca liblinear, geralmente mais eficiente para datasets grandes.

Parâmetros Principais

  • C: Parâmetro de regularização (trade-off margem/erro)
  • kernel: Tipo de função kernel
  • gamma: Coeficiente para kernels RBF, polinomial e sigmoid
  • degree: Grau do kernel polinomial
  • probability: Se deve habilitar estimativas de probabilidade

Conexões com Tópicos Anteriores

Similarmente às técnicas que exploramos anteriormente, as SVM compartilham conceitos fundamentais:

  • Utilizam regularização como a Regressão Ridge
  • Aproveitam o truque do kernel como a Regressão de Crista do Kernel
  • São baseadas em produtos internos como métodos de projeção linear
  • Oferecem garantias teóricas de generalização

Vantagens e Desvantagens

Vantagens

  • Eficazes em espaços de alta dimensionalidade
  • Boa performance com dados não linearmente separáveis
  • Robustas a overfitting em configurações apropriadas
  • Base teórica sólida em teoria de aprendizado estatístico

Desvantagens

  • Computacionalmente intensivas para datasets muito grandes
  • Performance sensível à escolha de parâmetros
  • Dificuldade de interpretação com kernels não-lineares
  • Não fornecem estimativas de probabilidade diretamente

Exemplo Prático em Python

Para ilustrar a aplicação das SVM em diferentes cenários, implementemos um estudo comparativo detalhado:

Interpretação dos Resultados

Analisando os experimentos comparativos, podemos observar padrões importantes:

  • Modelos lineares performam bem em dados linearmente separáveis
  • SVM com kernel RBF são mais flexíveis para dados complexos
  • O número de vetores de suporte indica a complexidade da fronteira
  • O parâmetro C tem impacto significativo na performance

Considerações Avançadas

SVM para Problemas Multiclasse

O scikit-learn implementa duas estratégias para problemas multiclasse:

  • one-vs-rest (OvR): Um classificador por classe vs todas as outras
  • one-vs-one (OvO): Um classificador para cada par de classes

Estimativas de Probabilidade

Embora SVM sejam originalmente classificadores determinísticos, o scikit-learn oferece a opção probability=True que utiliza Platt scaling para gerar estimativas probabilísticas.

Boas Práticas

Inegavelmente, para obter os melhores resultados com SVM:

  • Sempre padronize os dados antes do treinamento
  • Use validação cruzada para tuning de hiperparâmetros
  • Comece com kernel RBF como primeira abordagem
  • Considere a complexidade computacional para datasets grandes
  • Analise os vetores de suporte para entender o modelo

Conclusão

As Máquinas de Vetores de Suporte representam uma ferramenta poderosa e versátil no arsenal de machine learning. Embora tenham sido desenvolvidas décadas atrás, continuam sendo relevantes devido à sua fundamentação teórica sólida e performance prática consistente.

Portanto, o domínio das SVM é essencial para qualquer praticante de machine learning, oferecendo uma abordagem robusta para problemas de classificação que vai desde casos linearmente separáveis até relações complexas não-lineares.

Referência

Este post explora o item 1.4. Máquinas de Vetores de Suporte da documentação do scikit-learn:

https://scikit-learn.org/0.21/modules/svm.html

Regressão de Crista do Kernel

Continuando nossa jornada pelo guia do scikit-learn, chegamos a uma técnica poderosa que combina regularização com métodos de kernel: a Regressão de Crista do Kernel. Primordialmente, esta abordagem estende os conceitos de regularização que discutimos anteriormente, incorporando a flexibilidade dos métodos de kernel para lidar com relações não-lineares nos dados.

Conceitos Fundamentais

Analogamente à Regressão de Crista tradicional que exploramos em seções anteriores, a versão com kernel mantém o princípio de regularização, mas opera em um espaço de características transformado através de funções kernel. Similarmente aos métodos de kernel que encontramos em SVM, esta técnica permite capturar padrões complexos sem explicitamente computar transformações de alta dimensionalidade.

Formulação Matemática

Problema de Otimização

A Regressão de Crista do Kernel resolve o seguinte problema de otimização:

\(\min_{\alpha} \|K\alpha – y\|^2_2 + \lambda \alpha^T K\alpha\)

Onde:

  • K é a matriz do kernel
  • α são os coeficientes no espaço do kernel
  • y é o vetor de targets
  • λ é o parâmetro de regularização

Solução Fechada

A solução pode ser expressa em forma fechada:

\(\alpha = (K + \lambda I)^{-1}y\)

As previsões para novos pontos são dadas por:

\(\hat{y} = K_{test}\alpha\)

Vantagens da Abordagem com Kernel

Conforme demonstramos em técnicas anteriores, a incorporação de kernels oferece benefícios significativos:

  • Capacidade de modelar relações não-lineares complexas
  • Operação implícita em espaços de alta dimensionalidade
  • Flexibilidade através da escolha do kernel
  • Preservação da estrutura de regularização

Kernels Suportados

O scikit-learn oferece diversos kernels pré-definidos:

  • linear: \(K(x, x’) = x^T x’\)
  • polynomial: \(K(x, x’) = (\gamma x^T x’ + r)^d\)
  • rbf: \(K(x, x’) = \exp(-\gamma \|x – x’\|^2)\)
  • sigmoid: \(K(x, x’) = \tanh(\gamma x^T x’ + r)\)

Parâmetros e Hiperparâmetros

Parâmetro de Regularização (alpha)

Controla o trade-off entre fitting dos dados e simplicidade do modelo. Analogamente ao parâmetro lambda na regressão ridge tradicional, valores maiores aumentam a regularização.

Parâmetros do Kernel

Cada kernel possui seus próprios parâmetros específicos:

  • gamma: Controla a influência de cada amostra (RBF, polynomial)
  • degree: Grau do polinômio (polynomial kernel)
  • coef0: Termo independente (polynomial, sigmoid)

Conexões com Tópicos Anteriores

Similarmente aos conceitos que exploramos em regressão regularizada e métodos de kernel:

  • Combina a regularização L2 da Regressão Ridge
  • Utiliza o truque do kernel como em SVM
  • Mantém soluções em forma fechada como na regressão linear
  • Oferece flexibilidade comparável a métodos baseados em árvores

Aplicações Práticas

Primordialmente, a Regressão de Crista do Kernel é útil em cenários como:

  • Problemas de regressão com relações não-lineares
  • Datasets com dimensionalidade moderada a alta
  • Cenários onde interpretabilidade não é crítica
  • Aplicações que beneficiam de modelos suaves

Exemplo Prático em Python

Para ilustrar a aplicação da Regressão de Crista do Kernel, implementemos um estudo comparativo detalhado:

Interpretação dos Resultados

Analisando os experimentos comparativos, podemos observar padrões importantes:

  • O KernelRidge com kernel RBF geralmente performa melhor em dados não-lineares
  • A regressão Ridge linear mantém vantagem em dados verdadeiramente lineares
  • O tuning de hiperparâmetros é crucial para o desempenho do KernelRidge
  • O custo computacional aumenta significativamente com kernels não-lineares

Considerações de Implementação

Complexidade Computacional

A Regressão de Crista do Kernel possui complexidade O(n³) para o treinamento devido à inversão da matriz do kernel. Ademais, o armazenamento da matriz do kernel requer O(n²) de memória.

Escalabilidade

Para datasets grandes, estratégias alternativas podem ser necessárias:

  • Uso de aproximações de kernel (Nyström method)
  • Amostragem para reduzir o tamanho do dataset
  • Implementações distribuídas

Conexões com o Ecossistema scikit-learn

Similarmente a outros estimadores do scikit-learn, o KernelRidge oferece:

  • Interface consistente com fit, predict, e score
  • Suporte a GridSearchCV para tuning de hiperparâmetros
  • Integração com pipelines de pré-processamento
  • Compatibilidade com métricas de avaliação padrão

Conclusão

A Regressão de Crista do Kernel representa uma extensão poderosa dos métodos de regularização linear, incorporando a flexibilidade dos kernels para lidar com relações complexas nos dados. Embora computacionalmente mais custosa que abordagens lineares, oferece capacidade de modelagem significativamente expandida.

Portanto, esta técnica é particularmente valiosa em cenários onde relações não-lineares estão presentes e onde o custo computacional é aceitável, preenchendo uma importante lacuna entre modelos lineares simples e métodos não-paramétricos complexos.

Referência

Este post explora o item 1.3. Regressão de Crista do Kernel da documentação do scikit-learn:

https://scikit-learn.org/0.21/modules/kernel_ridge.html