Полезные свойства ядра SVM не универсальны - они зависят от выбора ядра. Чтобы получить интуицию, полезно взглянуть на одно из наиболее часто используемых ядер - ядро Гаусса. Примечательно, что это ядро превращает SVM во что-то очень похожее на классификатор k-ближайших соседей.
Этот ответ объясняет следующее:
- Почему идеальное разделение положительных и отрицательных обучающих данных всегда возможно с гауссовым ядром с достаточно малой пропускной способностью (за счет переобучения)
- Как это разделение можно интерпретировать как линейное в пространстве признаков.
- Как ядро используется для построения отображения из пространства данных в пространство признаков. Спойлер: пространство признаков - это очень математически абстрактный объект с необычным абстрактным внутренним продуктом, основанным на ядре.
1. Достижение идеального разделения
Идеальное разделение всегда возможно с ядром Гаусса из-за свойств локальности ядра, которые приводят к произвольно гибкой границе решения. Для достаточно малой пропускной способности ядра граница принятия решения будет выглядеть так, как будто вы просто рисуете маленькие кружочки вокруг точек всякий раз, когда они необходимы для разделения положительных и отрицательных примеров:
(Фото: онлайн курс по машинному обучению Эндрю Нг ).
Итак, почему это происходит с математической точки зрения?
Рассмотрим стандартную настройку: у вас есть гауссово ядро и обучающие данные ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … , ( x ( n ) ,K(x,z)=exp(−||x−z||2/σ2) где значения y ( i ) равны ± 1 . Мы хотим узнать функцию классификатора(x(1),y(1)),(x(2),y(2)),…,(x(n),y(n))y(i)±1
y^(x)=∑iwiy(i)K(x(i),x)
Теперь, как мы будем когда-либо назначать веса ? Нужны ли нам бесконечномерные пространства и алгоритм квадратичного программирования? Нет, потому что я просто хочу показать, что могу отлично разделять точки. Поэтому я делаю σ в миллиард раз меньше, чем наименьшее разделение | | x ( i ) - x ( j ) | | между любыми двумя примерами обучения, и я просто установил w i = 1 . Это означает , что все учебные пункты являются миллиард сигмы друг от друга, насколько это ядро касается, и каждая точка полностью контролирует знак уwiσ||x(i)−x(j)||wi=1y^в его окрестностях. Формально у нас есть
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)+ϵ
where ϵ is some arbitrarily tiny value. We know ϵ is tiny because x(k) is a billion sigmas away from any other point, so for all i≠k we have
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.