Diferença entre um SVM e um perceptron


29

Estou um pouco confuso com a diferença entre um SVM e um perceptron. Deixe-me tentar resumir minha compreensão aqui e sinta-se à vontade para corrigir onde estou errado e preencher o que perdi.

  1. O Perceptron não tenta otimizar a separação "distância". Contanto que encontre um hiperplano que separa os dois conjuntos, é bom. O SVM, por outro lado, tenta maximizar o "vetor de suporte", ou seja, a distância entre os dois pontos de amostra opostos mais próximos.

  2. O SVM normalmente tenta usar uma "função do kernel" para projetar os pontos de amostra no espaço de alta dimensão para torná-los separáveis ​​linearmente, enquanto o perceptron assume que os pontos de amostra são separáveis ​​linearmente.


Respostas:


18

Parece certo para mim. Às vezes, as pessoas também usam a palavra "Perceptron" para se referir ao algoritmo de treinamento junto com o classificador. Por exemplo, alguém me explicou isso na resposta a esta pergunta . Além disso, não há nada que o impeça de usar um kernel com o perceptron, e esse geralmente é um classificador melhor. Veja aqui alguns slides (pdf) sobre como implementar o perceptron do kernel.

A principal diferença prática entre um perceptron (do kernel) e o SVM é que o perceptron pode ser treinado on-line (ou seja, seus pesos podem ser atualizados à medida que novos exemplos chegam um de cada vez), enquanto os SVMs não podem. Consulte esta pergunta para obter informações sobre se os SVMs podem ser treinados online. Portanto, mesmo que um SVM seja geralmente um classificador melhor, os perceptrons ainda podem ser úteis porque são baratos e fáceis de treinar em uma situação em que novos dados de treinamento estão constantemente chegando.


3
Os SVMs podem ser treinados online. A partir de uma solução dupla, você pode obter o primal correspondente e, a partir desta, atualizar pesos de maneira estocástica.
Firebug


4

minw2+Ci=1n(1yi(wxi+w0))+
mini=1n(yi(wxi+w0))+

Podemos ver que o SVM tem quase o mesmo objetivo que o perceptron regularizado por L2.

Como o objetivo é diferente, também temos esquemas de otimização diferentes para esses dois algoritmos, a partir do , vemos que esse é o principal motivo para usar a programação quadrática para otimizar o SVM.w2

Por que o perceptron permite atualização online? Se você vir a regra de atualização de descida de gradiente para a perda de dobradiça (a perda de dobradiça é usada pelo SVM e pelo perceptron),

wt=wt1+η1Ni=1NyixiI(yiwtxi0)

Como todos os algoritmos de aprendizado de máquina podem ser vistos como a combinação da função de perda e do algoritmo de otimização.

Perceptron não passa de perda de dobradiça (função de perda) + descida de gradiente estocástico (otimização)

wt=wt1+yy+1xt+1I(yt+1wtxt+10)

E o SVM pode ser visto como perda de dobradiça + regularização de l2 (perda + regularização) + programação quadrática ou outros algoritmos de otimização mais sofisticados, como SMO (otimização).


-1

Perceptron é a generalização do SVM, onde SVM é o perceptron com estabilidade ideal. Portanto, você está correto quando diz que o perceptron não tenta otimizar a distância de separação.

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.