As propriedades úteis do SVM do kernel não são universais - elas dependem da escolha do kernel. Para obter intuição, é útil olhar para um dos kernels mais usados, o kernel Gaussiano. Notavelmente, esse kernel transforma o SVM em algo muito parecido com um classificador vizinho k-mais próximo.
Esta resposta explica o seguinte:
- Por que a separação perfeita de dados positivos e negativos de treinamento é sempre possível com um kernel gaussiano de largura de banda suficientemente pequena (ao custo de sobreajuste)
- Como essa separação pode ser interpretada como linear em um espaço de feição.
- Como o kernel é usado para construir o mapeamento do espaço de dados para o espaço de recursos. Spoiler: o espaço de feição é um objeto matematicamente abstrato, com um produto interno abstrato incomum baseado no kernel.
1. Alcançar a separação perfeita
A separação perfeita é sempre possível com um kernel gaussiano devido às propriedades de localização do kernel, que levam a um limite de decisão arbitrariamente flexível. Para uma largura de banda suficientemente pequena do kernel, o limite de decisão parecerá que você desenhou pequenos círculos em torno dos pontos sempre que necessário para separar os exemplos positivos e negativos:
(Crédito: curso de aprendizado de máquina on-line de Andrew Ng ).
Então, por que isso ocorre de uma perspectiva matemática?
Considere a configuração padrão: você tem um kernel gaussiano e dados de treinamento ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … , ( x ( n ) ,K( x , z ) = exp( - | | x - z | |2/ σ2) onde os valores de y ( i ) são ± 1 . Queremos aprender uma função classificadora( x(1),y(1)),(x(2),y(2)),…,(x(n),y(n))y(i)±1
y^(x)=∑iwiy(i)K(x(i),x)
Agora, como vamos atribuir os pesos ? Precisamos de espaços dimensionais infinitos e um algoritmo de programação quadrática? Não, porque eu só quero mostrar que posso separar os pontos perfeitamente. Então eu faço σ um bilhão de vezes menor que a menor separação | | x ( i ) - x ( j ) | | entre dois exemplos de treinamento, e apenas defino w i = 1 . Isto significa que todos os pontos de treinamento são um bilhão de sigmas além, tanto quanto o kernel está em causa, e cada ponto controla completamente o sinal de ywiσ||x(i)−x(j)||wi=1y^no seu bairro. Formalmente, temos
y^(x(k))=∑i=1ny(k)K(x(i),x(k))=y(k)K(x(k),x(k))+∑i≠ky(i)K(x(i),x(k))=y(k)+ϵ
onde é algum valor arbitrariamente pequeno. Sabemos ε é pequena porque x ( k ) é um bilhão de sigmas longe de qualquer outro ponto, assim, para todos i ≠ k temosϵϵx(k)i≠k
K(x(i),x(k))=exp(−||x(i)−x(k)||2/σ2)≈0.
Since ϵ is so small, y^(x(k)) definitely has the same sign as y(k), and the classifier achieves perfect accuracy on the training data. In practice this would be terribly overfitting but it shows the tremendous flexibility of the Gaussian kernel SVM, and how it can act very similar to a nearest neighbor classifier.
2. Kernel SVM learning as linear separation
The fact that this can be interpreted as "perfect linear separation in an infinite dimensional feature space" comes from the kernel trick, which allows you to interpret the kernel as an abstract inner product some new feature space:
K(x(i),x(j))=⟨Φ(x(i)),Φ(x(j))⟩
where Φ(x) is the mapping from the data space into the feature space. It follows immediately that the y^(x) function as a linear function in the feature space:
y^(x)=∑iwiy(i)⟨Φ(x(i)),Φ(x)⟩=L(Φ(x))
where the linear function L(v) is defined on feature space vectors v as
L(v)=∑iwiy(i)⟨Φ(x(i)),v⟩
This function is linear in v because it's just a linear combination of inner products with fixed vectors. In the feature space, the decision boundary y^(x)=0 is just L(v)=0, the level set of a linear function. This is the very definition of a hyperplane in the feature space.
3. How the kernel is used to construct the feature space
Kernel methods never actually "find" or "compute" the feature space or the mapping Φ explicitly. Kernel learning methods such as SVM do not need them to work; they only need the kernel function K. It is possible to write down a formula for Φ but the feature space it maps to is quite abstract and is only really used for proving theoretical results about SVM. If you're still interested, here's how it works.
Basically we define an abstract vector space V where each vector is a function from X to R. A vector f in V is a function formed from a finite linear combination of kernel slices:
f(x)=∑i=1nαiK(x(i),x)
(Here the
x(i) are just an arbitrary set of points and need not be the same as the training set.) It is convenient to write
f more compactly as
f=∑i=1nαiKx(i)
where
Kx(y)=K(x,y) is a function giving a "slice" of the kernel at
x.
The inner product on the space is not the ordinary dot product, but an abstract inner product based on the kernel:
⟨∑i=1nαiKx(i),∑j=1nβjKx(j)⟩=∑i,jαiβjK(x(i),x(j))
This definition is very deliberate: its construction ensures the identity we need for linear separation, ⟨Φ(x),Φ(y)⟩=K(x,y).
With the feature space defined in this way, Φ is a mapping X→V, taking each point x to the "kernel slice" at that point:
Φ(x)=Kx,whereKx(y)=K(x,y).
You can prove that V is an inner product space when K is a positive definite kernel. See this paper for details.