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.
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.
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.