Menu
CoddyTech

Máquina de Vetores de Suporte (SVM)

Lição 18 de 19 do curso Introdução ao aprendizado de máquina da Coddy.

Support Vector Machine (SVM) é um algoritmo de aprendizado de máquina supervisionado poderoso e versátil, usado tanto para tarefas de classificação quanto de regressão. No entanto, é mais comumente usado em problemas de classificação. As SVMs oferecem alta precisão e apresentam bom desempenho com um espaço de características de alta dimensão, tornando-as adequadas para aplicações que variam de reconhecimento de imagem a bioinformática.

Fonte: wikipedia

O principal objetivo do algoritmo SVM é encontrar o hiperplano ideal (em um espaço bidimensional, trata-se de uma linha) que melhor separa as classes no espaço de características. O modelo SVM representa os exemplos como pontos no espaço, mapeados de tal forma que os exemplos de categorias separadas sejam divididos por uma lacuna clara que seja a mais larga possível.

 

  • Hiperplano: Esta é basicamente uma fronteira de decisão que separa as classes. Em 2D, este hiperplano é uma linha, mas em dimensões superiores, pode ser mais complexo.
  • Vetores de Suporte: Estes são os pontos de dados mais próximos do hiperplano, que são críticos na definição da posição do hiperplano. O classificador SVM é altamente influenciado por esses pontos, daí o nome Support Vector Machine.
  • Margem: É a lacuna entre duas linhas nos pontos de dados mais próximos de diferentes classes. Pode ser considerada como uma medida de separação entre as classes. Garantir que a margem seja a mais larga possível é um objetivo fundamental no treinamento de uma SVM.

Tipos de SVM:

  • SVM Linear: Quando os dados são linearmente separáveis, podemos usar uma única linha reta para separar as classes. Este cenário utiliza SVM linear.
  • SVM Não-linear: Quando os dados não são linearmente separáveis, a SVM utiliza o que é chamado de truque de kernel para transformar o espaço de entrada em um espaço de dimensão superior, onde um hiperplano pode ser usado para realizar a separação. O truque de kernel envolve a transformação dos dados em outra dimensão que possua uma margem clara entre as classes de dados. Isso permite que a SVM resolva problemas não lineares. Kernels comuns incluem:
    • Kernel Linear: Usado quando os dados são linearmente separáveis.
    • Kernel Polinomial: Transforma o espaço de características original em um espaço de características polinomial de um grau especificado.
    • Kernel Gaussiano: Útil para dados não lineares que se agrupam em grupos. Ele mapeia o espaço de características em dimensões superiores.
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

As Máquinas de Vetores de Suporte (SVMs) utilizam funções de kernel para transformar dados em um espaço de dimensão superior, onde é mais fácil classificá-los. Esse processo é conhecido como o "truque do kernel". Ele permite que as SVMs resolvam problemas de classificação e regressão não lineares de forma eficiente.

Aqui, exploraremos o kernel polinomial, que permite fronteiras curvas nos dados. Ele eleva os dados a um grau especificado d. Este kernel é particularmente útil quando a relação entre os rótulos das classes e os atributos é polinomial.
File:Svm 8 polinomial.JPG

Fonte: wikipedia

Crie uma função chamada polynomial_kernel que recebe duas listas (x, y), um grau (d) e um coeficiente (c) e retorna o kernel polinomial.

{\displaystyle K(x,y)=(x^{\mathsf {T}}y+c)^{d}} → (produto escalar de x transposto por y somado a c) elevado à potência de d.

Experimente você mesmo

import numpy as np
def polynomial_kernel(x, y, d, c):
    x_arr = np.array(x)
    y_arr = np.array(y)
    # Escreva seu código aqui

Todas as lições de Introdução ao aprendizado de máquina

Pratique por conta própria: Compilador de Python online