SVM em Sklearn

SVM em Sklearn
Máquinas de vetor de suporte (SVMS, também conhecidas como redes de vetor de suporte) no aprendizado de máquina são modelos de aprendizado supervisionados com algoritmos correspondentes que avaliam dados para regressão e classificação. O SVMS, baseado em estruturas de aprendizado estatístico ou na teoria do VC divulgada por Chervenenkis e Vapnik, estão entre as técnicas de previsão mais confiáveis ​​(1974). A implementação do SVMS em Sklearn, bem como seus benefícios e desvantagens, será abordada neste artigo.

O que é SVM?

SVM ou Máquina de Vector de Suporte é uma técnica de aprendizado de máquina supervisionada para analisar dados para regressão e classificação. O objetivo do algoritmo SVM é definir o limite ou a linha de decisão ideal que pode categorizar o espaço n-dimensional, permitindo-nos classificar novos pontos de dados no futuro rapidamente. Este limite de decisão é conhecido como hiperplano. Isso permite que seu modelo classifique um conjunto de dados rotulado e categorize a entrada não marcada. É um dos algoritmos de aprendizado supervisionado mais populares e é frequentemente usado para classificar imagens usando os recursos recuperados por uma profunda rede neural convolucional.

Suponha que você tenha alguns pontos linearmente separáveis ​​em seu trabalho que são de diferentes tipos. O SVM localizará uma linha reta que, tanto quanto é razoavelmente possível, divide esses pontos em duas categorias. Imagine dois pares de pontos deitados em um avião. Os primeiros são vermelhos, enquanto o resto é azul. Para otimizar sua distância de ambas as classes de pontos, uma máquina de vetor de suporte procura uma linha que divide os pontos vermelhos dos azuis. Isso é conhecido como o maior margem de diferença. É importante medir a distância da linha até os pontos nas fronteiras dos dois pontos para determinar a margem com a maior diferença. Eles se referem a eles como vetores de suporte. Os pontos devem ser separáveis ​​por uma linha, pois devem ser separados por um. O termo para isso é separabilidade linear. O truque do kernel é uma adição crucial ao algoritmo de máquina de vetor de suporte para superar essa restrição. Isso move os dados para um espaço superior dimensional e usa uma função linear para segregá-los lá. Através do chamado kernel, a transformação é realizada. Isso só é concebível porque o cálculo da função linear para separar os dados depende do produto DOT dos vetores de suporte. Simplificando: para evitar o uso de uma linha para dividir o vermelho dos pontos azuis, misture -os no avião.

Levante os vermelhos, deixando os azuis para trás. Agora é óbvio que você pode separar os pontos usando um avião. A técnica do kernel alcança isso. Altera os dados em uma dimensão mais alta para presumivelmente ser linearmente separável. O levantamento adicionou uma terceira dimensão (três dimensões), que separou os pontos por uma linha em três dimensões, um plano, enquanto os pontos no chão (duas dimensões) não foram.

Vantagens do SVM

  1. Em espaços de alta dimensão, é mais eficaz usar sua memória bem o suficiente.
  2. Adequado para classes com margens distintas de distinção. Além disso, quando os tamanhos de amostra excedem as dimensões gerais.

Desvantagens do SVM

  1. Quando as características totais de cada ponto de dados são maiores que as amostras de dados de treinamento, ele não opera bem. Além disso, sua técnica não é apropriada para conjuntos de dados maiores.
  2. Um conjunto de dados começa a atrasar quando as classes de destino se sobrepõem, ou mais ruído está presente. Além disso, a classificação produzida pelo classificador de vetor de suporte carece de uma justificativa probabilística.

Implementação de SVM em Sklearn

Importação de bibliotecas
de Sklearn.Os conjuntos de dados importam make_classification
De Sklearn Import SVM
Criando conjunto de dados
X, y = make_classification (random_state = 42)
Print ('Dados do trem é', x)
print ('Dados de teste é', y)

Saída

Os dados do trem são [-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[1.61371127 0.65992405 -0.15005559… 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425… 1.18901653 -0.55547712
-0.63738713]
..
[-0.03955515 -1.60499282 0.22213377… -0.30917212 -0.46227529
-0.43449623]
[1.08589557 1.2031659 -0.6095122… -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976… 0.99204235 0.32169781
-0.66809045]]
Os dados de teste são [0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0
0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0]
Criando modelo SVM
Model = SVM.Svc ()
modelo.ajuste (x, y)
impressão ('vetores de suporte são', modelo.support_vectors_)
Impressão ('Os índices para vetores de suporte são', modelo.apoiar_)

Saída

Os vetores de suporte são [-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[0.17989415 -0.22210005 0.10537551… -0.96834445 -0.22463315
0.5500521]
[-1.22576566 0.80742726 0.65232288… 0.88365994 -0.03850847
-0.1726273]
..
[0.2005692 -0.24878048 -1.07213901… 0.08614388 -0.36702784
-0.82759022]
[-0.6115178 -1.22532865 -0.85835778… 0.18483612 2.63238206
0.4933179]
[-0.22096417 -0.54561186 -0.57117899… 0.64084286 -0.28110029
1.79768653]]
Os índices para vetores de suporte são [0 4 5 6 8 11 12 13 18 21 22 23 24 27 29 30 31 32 33 34 36 47 52 54
58 67 73 78 79 81 83 89 92 95 2 3 7 9 10 14 25 35 38 39 40 42 45 49
51 57 59 60 61 62 63 68 72 74 75 76 80 85 86 88 91 93 94 96]

Conclusão

Passamos pela explicação das máquinas vetoriais de suporte (SVM) junto com seus profissionais, contras e implementação. O SVM atrai hiperplanos entre os pontos com a maior margem e pode ser usado para casos de classificação e regressão. Vimos como a Sklearn nos fornece uma maneira fácil de implementar o SVM e obter detalhes sobre os vetores de suporte.