Entscheidung Werte in Libsvm
Ich bin neu SVM. Ich Libsvm verwendet für Matlab, und nach einem Vorhersage-phase habe ich eine Entscheidung Werte-array. Von SVM-Theorie: jede test-Datensatz z zugeordnet ist als positiv, wenn
f(z)=1
wobei f(z) ist definiert als
f(z)=sign(w*z+b)
Also, wie kann ich beziehen sich auf die Entscheidung Wert aus dem array für eine Instanz von z mit f(z)?
Ist die Vorhersage auf der Grundlage des Beschlusses der Wert so: wenn dec_value>0, dann ist z positiv ist, sonst z negativ ist?
InformationsquelleAutor Titus Pullo | 2012-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie sind richtig, wenn f(z) positiv, dann ist die Instanz gehört zur Klasse +1, wenn seine negativ-es gehört zur Klasse -1. Der Wert von f(z) ist nicht interpretierbar.
Während die Funktion:
f(z) = sign(w*z+b)
sieht aus wie eine Gleichung für eine hyperplane, es unterscheidet sich darin, dass w nicht ein normalen - Vektor- seine Länge ist nicht 1, also der Wert von f(z) ist nicht die Entfernung von der hyperplane, das ist, warum es angegeben ist als-Zeichen(..), um deutlich zu machen der Wert wird nur verwendet, um zu bestimmen, welche Seite des hyperplane die Instanz fällt auf.
Etwas hintergrund:
Das Ziel ist, zu finden, der hyperplane, die Sie gibt die maximale Differenz zwischen zwei Klassen:
So, das Ziel ist die Maximierung der Marge, die variieren in Größe statt.
Dies gibt uns die ur-Optimierungs-problem (mit weiche Ränder):
Scheint dies zu sein, was Sie sich beziehen. Jedoch, diese Gleichung kommt von den grundlegenden weichen maximal margin classifier, der Stiftung des SVM. True SVM ist formuliert als ein Lagrange-dual ermöglichen die Verwendung von kernels. Die nette Sache über SVM ist, dass, wenn die oben genannten problem (und dessen Einschränkungen) sind formuliert in der Lagrange-Funktion, die alle Variablen mit Ausnahme der Lagrange-Multiplikatoren, drop-out, indem Sie uns mit dem folgenden problem:
Beachten Sie, gibt es keine w. Die Ausbildung Punkte x (y sind die Etiketten, 1 oder -1), erscheinen jetzt nur zusammen, wie ein Skalarprodukt, so dass wir uns beschäftigen, die kernel-trick zu erhalten, ein non-lineares Modell.
Aber wenn wir nicht w, was ist unsere Entscheidung-Funktion? Es wird eine Funktion unserer support-Vektoren und die Lagrange-Multiplikatoren wir gefunden.
Dies ist, was libsvm produziert und was es speichert, wie das Modell, das Sie ausgebildet haben. Es speichert die support Vektoren und der damit verbundenen alphas. Für die lineare SVM, erhalten Sie die ursprüngliche w, dies erklärt sich hier in der LibSVM-FAQ, aber es ist nicht das, was Sie bekommen automatisch wieder von LibSVM, und dies kann nur für den linearen kernel.
Den Wert der SVM Entscheidung-Funktion basierend auf der Lagrange-Multiplikatoren und die support-Vektoren sollten nur interpretiert werden, durch seine Zeichen auch.
InformationsquelleAutor karenu
Lesen Sie die Doku sagt mir, dass:
Also für ein zwei-Klassen-Probleme, was Sie bekommen, ist ein Vektor, der die Entscheidung Werte
f(z)
, so bedeutet dies, alles aus der ersten Klasse hat d<0, und alles, was die Zugehörigkeit zu der zweiten Klasse hat d>0.Im Allgemeinen: libsvm hält seine erste Klasse, um das erste label, das es bekommt und so weiter. Also für die zuverlässige Ergebnisse, die Sie brauchen, um Sortieren Sie Ihre Daten zuerst.
Im binären Fall ist dies gilt auch: was auch immer die Etiketten, die Sie füttern svmtrain, es werden die ersten die es trifft, die als Klasse 1, und die zweite in Klasse -1. Dies ist trivial überprüfbar durch die Fütterung von es eine triviale dataset:
Für multi-class-Klassifizierung ist das anders: es enthält dann k(k-1)/2 Einträgen, entsprechend alle einer-gegen-alle-Klasse-Szenarien für jedes pixel.
Dies bedeutet für zB. eine 4. Klasse problem, das Sie haben würden, 4*3/2 = 6 Werte für jede Probe:
Nun, wie diese Funktion Werte anzeigen, um die Klassen durch eine-gegen-alle konnte ich nicht wirklich ableiten, die leicht von einem Blick auf den code... Aber ich denke, du, wo die meisten interessierten in die 2 Klasse Fall jedenfalls, nicht?
Bearbeitet post für weitere Informationen.
Und ich behob einige Fehler, wo ich mis verstanden, die docs mir :s.
So ist die Entscheidung Wert ist f(z), richtig? Und welche Bedeutung könnte ich geben, um eine Entscheidung Wert? Ist der Abstand der B. z aus dem hyperplane (decision boundary)?
Sie können nicht geben keine Bedeutung, um die Entscheidung Wert - es ist ein Wert mit Vorzeichen nur. Wenn der kernel ist linear kann es möglich sein, bestimmen Sie den Abstand von der Entscheidung, die Funktion aber w ist nicht ein normaler Vektor, also, um die Entfernung einige änderungen hätten gemacht zu werden, gibt es auch. IM nicht-linearen Fällen, können Sie nicht bestimmen, ist der Abstand an allen wegen seiner sinnlos in den unteren dimensionalen Raum.
InformationsquelleAutor jpjacobs