Support Vector Machine (SVM) em aprendizado de máquina

Publicados: 2023-01-04

O Support Vector Machine está entre os algoritmos de aprendizado de máquina mais populares. É eficiente e pode treinar em conjuntos de dados limitados. Mas o que é isso?

O que é uma Máquina de Vetores de Suporte (SVM)?

A máquina de vetores de suporte é um algoritmo de aprendizado de máquina que usa aprendizado supervisionado para criar um modelo para classificação binária. Isso é um bocado. Este artigo explicará o SVM e como ele se relaciona com o processamento de linguagem natural. Mas primeiro, vamos analisar como funciona uma máquina de vetores de suporte.

Como funciona o SVM?

Considere um problema de classificação simples em que temos dados com dois recursos, x e y, e uma saída – uma classificação que é vermelha ou azul. Podemos plotar um conjunto de dados imaginário que se parece com isso:

desenho sem título

Dado dados como este, a tarefa seria criar um limite de decisão. Um limite de decisão é uma linha que separa as duas classes de nossos pontos de dados. Este é o mesmo conjunto de dados, mas com um limite de decisão:

Sem título-desenho-1

Com esse limite de decisão, podemos fazer previsões para qual classe um ponto de dados pertence, dado onde ele se encontra em relação ao limite de decisão. O algoritmo Support Vector Machine cria o melhor limite de decisão que será usado para classificar os pontos.

Mas o que queremos dizer com limite de melhor decisão?

Pode-se argumentar que o melhor limite de decisão é aquele que maximiza sua distância de qualquer um dos vetores de suporte. Os vetores de suporte são pontos de dados de qualquer classe mais próximos da classe oposta. Esses pontos de dados representam o maior risco de classificação incorreta devido à sua proximidade com a outra classe.

Desenho-2 sem título

O treinamento de uma máquina de vetores de suporte, portanto, envolve tentar encontrar uma linha que maximize a margem entre os vetores de suporte.

Também é importante observar que, como o limite de decisão está posicionado em relação aos vetores de suporte, eles são os únicos determinantes da posição do limite de decisão. Os outros pontos de dados são, portanto, redundantes. E assim, o treinamento requer apenas os vetores de suporte.

Neste exemplo, o limite de decisão formado é uma linha reta. Isso ocorre apenas porque o conjunto de dados tem apenas dois recursos. Quando o conjunto de dados tem três recursos, o limite de decisão formado é um plano em vez de uma linha. E quando possui quatro ou mais recursos, o limite de decisão é conhecido como hiperplano.

Dados não linearmente separáveis

O exemplo acima considerou dados muito simples que, quando plotados, podem ser separados por um limite de decisão linear. Considere um caso diferente em que os dados são plotados da seguinte maneira:

Desenho-4 sem título

Nesse caso, é impossível separar os dados usando uma linha. Mas podemos criar outro recurso, z. E esta característica pode ser definida pela equação: z = x^2 + y^2. Podemos adicionar z como um terceiro eixo ao plano para torná-lo tridimensional.

Quando olhamos para o gráfico 3D de um ângulo tal que o eixo x é horizontal enquanto o eixo z é vertical, esta é a visão que obtemos algo como isto:

Sem título-desenho-5

O valor z representa a distância que um ponto está da origem em relação aos outros pontos no antigo plano XY. Como resultado, os pontos azuis mais próximos da origem têm valores z baixos.

Embora os pontos vermelhos mais distantes da origem tenham valores z mais altos, plotá-los em relação aos seus valores z nos dá uma classificação clara que pode ser demarcada por um limite de decisão linear, conforme ilustrado.

Esta é uma ideia poderosa que é usada em Support Vector Machines. De forma mais geral, é a ideia de mapear as dimensões em um número maior de dimensões para que os pontos de dados possam ser separados por um limite linear. As funções responsáveis ​​por isso são as funções do kernel. Existem muitas funções do kernel, como sigmóide, linear, não linear e RBF.

Para tornar o mapeamento desses recursos mais eficiente, o SVM usa um truque do kernel.

SVM em aprendizado de máquina

O Support Vector Machine é um dos muitos algoritmos usados ​​no aprendizado de máquina ao lado de outros populares, como Árvores de Decisão e Redes Neurais. É favorecido porque funciona bem com menos dados do que outros algoritmos. É comumente usado para fazer o seguinte:

  • Classificação de texto : classificação de dados de texto, como comentários e revisões em uma ou mais categorias
  • Detecção de rosto : analisando imagens para detectar rostos para fazer coisas como adicionar filtros para realidade aumentada
  • Classificação de imagens : As máquinas de vetores de suporte podem classificar imagens com eficiência em comparação com outras abordagens.

O problema de classificação de texto

A internet está cheia de muitos e muitos dados textuais. No entanto, muitos desses dados não são estruturados e não rotulados. Para melhor utilizar esses dados de texto e compreendê-los melhor, há a necessidade de classificação. Exemplos de momentos em que o texto é classificado incluem:

  • Quando os tweets são categorizados em tópicos para que as pessoas possam seguir os tópicos que desejam
  • Quando um e-mail é categorizado como Social, Promoções ou Spam
  • Quando comentários são classificados como ofensivos ou obscenos em fóruns públicos

Como o SVM funciona com classificação de linguagem natural

O Support Vector Machine é usado para classificar o texto em texto que pertence a um tópico específico e texto que não pertence ao tópico. Isso é obtido convertendo e representando primeiro os dados de texto em um conjunto de dados com vários recursos.

Uma maneira de fazer isso é criar recursos para cada palavra no conjunto de dados. Então, para cada ponto de dados de texto, você registra o número de vezes que cada palavra ocorre. Portanto, suponha que palavras únicas estejam ocorrendo no conjunto de dados; você terá recursos no conjunto de dados.

Além disso, você fornecerá classificações para esses pontos de dados. Embora essas classificações sejam rotuladas por texto, a maioria das implementações de SVM espera rótulos numéricos.

Portanto, você terá que converter esses rótulos em números antes do treinamento. Uma vez que o conjunto de dados foi preparado, usando esses recursos como coordenadas, você pode usar um modelo SVM para classificar o texto.

Criando um SVM em Python

Para criar uma máquina de vetor de suporte (SVM) em Python, você pode usar a classe SVC da biblioteca sklearn.svm . Aqui está um exemplo de como você pode usar a classe SVC para construir um modelo SVM em Python:

 from sklearn.svm import SVC # Load the dataset X = ... y = ... # Split the data into training and test sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=19) # Create an SVM model model = SVC(kernel='linear') # Train the model on the training data model.fit(X_train, y_train) # Evaluate the model on the test data accuracy = model.score(X_test, y_test) print("Accuracy: ", accuracy)

Neste exemplo, primeiro importamos a classe SVC da biblioteca sklearn.svm . Em seguida, carregamos o conjunto de dados e o dividimos em conjuntos de treinamento e teste.

Em seguida, criamos um modelo SVM instanciando um objeto SVC e especificando o parâmetro do kernel como 'linear'. Em seguida, treinamos o modelo nos dados de treinamento usando o método de fit e avaliamos o modelo nos dados de teste usando o método de score . O método score retorna a precisão do modelo, que imprimimos no console.

Você também pode especificar outros parâmetros para o objeto SVC , como o parâmetro C que controla a intensidade da regularização e o parâmetro gamma , que controla o coeficiente do kernel para determinados kernels.

Benefícios do SVM

Aqui está uma lista de alguns benefícios do uso de máquinas de vetores de suporte (SVMs):

  • Eficiente : SVMs são geralmente eficientes para treinar, especialmente quando o número de amostras é grande.
  • Robusto ao Ruído : SVMs são relativamente robustos ao ruído nos dados de treinamento enquanto tentam encontrar o classificador de margem máxima, que é menos sensível ao ruído do que outros classificadores.
  • Memória eficiente: os SVMs exigem apenas que um subconjunto dos dados de treinamento esteja na memória a qualquer momento, tornando-os mais eficientes em termos de memória do que outros algoritmos.
  • Eficaz em espaços de alta dimensão: os SVMs ainda podem ter um bom desempenho mesmo quando o número de recursos excede o número de amostras.
  • Versatilidade : SVMs podem ser usados ​​para tarefas de classificação e regressão e podem lidar com vários tipos de dados, incluindo dados lineares e não lineares.

Agora, vamos explorar alguns dos melhores recursos para aprender Support Vector Machine (SVM).

Recursos de aprendizagem

Uma introdução às máquinas de vetores de suporte

Este livro sobre Introdução ao Support Vector Machines apresenta de forma abrangente e gradual os métodos de aprendizado baseados em kernel.

Visualização produtos Avaliação Preço
Uma introdução para máquinas vetoriais de suporte e outros métodos de aprendizado baseados em kernel Uma introdução para máquinas vetoriais de suporte e outros métodos de aprendizado baseados em kernel Ainda não há avaliações $ 75,00

Ele fornece uma base sólida na teoria das máquinas de vetores de suporte.

Aplicações de máquinas de vetores de suporte

Enquanto o primeiro livro enfocou a teoria de Support Vector Machines, este livro sobre Aplicações de Support Vector Machines enfoca suas aplicações práticas.

Visualização produtos Avaliação Preço
Aplicações de máquinas de vetores de suporte Aplicações de máquinas de vetores de suporte $ 15,52

Ele analisa como os SVMs são usados ​​no processamento de imagens, detecção de padrões e visão computacional.

Support Vector Machines (Ciência da Informação e Estatística)

O objetivo deste livro sobre Support Vector Machines (Ciência da Informação e Estatística) é fornecer uma visão geral dos princípios por trás da eficácia das Support Vector Machines (SVMs) em várias aplicações.

Visualização produtos Avaliação Preço
Support Vector Machines (Ciência da Informação e Estatística) Support Vector Machines (Ciência da Informação e Estatística) $ 167,36

Os autores destacam vários fatores que contribuem para o sucesso dos SVMs, incluindo sua capacidade de funcionar bem com um número limitado de parâmetros ajustáveis, sua resistência a vários tipos de erros e anomalias e seu desempenho computacional eficiente em comparação com outros métodos.

Aprendendo com Kernels

“Aprendendo com Kernels” é um livro que apresenta aos leitores o suporte a máquinas vetoriais (SVMs) e técnicas de kernel relacionadas.

Visualização produtos Avaliação Preço
Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond (Adaptive Computation and Machine Learning series) Aprendendo com Kernels: Máquinas de Vetores de Suporte, Regularização, Otimização e Além (Adaptável… $ 80,00

Ele foi projetado para fornecer aos leitores uma compreensão básica da matemática e o conhecimento necessário para começar a usar algoritmos de kernel no aprendizado de máquina. O livro visa fornecer uma introdução completa, mas acessível, aos SVMs e aos métodos do kernel.

Dê suporte a máquinas vetoriais com o Sci-kit Learn

Este curso online Support Vector Machines with Sci-kit Learn da rede de projetos Coursera ensina como implementar um modelo SVM usando a popular biblioteca de aprendizado de máquina Sci-Kit Learn.

Dê suporte a máquinas vetoriais com o Sci-kit Learn

Além disso, você aprenderá a teoria por trás dos SVMs e determinará seus pontos fortes e limitações. O curso é de nível iniciante e requer cerca de 2,5 horas.

Suporte a máquinas vetoriais em Python: conceitos e código

Este curso online pago em Support Vector Machines em Python da Udemy tem até 6 horas de instrução em vídeo e vem com uma certificação.

Suporte a máquinas vetoriais em Python: conceitos e código

Abrange SVMs e como eles podem ser implementados de forma sólida em Python. Além disso, abrange aplicações de negócios de Support Vector Machines.

Aprendizado de máquina e IA: Suporte a máquinas vetoriais em Python

Neste curso sobre Machine Learning e IA, você aprenderá como usar máquinas de vetores de suporte (SVMs) para várias aplicações práticas, incluindo reconhecimento de imagem, detecção de spam, diagnóstico médico e análise de regressão.

Aprendizado de máquina e IA: Suporte a máquinas vetoriais em Python

Você usará a linguagem de programação Python para implementar modelos de ML para esses aplicativos.

Palavras Finais

Neste artigo, aprendemos brevemente sobre a teoria por trás das Support Vector Machines. Aprendemos sobre sua aplicação em Machine Learning e Natural Language Processing.

Também vimos como é sua implementação usando scikit-learn . Além disso, falamos sobre as aplicações práticas e os benefícios das Support Vector Machines.

Embora este artigo seja apenas uma introdução, os recursos adicionais recomendam entrar em mais detalhes, explicando mais sobre Support Vector Machines. Por serem versáteis e eficientes, vale a pena entender os SVMs para crescer como cientista de dados e engenheiro de ML.

A seguir, você pode conferir os principais modelos de aprendizado de máquina.