Support Vector Machine (SVM)
Support Vector Machine (SVM) é um algoritmo supervisionado usado para classificação e regressão, cujo objetivo principal é encontrar o hiperplano que melhor separa os dados. Esse “melhor” hiperplano é aquele que maximiza a margem, ou seja, a distância entre o hiperplano e os pontos mais próximos de cada classe — os famosos support vectors.
Intuição do SVM
Imagine duas classes de pontos num plano 2D. Existem infinitas linhas que separam essas classes, mas apenas uma maximiza a distância até os pontos mais próximos. Essa linha é o hiperplano ótimo.
-
Maior margem = melhor generalização
-
Os únicos pontos que importam para definir o hiperplano são os support vectors
-
O SVM é robusto contra overfitting em muitos casos
Conceitos Fundamentais
-
Hiperplano: A fronteira de decisão que separa as classes.
- Em 2D → uma linha
- Em 3D → um plano
- Em n-dimensões → hiperplano
-
Margem: A distância entre o hiperplano e os support vectors. O SVM busca maximizar essa margem.
-
Support Vectors: Pontos críticos que ficam na borda da margem. Eles são responsáveis por definir o hiperplano ótimo.
-
SVM Linear vs. Não Linear
- Linear: Funciona quando os dados são separáveis por uma linha (2D) ou plano (nD).
- Não Linear: Quando os dados não são separáveis linearmente, usamos kernels.
Kernel Trick
Um dos pilares do SVM é a kernel trick, que permite projetar dados não lineares em um espaço de maior dimensão sem precisar calcular explicitamente essa transformação.
| Kernel | Quando usar |
|---|---|
| Linear | Dados linearmente separáveis, muito rápido e interpretável |
| Polinomial | Relações não lineares suaves |
| RBF (Gaussian) | Kernel mais usado; captura relações complexas |
| Sigmoid | Similar a redes neurais, menos comum |
Parâmetros Importantes
-
C (Regularização): Controla o trade-off entre:
- Margem larga
- Erros aceitáveis na classificação
- C alto → modelo rígido (menos margem)
- C baixo → modelo mais flexível (margem maior)
-
Gamma (γ — usado no kernel RBF): Define o alcance da influência de um ponto.
- γ alto → fronteira complexa (risco de overfitting)
- γ baixo → fronteira suave
SVM para Regressão (SVR)
A versão para regressão busca aproximar uma função dentro de um intervalo de tolerância ε. Objetivo: encontrar uma função o mais plana possível, penalizando desvios acima de ε.
Vantagens
-
Funciona muito bem com margens claras entre classes
-
Eficiente em alta dimensionalidade
-
Robusto ao overfitting quando bem ajustado
-
Kernel trick permite modelar relações complexas
Desvantagens
-
Pode ser muito lento em datasets grandes
-
Alta sensibilidade à escolha de hiperparâmetros
-
Difícil interpretar fronteiras não lineares
-
Requer normalização dos dados
Quando usar SVM?
Use SVM quando:
-
O dataset não é gigantesco
-
Você quer alta acurácia
-
Há separabilidade clara (linear ou não linear)
-
Outliers são controlados
Evite SVM quando:
-
O dataset tem milhões de linhas
-
Você precisa explicar facilmente o modelo
Pipeline típico com SVM (em qualquer linguagem)
-
Normalizar/Padronizar os dados
-
Escolher kernel
-
Ajustar hiperparâmetros (C, gamma, degree, etc.)
-
Treinar o modelo
-
Avaliar com validação cruzada
-
Interpretar (se usado kernel linear)