Próbuję zrozumieć intuicję stojącą za SVM jądra. Teraz rozumiem, jak działa liniowy SVM, dzięki czemu tworzona jest linia decyzyjna, która najlepiej dzieli dane. Rozumiem również zasadę przenoszenia danych do przestrzeni o większych wymiarach oraz sposób, w jaki może to ułatwić znalezienie liniowej linii decyzyjnej w tej nowej przestrzeni. Nie rozumiem, w jaki sposób jądro jest używane do rzutowania punktów danych na tę nową przestrzeń.
Wiem o jądrze, że skutecznie reprezentuje „podobieństwo” między dwoma punktami danych. Ale jak to się ma do projekcji?
machine-learning
svm
kernel-trick
Karnivaurus
źródło
źródło
Odpowiedzi:
Niechh(x) będzie rzutem na przestrzeń dużego wymiaru F . Zasadniczo funkcja jądra K(x1,x2)=⟨h(x1),h(x2)⟩ , który jest wewnętrzny produkt uboczny. Nie jest więc używany do rzutowania punktów danych, ale raczej do wyniku projekcji. Można to uznać za miarę podobieństwa, ale w SVM to coś więcej.
Optymalizacja w celu znalezienia najlepszej oddzielającej hiperpłaszczyzny wF obejmuje h(x) tylko poprzez formę produktu wewnętrznego. To znaczy, jeśli znasz K(⋅,⋅) , nie musisz znać dokładnej formy h(x) , co ułatwia optymalizację.
Każde jądroK(⋅,⋅) ma również odpowiednie h ( x ) . Więc jeśli używasz SVM z tym jądrem, to domyślnie znajdujesz liniową linię decyzyjną w przestrzeni, na którą mapuje h ( x ) .
Rozdział 12 elementów statystycznego uczenia się zawiera krótkie wprowadzenie do SVM. Daje to więcej szczegółów na temat połączenia między jądrem a mapowaniem funkcji: http://statweb.stanford.edu/~tibs/ElemStatLearn/
źródło
Przydatne właściwości jądra SVM nie są uniwersalne - zależą od wyboru jądra. Aby uzyskać intuicję, pomocne jest spojrzenie na jedno z najczęściej używanych jąder, jądro Gaussa. Co ciekawe, to jądro zamienia SVM w coś podobnego do k-najbliższego sąsiada klasyfikatora.
Ta odpowiedź wyjaśnia, co następuje:
1. Osiągnięcie idealnej separacji
Idealne rozdzielenie jest zawsze możliwe w przypadku jądra Gaussa ze względu na jego właściwości lokalizacyjne, które prowadzą do arbitralnie elastycznej granicy decyzji. Dla wystarczająco małej przepustowości jądra granica decyzyjna będzie wyglądać tak, jakbyś po prostu narysował małe kółka wokół punktów, ilekroć są one potrzebne do oddzielenia pozytywnych i negatywnych przykładów:
( Źródło: internetowy kurs uczenia maszynowego Andrew Ng ).
Dlaczego więc dzieje się to z matematycznego punktu widzenia?
Rozważ standardową konfigurację: masz jądro Gaussa i dane treningowe ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … , ( x ( n ) ,K.( x , z ) =exp(−||x−z||2/σ2) gdzie wartości y ( i ) wynoszą ± 1 . Chcemy nauczyć się funkcji klasyfikatora(x(1),y(1)),(x(2),y(2)),…,(x(n),y(n)) y(i) ±1
Jak teraz przypiszemy wagi ? Czy potrzebujemy nieskończonych przestrzeni wymiarowych i algorytmu programowania kwadratowego? Nie, ponieważ chcę tylko pokazać, że mogę doskonale rozdzielić punkty. Czynię więc σ miliard razy mniejszą niż najmniejsza separacja | | x ( i ) - x ( j ) | | pomiędzy dowolnymi dwoma przykładami treningu, a ja właśnie ustawiłem w i = 1 . Oznacza to, że wszystkie punkty szkoleniowe są mld Sigmas siebie aż do jądra jest zaniepokojony, a każdy punkt całkowicie kontroluje znak ywi σ ||x(i)−x(j)|| wi=1 y^ w jego sąsiedztwie. Formalnie mamy
gdzie jest jakąś dowolnie małą wartością. Wiemy ε jest mała, ponieważ x ( k ) jest miliard Sigmas dala od jakiegokolwiek innego punktu, więc dla wszystkich i ≠ k mamyϵ ϵ x(k) i≠k
Ponieważ jest tak mała, y ( x ( k ) ) na pewno ma taki sam znak jak y ( k ) i klasyfikator osiąga doskonałą dokładność na danych treningowych. W praktyce byłoby to okropnie nadmierne, ale pokazuje ogromną elastyczność jądra Gaussa SVM i to, jak może działać bardzo podobnie do najbliższego klasyfikatora sąsiadów.ϵ y^(x(k)) y(k)
2. Uczenie się SVM jądra jako separacji liniowej
Fakt, że można to interpretować jako „idealne rozdzielenie liniowe w nieskończonej wymiarowej przestrzeni cech” pochodzi z sztuczki jądra, która pozwala interpretować jądro jako abstrakcyjny produkt wewnętrzny, jakąś nową przestrzeń cech:
gdzie jest odwzorowaniem z przestrzeni danych na przestrzeń cech. Wynika stąd bezpośrednio, że w r ( x ) funkcji w funkcji liniowej w przestrzeni cech:Φ(x) y^(x)
gdzie funkcja liniowa jest zdefiniowana na wektorach przestrzeni cech v jakoL(v) v
Ta funkcja jest liniowa w ponieważ jest to tylko liniowa kombinacja produktów wewnętrznych ze stałymi wektorami. W przestrzeni funkcji granica decyzja r ( x ) = 0 jest tylko L ( V ) = 0 , zestaw poziom funkcji liniowej. To jest właśnie definicja hiperpłaszczyzny w przestrzeni cech.v y^(x)=0 L(v)=0
3. W jaki sposób jądro jest używane do konstruowania przestrzeni cech
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 spaceV 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:
The inner product on the space is not the ordinary dot product, but an abstract inner product based on the kernel:
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:
You can prove thatV is an inner product space when K is a positive definite kernel. See this paper for details.
źródło
For the background and the notations I refer to How to calculate decision boundary from support vectors?.
So the features in the 'original' space are the vectorsxi , the binary outcome yi∈{−1,+1} and the Lagrange multipliers are αi .
As said by @Lii (+1) the Kernel can be written asK(x,y)=h(x)⋅h(y) ('⋅ ' represents the inner product.
I will try to give some 'intuitive' explanation of what thish looks like, so this answer is no formal proof, it just wants to give some feeling of how I think that this works. Do not hesitate to correct me if I am wrong.
I have to 'transform' my feature space (so myxi ) into some 'new' feature space in which the linear separation will be solved.
For each observationxi , I define functions ϕi(x)=K(xi,x) , so I have a function ϕi for each element of my training sample. These functions ϕi span a vector space. The vector space spanned by the ϕi , note it V=span(ϕi,i=1,2,…N) .
I will try to argue that is the vector space in which linear separation will be possible. By definition of the span, each vector in the vector spaceV can be written as as a linear combination of the ϕi , i.e.: ∑Ni=1γiϕi , where γi are real numbers.
The transformation, that maps my original feature space toV is defined as
This mapΦ maps my original feature space onto a vector space that can have a dimension that goed up to the size of my training sample.
Obviously, this transformation (a) depends on the kernel, (b) depends on the valuesxi in the training sample and (c) can, depending on my kernel, have a dimension that goes up to the size of my training sample and (d) the vectors of V look like ∑Ni=1γiϕi , where γi , γi are real numbers.
Looking at the functionf(x) in How to calculate decision boundary from support vectors? it can be seen that f(x)=∑iyiαiϕi(x)+b .
In other words,f(x) is a linear combination of the ϕi and this is a linear separator in the V-space : it is a particular choice of the γi namely γi=αiyi !
Theyi are known from our observations, the αi are the Lagrange multipliers that the SVM has found. In other words SVM find, through the use of a kernel and by solving a quadratic programming problem, a linear separation in the V -spave.
This is my intuitive understanding of how the 'kernel trick' allows one to 'implicitly' transform the original feature space into a new feature spaceV , with a different dimension. This dimension depends on the kernel you use and for the RBF kernel this dimension can go up to the size of the training sample.
So kernels are a technique that allows SVM to transform your feature space , see also What makes the Gaussian kernel so magical for PCA, and also in general?
źródło
Let me explain it. The kernel trick is the key here. Consider the case of a Radial Basis Function (RBF) Kernel here. It transforms the input to infinite dimensional space. The transformation of inputx to ϕ(x) can be represented as shown below (taken from http://www.csie.ntu.edu.tw/~cjlin/talks/kuleuven_svm.pdf)
The input space is finite dimensional but the transformed space is infinite dimensional. Transforming the input to an infinite dimensional space is something that happens as a result of the kernel trick. Herex which is the input and ϕ is the transformed input. But ϕ is not computed as it is, instead the product ϕ(xi)Tϕ(x) is computed which is just the exponential of the norm between xi and x .
There is a related question Feature map for the Gaussian kernel to which there is a nice answer /stats//a/69767/86202.
The output or decision function is a function of the kernel matrixK(xi,x)=ϕ(xi)Tϕ(x) and not of the input x or transformed input ϕ directly.
źródło
Mapping to a higher dimension is merely a trick to solve a problem that is defined in the original dimension; so concerns such as overfitting your data by going into a dimension with too many degrees of freedom are not a byproduct of the mapping process, but are inherent in your problem definition.
Basically, all that mapping does is converting conditional classification in the original dimension to a plane definition in the higher dimension, and because there is a 1 to 1 relationship between the plane in the higher dimension and your conditions in the lower dimension, you can always move between the two.
Taking the problem of overfitting, clearly, you can overfit any set of observations by defining enough conditions to isolate each observation into its own class, which is equivalent of mapping your data to (n-1)D where n is the number of your observations.
Taking the simplest problem, where your observations are [[1,-1], [0,0], [1,1]] [[feature, value]], by moving into the 2D dimension and separating your data with a line, your are simply turning the conditional classification of
feature < 1 && feature > -1 : 0
to defining a line that passes through(-1 + epsilon, 1 - epsilon)
. If you had more data points and needed more condition, you just needed to add one more degree of freedom to your higher dimension by each new condition that your define.You can replace the process of mapping to a higher dimension with any process that provides you with a 1 to 1 relationship between the conditions and the degrees of freedom of your new problem. Kernel tricks simply do that.
źródło
[x, floor(sin(x))]
. Mapping your problem into a 2D dimension is not helpful here at all; in fact, mapping to any plane will not be helpful here, which is because defining the problem as a set ofx < a && x > b : z
is not helpful in this case. The simplest mapping in this case is mapping into a polar coordinate, or into the imaginary plane.