Como funciona uma máquina de vetor de suporte (SVM)?


108

Como é que uma máquina de suporte vetorial (SVM) trabalho, eo que o diferencia de outros classificadores lineares, como o Perceptron Linear , Linear Análise discriminante , ou regressão logística ? *

(* Estou pensando em termos das motivações subjacentes ao algoritmo, estratégias de otimização, recursos de generalização e complexidade do tempo de execução )



Respostas:


126

As máquinas de vetores de suporte se concentram apenas nos pontos mais difíceis de distinguir, enquanto outros classificadores prestam atenção a todos os pontos.

A intuição por trás da abordagem da máquina de vetores de suporte é que, se um classificador for bom nas comparações mais desafiadoras (os pontos em B e A mais próximos um do outro na Figura 2), o classificador será ainda melhor nas comparações fáceis ( pontos de comparação em B e A que estão distantes um do outro).

Perceptrons e outros classificadores:

Perceptrons são construídos tomando um ponto de cada vez e ajustando a linha divisória de acordo. Assim que todos os pontos são separados, o algoritmo perceptron para. Mas poderia parar em qualquer lugar. A Figura 1 mostra que existem várias linhas divisórias que separam os dados. O critério de parada do perceptron é simples: "separe os pontos e pare de melhorar a linha quando você conseguir 100% de separação". O perceptron não é informado explicitamente para encontrar a melhor linha de separação. Regressão logística e modelos discriminantes lineares são construídos de maneira semelhante aos perceptrons.

A melhor linha divisória maximiza a distância entre os pontos B mais próximos de A e os pontos A mais próximos de B. Não é necessário examinar todos os pontos para fazer isso. De fato, a incorporação de feedback de pontos distantes pode levar a linha um pouco longe demais, como visto abaixo.

insira a descrição da imagem aqui

Máquinas de vetores de suporte:

Ao contrário de outros classificadores, a máquina de vetores de suporte é explicitamente instruída a encontrar a melhor linha de separação. Quão? A máquina de vetores de suporte procura os pontos mais próximos (Figura 2), que chama de "vetores de suporte" (o nome "máquina de vetores de suporte" se deve ao fato de que os pontos são como vetores e que a melhor linha "depende" ou é "suportado por" os pontos mais próximos).

Depois de encontrar os pontos mais próximos, o SVM desenha uma linha conectando-os (consulte a linha denominada 'w' na Figura 2). Ele desenha essa linha de conexão fazendo subtração vetorial (ponto A - ponto B). A máquina de vetores de suporte então declara que a melhor linha de separação é a linha que corta - e é perpendicular à - linha de conexão.

A máquina de vetores de suporte é melhor porque, quando você obtém uma nova amostra (novos pontos), você já criou uma linha que mantém B e A o mais longe possível um do outro e, portanto, é menos provável que um deles se espalhe a linha no território do outro.

insira a descrição da imagem aqui

Considero-me um aprendiz visual e lutei com a intuição por trás das máquinas de vetores de suporte por um longo tempo. O artigo chamado Dualidade e geometria nos classificadores SVM finalmente me ajudou a ver a luz; é de onde eu tirei as imagens.


4
+1 de outro aluno visual! Para o leitor, gostaria de observar que esses limites evidentes na figura acima se baseiam em um conjunto de dados que já foi transformado. Não é o conjunto de dados brutos.
Kingz 29/07

Lendo svm por mais de dois anos, hoje entendi como a linha de separação é identificada e mais algumas coisas. Obrigado pela resposta limpa.
precisa saber é o seguinte

53

A resposta de Ryan Zotti explica a motivação por trás da maximização dos limites de decisão, a resposta de carlosdc fornece algumas semelhanças e diferenças com relação a outros classificadores. Nesta resposta, darei uma breve visão geral matemática de como os SVMs são treinados e usados.

Notações

A seguir, escalares são indicados com letras minúsculas em itálico (por exemplo, ), vetores com letras minúsculas em negrito (por exemplo, ) e matrizes com letras maiúsculas em itálico (por exemplo, ) é a transposição de e .y,bw,xWwTww=wTw

Deixei:

  • x é um vetor de recurso (ou seja, a entrada do SVM). , em que é a dimensão do vetor de recurso.xRnn
  • y seja a classe (ou seja, a saída do SVM). , ou seja, a tarefa de classificação é binária.y{1,1}
  • w e são os parâmetros do SVM: precisamos aprendê-las usando o conjunto de treinamento.b
  • (x(i),y(i)) é a amostra no conjunto de dados. Vamos supor que temos amostras no conjunto de treinamento.ithN

Com , pode-se representar os limites de decisão do SVM da seguinte maneira:n=2

insira a descrição da imagem aqui

A classe é determinada da seguinte forma:y

y(i)={1 if wTx(i)+b11 if wTx(i)+b1

que pode ser escrito de forma mais concisa como .y(i)(wTx(i)+b)1

Objetivo

O SVM visa atender a dois requisitos:

  1. O SVM deve maximizar a distância entre os dois limites de decisão. Matematicamente, isso significa que queremos maximizar a distância entre o hiperplano definido por e o hiperplano definido por . Essa distância é igual a . Isso significa que queremos resolver . Equivalentemente, queremos .wTx+b=1wTx+b=12wmaxw2wminww2

  2. O SVM também deve classificar corretamente tudo , o que significax(i)y(i)(wTx(i)+b)1,i{1,,N}

O que nos leva ao seguinte problema de otimização quadrática:

minw,bw2,s.t.y(i)(wTx(i)+b)1i{1,,N}

Esse é o SVM de margem rígida , pois esse problema de otimização quadrática admite uma solução se os dados forem linearmente separáveis.

Pode-se relaxar as restrições introduzindo as chamadas variáveis ​​de folga . Observe que cada amostra do conjunto de treinamento tem sua própria variável de folga. Isso nos dá o seguinte problema de otimização quadrática:ξ(i)

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTx(i)+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Este é o SVM de margem flexível . é um hiperparâmetro chamado penalidade do termo de erro . ( Qual é a influência de C nos SVMs com kernel linear? E Qual intervalo de pesquisa para determinar os parâmetros ideais do SVM? ).C

Pode-se adicionar ainda mais flexibilidade, introduzindo uma função que mapeia o espaço original do recurso para um espaço dimensional mais alto. Isso permite limites de decisão não lineares. O problema de otimização quadrática se torna:ϕ

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTϕ(x(i))+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Otimização

O problema de otimização quadrática pode ser transformado em outro problema de otimização chamado problema dual Lagrangiano (o problema anterior é chamado de primal ):

maxαminw,bw2+Ci=1Nα(i)(1wTϕ(x(i))+b)),s.t.0α(i)C,i{1,,N}

Esse problema de otimização pode ser simplificado (configurando alguns gradientes para ) para:0

maxαi=1Nα(i)i=1Nj=1N(y(i)α(i)ϕ(x(i))Tϕ(x(j))y(j)α(j)),s.t.0α(i)C,i{1,,N}

w não aparece como (conforme declarado pelo teorema do representador ).w=i=1Nα(i)y(i)ϕ(x(i))

Portanto, aprendemos o usando do conjunto de treinamento.α(i)(x(i),y(i))

(FYI: Por que se preocupar com o problema duplo ao ajustar o SVM? Resposta curta: computação mais rápida + permite usar o truque do kernel, embora existam bons métodos para treinar o SVM no primal, por exemplo, consulte {1})

Fazendo uma previsão

Depois que o é aprendido, é possível prever a classe de uma nova amostra com o vetor de recursos seguinte maneira:α(i)xtest

ytest=sign(wTϕ(xtest)+b)=sign(i=1Nα(i)y(i)ϕ(x(i))Tϕ(xtest)+b)

O somatório pode parecer avassalador, pois significa que é preciso somar todas as amostras de treinamento, mas a grande maioria de é (consulte Por que os Os multiplicadores de Lagrange são escassos para SVMs? ), Portanto, na prática, isso não é um problema. (observe que é possível construir casos especiais em que todos ) se for um vetor de suporte . A ilustração acima possui 3 vetores de suporte.i=1Nα(i)0α(i)>0α(i)=0x(i)

Truque do kernel

Pode-se observar que o problema de otimização usa apenas no produto interno . A função que mapeia para o produto interno é chamado de um núcleo , aka função kernel, muitas vezes denotado por .ϕ(x(i))ϕ(x(i))Tϕ(x(j))(x(i),x(j))ϕ(x(i))Tϕ(x(j))k

Pode-se escolher para que o produto interno seja eficiente para a computação. Isso permite usar um espaço de recurso potencialmente alto a um baixo custo computacional. Isso é chamado de truque do kernel . Para uma função do kernel ser válida , ou seja, utilizável com o truque do kernel, ela deve satisfazer duas propriedades principais . Existem muitas funções do kernel para você escolher . Como uma observação lateral, o truque do kernel pode ser aplicado a outros modelos de aprendizado de máquina ; nesse caso, eles são referidos como kernelized .k

Indo além

Alguns QAs interessantes em SVMs:

Outros links:


Referências:


2
Olá Franck, muito obrigado pela sua resposta. Você se importaria de explicar por que o vetor é ortogonal ao hiperplano que o SVM gera? E como você calcular a distância entre dois limites de decisão para ser igual aw2w
Tosik

3
Além deste grande resposta, eu quero recomendar este vídeo que anda pelas matemática por trás SVM e esclarece especialmente o @tosik pergunta comentou youtube.com/watch?v=_PwhiWxHK8o
Nikolas Rieble

Resposta muito boa. Apenas uma observação sobre esta parte: se é um vetor de suporte . Para classificação, a soma é efetivamente sobre vetores de suporte (por exemplo, ). α(i)=0x(i)α(i)0
989

13

Vou focar nas semelhanças e diferenças de outros classificadores:

  • De um perceptron: o SVM usa perda de dobradiça e regularização de L2, o perceptron usa a perda de perceptron e pode usar a parada precoce (ou entre outras técnicas) para regularização, não há realmente um termo de regularização no perceptron. Como ele não possui um termo de regularização, o perceptron provavelmente será super treinado, portanto, os recursos de generalização podem ser arbitrariamente ruins. A otimização é feita usando descida de gradiente estocástico e, portanto, é muito rápida. Do lado positivo, este artigo mostra que, ao fazer uma parada precoce com uma função de perda ligeiramente modificada, o desempenho pode estar no mesmo nível de um SVM.

  • Da regressão logística: a regressão logística usa o termo de perda logística e pode usar a regularização L1 ou L2. Você pode pensar em regressão logística como o irmão discriminativo dos ingênuos-Bayes generativos.

  • Do LDA: O LDA também pode ser visto como um algoritmo generativo, considerando que as funções de densidade de probabilidade (p (x | y = 0) ep (x | y = 1) são normalmente distribuídas. Isso é ideal quando os dados estão em fato distribuídos normalmente. Ele tem, no entanto, a desvantagem de que "treinamento" exige a inversão de uma matriz que pode ser grande (quando você tem muitos recursos). Sob homocedasticidade LDA torna QDA que é Bayes ideal para dados distribuídos normalmente. o que significa que se o pressupostos estão satisfeitos, você realmente não pode fazer melhor do que isso.

No tempo de execução (tempo de teste), uma vez que o modelo foi treinado, a complexidade de todos esses métodos é a mesma, é apenas um ponto entre o hiperplano que o procedimento de treinamento encontrou e o ponto de dados.


1
Como você parece muito competente no SVM, deixe-me pedir que esclareça a minha dúvida: uma vez que encontramos o melhor hiperplano de separação, para que o usamos? Podemos definir o SVM como um método que, em primeiro lugar, escolhe o melhor hiperplano para classificar corretamente os pontos de dados e, em segundo lugar, usa esse hiperplano para separar novos pontos de dados nas duas classes. Direito? (Eu tenho algumas dúvidas na segunda parte)
DavideChicco.it 27/04

1
@ DavideChicco.it Sim, podemos usar a função de indicador para classificar novos dados, que geralmente são o principal objetivo do classificador. (Não aceite minha palavra por nada disso, sou novo em tudo).
Keyser

12

A técnica baseia-se no desenho de uma linha de limite de decisão, deixando uma margem ampla para os primeiros exemplos positivos e negativos possíveis:

insira a descrição da imagem aqui

Como na ilustração acima, se selecionarmos um vetor ortogonal tal que , possamos estabelecer um critério de decisão para que qualquer exemplo desconhecido seja catalogado como positivo da forma:w=1u

wuC

correspondente a um valor que colocaria a projeção além da linha de decisão no meio da rua. Observe que .wu=uw

Uma condição equivalente para uma amostra positiva seria:

(1)wu+b0

comC=b.

Precisamos de e para ter uma regra de decisão e, para chegar lá, precisamos de restrições .bw

Primeira restrição que vamos impor é que para qualquer amostra positiva , ; e para amostras negativas, . No limite da divisão ou no hiperplano ( mediana ), o valor seria , enquanto os valores nas sarjetas serão e :x+,wx++b1wx+b1011

insira a descrição da imagem aqui

O vetor é o vetor de pesos , enquanto é o viés .wb


Para reunir essas duas desigualdades, podemos introduzir a variável para que para exemplos positivos e se os exemplos forem negativos, e concluiryiyi=+1yi=1

yi(xiw+b)10.

Portanto, estabelecemos que isso deve ser maior que zero, mas se o exemplo estiver nos hiperplanos (as "calhas") que maximizam a margem de separação entre o hiperplano de decisão e as dicas dos vetores de suporte, neste caso, as linhas), então:

(2)yi(xiw+b)1=0

Observe que isso é equivalente a exigir queyi(xiw+b)=1.

insira a descrição da imagem aqui


Segunda restrição : a distância do hiperplano de decisão às pontas dos vetores de suporte será maximizada. Em outras palavras, a margem de separação ("rua") será maximizada:

insira a descrição da imagem aqui

Supondo que um vetor unitário perpendicular ao limite de decisão , o produto escalar com a diferença entre dois exemplos "positivo" e "negativo" é a largura da "rua" :w

width=(x+x)ww

Na equação acima, e estão na sarjeta (nos hiperplanos que maximizam a separação). Portanto, para o exemplo positivo: ou ; e para o exemplo negativo: . Então, reformulando a largura da rua:x+x (xiw+b)1=0x+w=1bxw=1b

width=(x+x)ww=x+wxww=1b(1b)w(3)=2w

Portanto, agora apenas precisamos maximizar a largura da rua - ou seja, maximizar minimizar ou minimizar:2w,w

(4)12w2

o que é matematicamente conveniente.


Então, queremos:

  1. Minimize com a restrição:x2

  2. yi(wxi+b)1=0


Como queremos minimizar essa expressão com base em algumas restrições, precisamos de um multiplicador de Lagrange (voltando às equações 2 e 4):

(5)L=12w2λi[yi(xiw+b)1]

Diferenciando,

Lw=wλiyixi=0
.

Portanto,

(6)w=λiyixi

E diferenciando em relação ab:

Lb=λiyi=0,

o que significa que temos um produto de soma zero de multiplicadores e rótulos:

(7)λiyi=0

Conectando a equação Eq (6) de volta à Eq (5),

L=12(λiyixi)(λjyjxj)(λiyixi)(λjyjxj)λiyib+λi

O penúltimo termo é zero conforme a equação Eq (7).

Portanto,

(8)L=λi12ijλiλjyiyjxixj

Eq (8) sendo o Lagrangiano final.

Portanto, a otimização depende do produto escalar de pares de exemplos.

Voltando à "regra de decisão" na Eq (1) acima e usando a Eq (6):

(9)λiyixiu+b0

será a regra de decisão final para um novo vetoru.


Nada original ... Apenas minhas próprias anotações em um nível mais básico. Basicamente, a partir deste vídeo do MIT, com minhas próprias ilustrações. Para erros, por favor me avise. Para obter respostas perspicazes, e mais detalhes, consulte o nível de especialista (post de Franck e outros).
Antoni Parellada

E como eu calculo b ?
Mike30

1
@mike com sendo o conjunto de índices dos vetores de suporteVocê pode encontrá-lo aqui . b=ysmSαmymxmxsS(αi>0).
Antoni Parellada

@AntoniParellada resposta incrível Antoni muito obrigado - mas você não está perdendo uma parte do problema Dual e das condições KTT?
Xavier Bourret Sicotte

@XavierBourretSicotte Não poderei trabalhar nisso por um tempo. Por favor, considere escrever uma resposta alternativa para abordar essas questões e, se o fizer, informe-me para que eu esteja ciente e que possa aprová-la.
Antoni Parellada

3

Alguns comentários sobre as condições de Dualidade e KTT

Problema primário

Pegando o post de @ Antoni entre as equações e , lembre-se de que nosso problema de otimização original ou primordial é da forma:(4)(5)

minw,bf(w,b)=minw,b 12||w||2s.t.  gi(w,b)=y(i)(wTx(i)+b)+1=0

Método de Lagrange

O método dos multiplicadores Lagrange nos permite transformar um problema de otimização restrito em um irrestrito da seguinte forma:

L(w,b,α)=12||w||2imαi[y(i)(wTx(i)+b)1]

Onde é chamado de Lagrangiano e são chamados de multiplicadores de Lagrangiano . L(w,b,α)αi

Nosso problema primordial de otimização com o Lagrangiano se torna o seguinte: (observe que o uso de , não é o mais rigoroso, pois também devemos usar e aqui ...)minmaxinfsup

minw,b(maxαL(w,b,α))

Problema duplo

O que o @Antoni e o Prof. Patrick Winston fizeram em sua derivação é supor que a função de otimização e as restrições atendam a algumas condições técnicas, para que possamos fazer o seguinte:

minw,b(maxαL(w,b,α))=maxα(minw,bL(w,b,α))

Isto permite-nos ter as derivadas parciais de com respeito a e , igualar a zero e, em seguida, ligar os resultados de volta para a equação original do Lagrangeanos, por conseguinte, a geração de um equivalente problema de otimização dupla do formulárioL(w,b,α)wb

maxαminw,bL(w,b,α)maxαimαi12i,jmy(i)y(j)αiαj<x(i)x(j)>s.t. αi0s.t. imαiy(i)=0

Dualidade e KTT

Sem entrar em tecnicismos matemáticos excessivos, essas condições são uma combinação das condições de Dualidade e Karush Kuhn Tucker (KTT) e nos permitem resolver o problema duplo em vez do primário , garantindo a solução ideal. No nosso caso, as condições são as seguintes:

  • As funções primordial de objetivo e restrição de desigualdade devem ser convexas
  • A função de restrição de igualdade deve ser afim
  • As restrições devem ser estritamente viáveis

Depois, existem que são soluções para os problemas primários e duplos. Além disso, os parâmetros atendem às condições KTT abaixo:w,αw,α

wiL(w,α,β)=0(A)βiL(w,α,β)=0(B)αigi(w)=0(C)gi(w)0(D)αi0(E)

Além disso, se alguns satisfazem as soluções KTT, eles também são solução para o problema primário e duplo.w,α

A equação acima é de particular importância e é chamada de condição de dupla complementaridade . Isso implica que, se então que significa que a restrição está ativa, ou seja, ela mantém a igualdade e não a desigualdade. Esta é a explicação por trás da equação na derivação de Antoni, onde a restrição de desigualdade é transformada em restrição de igualdade.α i > 0 g i ( w ) = 0 g i ( w ) 0 ( 2 )(C)αi>0gi(w)=0gi(w)0(2)

Um diagrama intuitivo, mas informal

insira a descrição da imagem aqui

Fontes


2
Muito obrigado. Eu o leio rapidamente e volto a ele mais tarde com mais tempo, mas parece ótimo e toca nos pontos que faltam na minha resposta.
Antoni Parellada
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.