Máquinas de Vetores de Suporte: Estimativa de Densidade e Detecção de Novidades

Anteriormente exploramos os Support Vector Machines (SVM) para problemas supervisionados. Analogamente, o scikit-learn oferece implementações para problemas não supervisionados através do One-Class SVM, focando em estimativa de densidade e detecção de novidades.

Conceito Fundamental do One-Class SVM

Primordialmente, o One-Class SVM é uma técnica que aprende um limite de decisão para englobar os dados normais de treinamento. Similarmente aos SVM tradicionais, este método busca encontrar um hiperplano que maximize a margem em relação à origem no espaço de características.

Conforme a documentação, o OneClassSVM é particularmente útil quando temos muitos exemplos da classe “normal” e poucos ou nenhum exemplo de anomalias durante o treinamento. Decerto, esta característica o torna ideal para cenários de detecção de novidades onde as anomalias são raras ou desconhecidas.

Formulação Matemática

O objetivo do One-Class SVM pode ser expresso pela seguinte formulação:

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

Sujeito a:

\((w \cdot \phi(x_i)) \geq \rho – \xi_i, \quad \xi_i \geq 0\)

Onde:

  • w é o vetor de pesos do hiperplano
  • φ(xᵢ) representa a transformação para o espaço de características
  • ξᵢ são variáveis de folga
  • ν é o parâmetro crucial que controla a fração de outliers
  • ρ é o termo de bias

Interpretação do Parâmetro ν

Inegavelmente, o parâmetro ν merece atenção especial. Conquanto possa parecer complexo inicialmente, sua interpretação é fundamental:

  • ν representa um limite superior para a fração de outliers de treinamento
  • Simultaneamente, é um limite inferior para a fração de vetores de suporte
  • Valores típicos variam entre 0.01 e 0.5

Portanto, ao definir ν=0.1, estamos instruindo o modelo a considerar que aproximadamente 10% dos dados de treinamento podem ser outliers.

Aplicações Práticas

Atualmente, as aplicações do One-Class SVM são vastas:

  • Detecção de fraude: Identificação de transações financeiras anômalas
  • Monitoramento industrial: Detecção de falhas em equipamentos
  • Qualidade de produtos: Identificação de itens defeituosos
  • Segurança cibernética: Detecção de intrusões em redes

Exemplo Prático em Python

Ademais, vejamos uma implementação prática utilizando o scikit-learn:

Considerações Importantes

Embora o One-Class SVM seja poderoso, algumas considerações são essenciais:

  • O modelo assume que a maioria dos dados de treinamento representa comportamento “normal”
  • A escolha do kernel e dos hiperparâmetros é crítica para o desempenho
  • O escalonamento dos dados é recomendado
  • Para datasets muito grandes, a complexidade computacional pode ser limitante

Enfim, compreender a estimativa de densidade e detecção de novidades com SVM complementa nosso conhecimento sobre as capacidades versáteis desta família de algoritmos no scikit-learn.

Referência: https://scikit-learn.org/0.21/modules/svm.html#estimating-the-density-and-detecting-novelties