2016-03-28 3 views
1

Ich habe Probleme, genau zu verstehen, wie ein SVM funktioniert, wenn ein RBF verwendet wird. Meine Mathematikkenntnisse sind in Ordnung, aber bis jetzt ist jede Erklärung, die mir begegnet, für mich zu kurz. Mein derzeitiges Verständnis ist wie folgt. Nehmen wir an, ich verwende eine SVM als binären Klassifizierer für einen Datensatz, der nicht linear trennbar ist (also ist ein rbf die richtige Wahl?). Wenn die SVM trainiert wird, wird sie eine Hyperebene (die ich glaube wie eine Ebene in 3d, aber mit mehr Dimensionen?) Zeichnen, die die Daten am besten trennt.Erklärung, wie eine radiale Basisfunktion in Support-Vektor-Maschinen funktioniert

Bei der Optimierung ändert sich durch Ändern des Gammawerts die Oberfläche der Hyperebene (auch Entscheidungsgrenze genannt).

Dies ist, wo ich anfangen, richtig verwirrt ..

So eine Erhöhung des Wertes von Gamma, ergibt sich eine Gaußsche die schmaler ist. Ist das so, dass die Beulen auf der Ebene (wenn in 3d gezeichnet), die geplottet werden können, schmaler sein sollten, um den Trainingsdaten besser zu entsprechen? Oder in 2D ist das wie sagen Gamma definiert, wie biegsam die Linie, die die Daten trennt, sein kann?

Ich bin auch sehr verwirrt darüber, wie dies zu einer unendlichen dimensionalen Darstellung aus einer endlichen Anzahl von Features führen kann? Irgendwelche guten Analogien würden mir sehr helfen.

Antwort

3

(so ein RBF ist die richtige Wahl?)

Es hängt davon ab. RBF ist ein sehr einfacher, generischer Kernel, der verwendet werden kann, aber es gibt Dutzende von anderen. Schauen Sie zum Beispiel an den in pykernels enthalten diejenigen https://github.com/gmum/pykernels

Wenn der SVM trainiert wird, wird es eine Hyperebene zeichnen (was ich denke, wie ein Flugzeug in 3d ist aber mit mehr Dimensionen?), Die am besten zu den Daten trennt.

Lässt einige seltsame Verwirrungen vermeiden. Nichts ist aufgetragen hier. SVM sucht nach einer d-dimensionalen Hyperebene, die durch v (Normalenvektor) und b (Bias, Entfernung vom Ursprung) definiert ist, die einfach aus Punkten x, so dass <v, x> = b. In 2D Hyperebene ist eine Linie, in 3D Hyperebene ist Ebene, in d + 1 Dimensionen ist es d dimensionale Objekt, immer eine Dimension niedriger als der Raum (Linie ist 1D, Ebene ist 2D).

Bei der Optimierung ändert sich durch Ändern des Gammawertes die Oberfläche der Hyperebene (auch Entscheidungsgrenze genannt).

Jetzt ist dies oft ein Fehler. Entscheidungsgrenze ist nicht eine Hyperebene. Entscheidungsgrenze ist eine Projektion der Hyperebene auf den Eingangsraum. Sie können die tatsächliche Hyperebene nicht beobachten, da sie oft sehr hoch ist. Sie können diese Hyperebene als funktionale Gleichung ausdrücken, aber nicht mehr. Die Entscheidungsgrenze andererseits "lebt" in Ihrem Eingabebereich. Wenn die Eingabe niedrigdimensional ist, können Sie dieses Objekt sogar grafisch darstellen. Aber das ist keine Hyperebene, es ist nur die Art und Weise, wie diese Hyperebene sich mit Ihrem Eingabebereich schneidet. Deshalb ist die Entscheidungsgrenze oft gekrümmt oder sogar diskontinuierlich, obwohl die Hyperebene immer linear und kontinuierlich ist - weil Sie nur einen nichtlinearen Schnitt durch sie sehen. Was macht nun gamma? Der RBF-Kernel führt zur Optimierung im Bereich kontinuierliche Funktionen. Es gibt viele davon (es gibt Kontinuum solcher Objekte).SVM kann jedoch nur einen winzigen Bruchteil dieser Typen ausdrücken - lineare Kombinationen von Kernwerten in Trainingspunkten. Festlegung bestimmter Gamma-Limits Anzahl der zu berücksichtigenden Funktionen - größer das Gamma, schmaler die Kerne, also Funktionen, die betrachtet werden, bestehen aus linearen Kombinationen solcher "stacheligen" Verteilungen. Also verändert Gamma selbst die Oberfläche nicht, es verändert den Raum der überlegten Hypothesen.

So eine Erhöhung der Wert von Gamma, führt zu einer Gaußschen, die schmaler ist. Ist das so, dass die Beulen auf der Ebene (wenn in 3d gezeichnet), die geplottet werden können, schmaler sein sollten, um den Trainingsdaten besser zu entsprechen? Oder in 2D ist das wie sagen Gamma definiert, wie biegsam die Linie, die die Daten trennt, sein kann?

Ich glaube, ich mit früheren Punkt beantwortet - hohe Gamma bedeutet, dass Sie nur Hyperebenen der Form betrachten

<v, x> - b = SUM_i alpha_i K_gamma(x_i, x) - b 

wo K_gamma(x_i, x) = exp(-gamma ||x_i-x||^2), so erhalten Sie sehr „stacheligen“ Elemente Ihrer Basis. Dies wird zu einer sehr engen Anpassung an Ihre Trainingsdaten führen. Die genaue Form der Entscheidungsgrenze ist schwer abzuschätzen, da dies von optimalen Lagrange-Multiplikatoren alpha_i abhängt, die während des Trainings ausgewählt wurden.

Ich bin auch sehr verwirrt darüber, wie dies zu einer unendlichen dimensionalen Darstellung aus einer endlichen Anzahl von Features führen kann? Irgendwelche guten Analogien würden mir sehr helfen.

Die „unendliche representation“ kommt von der Tatsache, dass, um mit Vektoren und Hyperebenen zu arbeiten, jeder Ihres Punkt tatsächlich eine kontinuierliche Funktion abgebildet wird. Daher arbeitet SVM intern nicht wirklich mit d-dimensionalen Punkten, sondern mit Funktionen. Betrachte 2d Fall, du hast Punkte [0,0] und [1,1]. Dies ist ein einfaches 2d Problem. Wenn Sie hier SVM mit dem rbf-Kernel anwenden, arbeiten Sie stattdessen mit einer nichtnormalisierten Gaußschen Verteilung, die in [0, 0] zentriert ist, und einer anderen in [1,1]. Jedes dieser Gaussian ist eine Funktion von R^2 nach R, die seine Wahrscheinlichkeitsdichtefunktion (pdf) ausdrückt. Es ist ein wenig verwirrend, weil Kernel wie ein Gaussian aussieht, aber das ist nur, weil dot Produkt von zwei Funktionen normalerweise als ein Integral ihres Produktes definiert wird, und Integral des Produkts von zwei Gaussianer ist .... ein Gaussian auch ! Wo ist diese Unendlichkeit? Denken Sie daran, dass Sie mit Vektoren arbeiten sollen. Wie schreibe ich eine Funktion als Vektor auf? Sie müssten alle ihre Werte auflisten, wenn Sie also eine Funktion f(x) = 1/sqrt(2*pi(sigma^2) exp(-||x-m||^2/(2*sigma^2)) haben, müssen Sie unendliche Zahl solcher Werte auflisten, um es vollständig zu definieren. Und das ist dieses Konzept der unendlichen Dimension - Sie ordnen Punkte Funktionen zu, Funktionen sind unendlich dimensional in Bezug auf Vektorräume, somit ist Ihre Darstellung unendlich dimensional.

Ein gutes Beispiel könnte eine andere Zuordnung sein. Betrachten Sie einen 1D-Datensatz mit den Zahlen 1,2,3,4,5,6,7,8,9,10. Wir können ungeraden Nummern eine andere Bezeichnung zuweisen als geraden. Sie können diese Typen nicht linear trennen. Aber Sie können stattdessen jeden Punkt Karte (Zahl) auf eine Art charakteristische Funktion, Funktion der Form

f_x(y) = 1 iff x e [y-0.5, y+0.5] 

jetzt im Raum aller Aufgaben, kann ich leicht trennen linear diejenigen aus ungeraden xs vom Rest erstellt durch einfaches Hyperebene der Gleichung Aufbau

<v, x> = SUM_[v_odd] <f_[v_odd](y), f_x(y)> = INTEGRAL (f_v * f_x) (y) dy 

Und dies wird gleich 1 iff x ungerade ist, da nur dieses Integral nicht Null sein wird. Offensichtlich verwende ich nur eine begrenzte Anzahl von Trainingspunkten (v_odd hier), aber die Darstellung selbst ist unendlich dimensional.Woher kommt diese zusätzliche "Information"? Aus meinen Annahmen - die Art, wie ich das Mapping definierte, führt eine bestimmte Struktur in den Raum ein, den ich in Betracht ziehe. Ähnlich verhält es sich mit RBF - Sie erhalten unendlich viele Dimensionen, aber das bedeutet nicht, dass Sie tatsächlich jede kontinuierliche Funktion in Betracht ziehen - Sie beschränken sich auf die linearen Kombinationen von Gaussians, die in Trainingspunkten zentriert sind. In ähnlicher Weise könnten Sie einen sinusförmigen Kern verwenden, der Sie auf die Kombinationen sinusförmiger Funktionen beschränkt. Die Wahl eines bestimmten, "besten" Kerns ist die ganze andere Geschichte, komplex und ohne klare Antworten. Hoffe das hilft ein bisschen.

Verwandte Themen