Suporte Vector Machines usando Python

Arth Tyagi Segue 15 de jul · 4 min ler

Neste post, estarei exibindo Support Vector Machines (ou SVM abreviado) usando Python.

Eu encorajaria os leitores do blog a ter um notebook (virtual ou real) pronto e fazer anotações dos pontos que eu faço aqui. Também recomendarei que você crie um Google Colaboratory ou o bom e antigo Jupyter Notebook hospedado local ou o Jupyter Lab com um notebook Python3 aberto. Você deve tentar escrever o código com a ajuda do código que eu vou inscrever neste post.

Então, o que basicamente é uma máquina de vetores de suporte?

O SVM é um algoritmo de aprendizado de máquina supervisionado que é uma representação dos exemplos como pontos no espaço, mapeados de forma que os exemplos das categorias separadas sejam divididos por um espaço livre tão amplo quanto possível. Novos exemplos são então mapeados no mesmo espaço e previstos para pertencer a uma categoria com base em qual lado da lacuna eles caem.

Mas o problema é que, às vezes, o conjunto de dados é absolutamente inseparável de forma linear, então usamos o kernelling para transformar o conjunto de dados linearmente inseparável em um conjunto de dados linearmente separável.

Agora, o que o Kernelling significa tecnicamente no SVM?

O mapeamento de dados em um espaço dimensional superior (geralmente adicionando um terceiro eixo para os dados), de tal forma que pode alterar um conjunto de dados linearmente inseparável para um conjunto de dados linearmente separável é chamado Kernelling.

Tipos de Kernelling:

– Linear

– polinomial

– RBF (função de base radial)

Usando o RBF para encontrar o hiperplano

Para simplificar, eu estaria lidando com o Kernelling usando RBF (padrão) nesta postagem do blog.

<script src = ” https://gist.github.com/arthtyagi/34bf76b0e3713553e190686bea34b469.js "> </ script>

Parâmetros de uma função SVM usando o Kernel RBF:

Classifique Usando um Kernel RBF

A função de base radial é um kernel comumente usado no SVC:

FUNÇÃO RBF

onde || xx ? || ² é a distância euclidiana ao quadrado entre dois pontos de dados entre x e x ?. Se isso não faz sentido, o livro de Sebastian tem uma descrição completa. No entanto, para este tutorial, é importante apenas saber que um classificador SVC usando um kernel RBF possui dois parâmetros: gamma e C

Gama

gamma é um parâmetro do kernel RBF e pode ser considerado como o 'spread' do kernel e, portanto, a região de decisão. Quando o gamma é baixo, a 'curva' do limite de decisão é muito baixa e, portanto, a região de decisão é muito ampla. Quando o gamma é alto, a "curva" do limite de decisão é alta, o que cria ilhas de limites de decisão em torno dos pontos de dados. Vamos ver isso muito claramente abaixo.

C

C é um parâmetro do aluno de SVC e é a penalidade por classificar erroneamente um ponto de dados. Quando C é pequeno, o classificador está bem com pontos de dados classificados incorretamente (alto viés, baixa variância). Quando C é grande, o classificador é fortemente penalizado para dados classificados erroneamente e, portanto, inclina-se para trás, evitando quaisquer pontos de dados classificados incorretamente (baixa polarização, alta variação).

<script src = ” https://gist.github.com/arthtyagi/dbfe3caaa90b1c3a470bea691ae2bd76.js "> </ script>

(gama = 0,1, C = 0,1)

Como as mudanças nesses parâmetros afetam o limite de decisão?

GAMMA: Se o valor de gama for menor, o limite de decisão não é curvilíneo, é de fato um grande arco de varredura.

À medida que o valor do 'gama' aumenta, você pode perceber como o limite de decisão está começando a melhorar a cobertura da disseminação dos dados.

(gama = 10, C = 1)

C – O PARÂMETRO DA PENALIDADE

Quanto menor o valor do parâmetro C, mais tolerante é aos pontos de dados classificados incorretamente e há claramente muitos pontos vermelhos e pontos azuis na região vermelha.

À medida que o valor do C aumenta, o classificador torna-se menos tolerante a pontos de dados classificados incorretamente e, portanto, o limite de decisão se torna mais grave.

(gama = 0,1, C = 10)

Bem, isso foi para este post no blog, eu sugiro que você faça o notebook de Jake Vanderplas disponível no Google Collaboratory.

Link para o bloco de notas: Google Collaboratory for SVM.

Estou pronto com este post por enquanto, mas vou escrever um tutorial sobre Clustering, espero que mais detalhado. Por enquanto, era isso. Você pode conferir meus outros posts sobre Data Science também.

Conecte-se comigo:

Twitter

Instagram

Quora

Github