O que são máquinas de vetores de suporte (SVM)?

As máquinas de vetores de suporte, também conhecidas como support vector machines (sigla SVM) consistem em um algoritmo de machine learning utilizado para resolver problemas de classificação e de regressão a partir de vetores que separam os dados em duas partes.

Imagine que existam dados distribuídos em um plano bidimensional x, y de tal forma que duas classes possam ser identificadas e separadas por meio de uma reta (problema conhecido como “linearmente separável”). Ao invés de criar uma reta para separar os dados como no algoritmo de regressão linear, ou ainda criar várias retas como no algoritmo de árvores de decisão, o SVM calcula a projeção do vetor de cada um dos dados em relação ao vetor ortogonal à reta que melhor separa os dados. Se essa projeção for maior ou igual a determinado valor, os dados são classificados como pertencendo à classe 0 ou 1, supondo um problema de duas classes. No caso da figura abaixo, a reta wx – b = 0 representa a reta em questão:

separacao dados svm

Repare que o tamanho da distância entre os dois vetores de suporte, ou seja, as duas retas localizadas nas fronteiras dos dados de cada uma das classes equivale a 2/|w|. O objetivo do algoritmo de SVM é maximizar a distância 2/|w| ao mesmo tempo em que soluciona a equação y(wx + b) – 1 = 0. Essa equação possui duas variáveis (w e b) e precisa ser resolvida sob a condição da equação que maximiza a distância da fronteira.

Esse problema pode ser resolvido com o auxílio dos multiplicadores de Lagrange. Na prática, o algoritmo de SVM consegue fazer ótimas classificações lineares, mas muitos problemas do mundo real não são linearmente separáveis. Para tanto, foi desenvolvido o método chamado de truque de Kernel, que consiste na transformação do conjunto de dados para outra dimensão a fim de separar os dados nessa outra dimensão e retornar posteriormente para a dimensão anterior com os dados já separados.

exemplo truque de kernel
Transformação de Kernel

Alguns algoritmos que já vêm implementados em linguagem R e Python do truque de Kernel são linear, poly, RBF e sigmoid.

De acordo com o blog 2 Engenheiros, o SVM também utiliza como parâmetro uma constante C conhecido como parâmetro de penalização. Em um artigo explicativo sobre máquinas de vetores de suporte, o blog 2 Engenheiros traz um tutorial mostrando como classificar os dados com SVM e uma aplicação em linguagem R para esse algoritmo, utilizando o pacote e1071.

Após a popularização das redes neurais artificiais e redes neurais profundas, o SVM perdeu um pouco sua utilização frente a essas técnicas mais poderosas, porém continua sendo uma das ferramentas mais importantes no âmbito do aprendizado de máquina e da inteligência artificial.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *