Alguém pode me dizer a diferença entre os kernels no SVM:
Linear
Polinomial
Gaussiano (RBF)
Sigmoid
Porque, como sabemos, o kernel é usado para mapear nosso espaço de entrada no espaço de recursos de alta dimensionalidade. E nesse espaço de recursos, encontramos o limite linearmente separável.
Quando eles são usados (em que condições) e por quê?
O núcleo linear é o que você esperaria, um modelo linear. Eu acredito que o núcleo polinomial é semelhante, mas o limite é de alguma ordem definida, mas arbitrária
(por exemplo, ordem 3: ).a=b1+b2⋅X+b3⋅X2+b4⋅X3
O RBF usa curvas normais em torno dos pontos de dados e as soma para que o limite de decisão possa ser definido por um tipo de condição de topologia, como curvas em que a soma está acima de um valor de 0,5. (veja esta foto )
Não tenho certeza do que é o kernel sigmoide, a menos que seja semelhante ao modelo de regressão logística em que uma função logística é usada para definir curvas de acordo com o local em que o valor logístico é maior que algum valor (probabilidade de modelagem), como 0,5 como o normal caso.
Então, podemos obter o hiperplano separável linearmente (limite), se usarmos o kernel linear? e se usarmos polinomial ou kernel RBF, o hyperlane (para polinômio) poderia ser um círculo de classes agrupadas (para RBF) e curva? isso esta certo?? scikit-learn.org/stable/modules/svm.html
user3378327
Cada um dos kernals trabalha para versões de alta dimensão de seus respectivos limites. Isso responde à sua pergunta? Você não está limitado a três dimensões para nenhum kernel que eu conheço.
John Yetter 21/03
Eu só quero deixar claro. Então o limite usando o kernel linear é linear? Para RBF é como um círculo de classe agrupada ?? e para o polinômio, pode ser curva com base no grau do polinômio ??
user3378327
Eu não diria que RBF é um círculo de classe agrupada. Meu entendimento é que ela aplica uma função baseada em uma distribuição normal em cada ponto de dados e soma essas funções. Em seguida, um limite é formado pela curva que representa um determinado valor nessa função. Se alguém que contribuiu para uma biblioteca SVM pudesse entrar em cena, isso pode ajudar. Penso que a sua compreensão dos outros dois núcleos está correta.
precisa
U disse que o Linier Kernel é o que eu esperava (para obter uma classe separável linearmente) usando o Kernel. e usando o classificador SVM, chamamos de LINIER SVM. Mas como podemos obter os dados separáveis linearmente sem nenhum kernel no SVM. Como chamamos isso? Ainda Linier SVM ou Non Linier SVM ??
user3378327
11
Baseando-se no conhecimento básico do leitor sobre kernels.
Embora as informações em sua resposta estejam corretas, acho que não responde à pergunta aqui levantada, que é mais sobre qual é a diferença prática entre elas, ou seja , quando usar uma ou outra.
Firebug
11
Surpreendentemente, essas definições simples são difíceis de encontrar. Eles devem ser a primeira coisa apresentada quando se fala em diferenças de núcleos, mas existe uma falha generalizada em indicá-los.
Cammil # 9/17
Existe alguma fonte oficial para isso? (Eu os testei e eles parecem corretos, mas eu gostaria de citá-los.)
Christian Eriksson
6
Esta questão pode ser respondida do ponto de vista teórico e prático. Do ponto de vista teórico, de acordo com o teorema do almoço livre, afirma que não há garantias de que um kernel funcione melhor que o outro. Isso é a priori, você nunca sabe, nem pode descobrir qual kernel funcionará melhor.
Do ponto de vista prático, consulte a seguinte página:
Baseando-se no conhecimento básico do leitor sobre kernels.
fonte
Esta questão pode ser respondida do ponto de vista teórico e prático. Do ponto de vista teórico, de acordo com o teorema do almoço livre, afirma que não há garantias de que um kernel funcione melhor que o outro. Isso é a priori, você nunca sabe, nem pode descobrir qual kernel funcionará melhor.
Do ponto de vista prático, consulte a seguinte página:
Como selecionar o kernel para SVM?
fonte
Enquanto reflete sobre o que um kernel é "bom" ou quando deve ser usado, não há regras rígidas.
Se o seu classificador / regressor tiver um bom desempenho com um determinado kernel, é apropriado, se não, considere mudar para outro.
Pode-se obter informações sobre o desempenho do seu kernel, especificamente se for um modelo de classificação, revisando alguns exemplos de visualização, por exemplo, https://gist.github.com/WittmannF/60680723ed8dd0cb993051a7448f7805
fonte