toco O que são máquinas de vetores de suporte? - Unite.AI
Entre em contato
Masterclass de IA:

AI 101

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

mm
Atualização do on

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

Máquinas de vetores de suporte são um tipo de classificador de aprendizado de máquina, sem dúvida um dos tipos mais populares de classificadores. Máquinas de vetores de suporte são especialmente úteis para tarefas de previsão numérica, classificação e reconhecimento de padrões.

As máquinas de vetores de suporte operam desenhando limites de decisão entre pontos de dados, visando o limite de decisão que melhor separa os pontos de dados em classes (ou é o mais generalizável). O objetivo ao usar uma máquina de vetores de suporte é que o limite de decisão entre os pontos seja o maior possível, de modo que a distância entre qualquer ponto de dados e a linha de limite seja maximizada. Essa é uma explicação rápida de como máquinas de vetor de suporte (SVMs) funcionam, mas vamos dedicar algum tempo para nos aprofundarmos em como os SVMs operam e compreender a lógica por trás de sua operação.

Meta de máquinas de vetores de suporte

Imagine um gráfico com vários pontos de dados, com base em recursos especificados pelos eixos X e Y. Os pontos de dados no gráfico podem ser divididos livremente em dois clusters diferentes, e o cluster ao qual um ponto de dados pertence indica a classe do ponto de dados. Agora suponha que queremos traçar uma linha no gráfico que separa as duas classes uma da outra, com todos os pontos de dados em uma classe encontrados em um lado da linha e todos os pontos de dados pertencentes a outra classe encontrados no outro lado da linha. Esta linha de separação é conhecida como um hiperplano.

Você pode pensar em uma máquina de vetores de suporte como a criação de “estradas” por toda a cidade, separando a cidade em distritos de cada lado da estrada. Todos os edifícios (pontos de dados) encontrados em um lado da estrada pertencem a um distrito.

O objetivo de uma máquina de vetores de suporte não é apenas desenhar hiperplanos e dividir pontos de dados, mas também desenhar o hiperplano que separa os pontos de dados com a maior margem ou com o maior espaço entre a linha divisória e qualquer ponto de dados. Voltando à metáfora das “estradas”, se um urbanista desenha planos para uma via expressa, ele não quer que a via expressa fique muito perto de casas ou outros edifícios. Quanto mais margem entre a rodovia e os prédios de cada lado, melhor. Quanto maior essa margem, mais “confiante” o classificador pode estar sobre suas previsões. No caso da classificação binária, desenhar o hiperplano correto significa escolher um hiperplano que esteja exatamente no meio das duas classes diferentes. Se o limite/hiperplano de decisão estiver mais distante de uma classe, estará mais próximo de outra. Portanto, o hiperplano deve equilibrar a margem entre as duas classes diferentes.

Calculando o Hiperplano Separador

Então, como uma máquina de vetores de suporte determina o melhor hiperplano/limite de decisão de separação? Isso é feito calculando possíveis hiperplanos usando uma fórmula matemática. Não abordaremos a fórmula para calcular hiperplanos em detalhes extremos, mas a linha é calculada com a famosa fórmula de inclinação/linha:

Y = machado + b

Enquanto isso, as linhas são feitas de pontos, o que significa que qualquer hiperplano pode ser descrito como: o conjunto de pontos que correm paralelos ao hiperplano proposto, conforme determinado pelos pesos do modelo vezes o conjunto de recursos modificados por um deslocamento/viés especificado (“d”).

SVMs desenham muitos hiperplanos. Por exemplo, a linha de fronteira é um hiperplano, mas os pontos de dados que o classificador considera também estão em hiperplanos. Os valores para x são determinados com base nos recursos do conjunto de dados. Por exemplo, se você tivesse um conjunto de dados com as alturas e pesos de muitas pessoas, os recursos de “altura” e “peso” seriam os recursos usados ​​para calcular o “X”. As margens entre o hiperplano proposto e os vários “vetores de suporte” (pontos de dados) encontrados em ambos os lados do hiperplano divisor são calculadas com a seguinte fórmula:

W * X – b

Embora você possa ler mais sobre a matemática por trás dos SVMs, se estiver procurando por uma compreensão mais intuitiva deles, saiba que o objetivo é maximizar a distância entre o hiperplano/linha limite de separação proposto e os outros hiperplanos que correm paralelos a ele ( e no qual os pontos de dados são encontrados).

Foto: ZackWeinberg via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG).svg)

Classificação multiclasse

O processo descrito até agora se aplica a tarefas de classificação binária. No entanto, os classificadores SVM também podem ser usados ​​para tarefas de classificação não binárias. Ao fazer a classificação SVM em um conjunto de dados com três ou mais classes, mais linhas de limite são usadas. Por exemplo, se uma tarefa de classificação tiver três classes em vez de duas, duas linhas divisórias serão usadas para dividir os pontos de dados em classes e a região que compreende uma única classe ficará entre duas linhas divisórias em vez de uma. Em vez de apenas calcular a distância entre apenas duas classes e um limite de decisão, o classificador deve considerar agora as margens entre os limites de decisão e as múltiplas classes dentro do conjunto de dados.

Separações não lineares

O processo descrito acima se aplica a casos em que os dados são linearmente separáveis. Observe que, na realidade, os conjuntos de dados quase nunca são completamente separáveis ​​linearmente, o que significa que, ao usar um classificador SVM, você frequentemente precisará usar duas técnicas diferentes: margem suave e truques de kernel. Considere uma situação em que os pontos de dados de diferentes classes são misturados, com algumas instâncias pertencentes a uma classe no “cluster” de outra classe. Como você poderia ter o classificador lidando com essas instâncias?

Uma tática que pode ser usada para lidar com conjuntos de dados não linearmente separáveis ​​é a aplicação de um classificador SVM de “margem flexível”. Um classificador de margem flexível opera aceitando alguns pontos de dados mal classificados. Ele tentará traçar uma linha que melhor separe os clusters de pontos de dados uns dos outros, pois eles contêm a maioria das instâncias pertencentes às suas respectivas classes. O classificador SVM de margem suave tenta criar uma linha divisória que equilibre as duas demandas do classificador: precisão e margem. Ele tentará minimizar o erro de classificação e, ao mesmo tempo, maximizar a margem.

A tolerância de erro do SVM pode ser ajustada através da manipulação de um hiperparâmetro denominado “C”. Os controles de valor C quantos vetores de suporte o classificador considera ao traçar limites de decisão. O valor C é uma penalidade aplicada a erros de classificação, o que significa que quanto maior o valor C, menos vetores de suporte o classificador leva em consideração e menor a margem.

O kernel engana os dados e os transforma de maneira não linear. Foto: Shiyu Ju via Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

O Kernel Trick opera aplicando transformações não lineares aos recursos no conjunto de dados. O Kernel Trick pega os recursos existentes no conjunto de dados e cria novos recursos por meio da aplicação de funções matemáticas não lineares. O que resulta da aplicação dessas transformações não lineares é um limite de decisão não linear. Como o classificador SVM não está mais restrito a desenhar limites de decisão lineares, ele pode começar a desenhar limites de decisão curvos que encapsulam melhor a verdadeira distribuição dos vetores de suporte e minimizam erros de classificação. Dois dos kernels não lineares SVM mais populares são Radial Basis Function e Polynomial. A função polinomial cria combinações polinomiais de todos os recursos existentes, enquanto a Função de Base Radial gera novos recursos medindo a distância entre um ponto/pontos centrais a todos os outros pontos.

Blogueiro e programador com especialidades em Machine Learning e Aprendizagem profunda tópicos. Daniel espera ajudar outras pessoas a usar o poder da IA ​​para o bem social.