Ich implementiere einen nichtlinearen SVM-Klassifikator mit RBF-Kernel. Mir wurde gesagt, dass der einzige Unterschied zu einer normalen SVM darin bestand, dass ich das Punktprodukt einfach durch eine Kernelfunktion ersetzen musste: Ich weiß, wie eine normale lineare SVM funktioniert, dh nachdem ich das quadratische Optimierungsproblem (doppelte Aufgabe) gelöst habe, berechne ich die optimale Teilungshyperebene als und der Versatz der Hyperebene , wobei eine Liste meiner Trainingsvektoren ist, ihre jeweiligen Bezeichnungen sind ( ),w∗=∑i∈SVhiyixib∗=1
Ich glaube jedoch nicht, dass ich so etwas mit einem RBF-Kernel machen kann. Ich fand einige Materialien, die darauf hindeuten, dass . Das würde es einfach machen. Trotzdem glaube ich nicht, dass eine solche Zerlegung für diesen Kernel existiert und sie wird nirgendwo erwähnt. Ist die Situation so, dass alle Unterstützungsvektoren für die Klassifizierung benötigt werden? Wenn ja, wie klassifiziere ich in diesem Fall?
quelle
Antworten:
Lassen Sie Ihren Eingabebereich darstellen, dh den Bereich, in dem sich Ihre Datenpunkte befinden. Stellen Sie sich eine Funktion so vor, dass sie einen Punkt aus Ihrem Eingabebereich entnimmt und einem Punkt in zuordnet . Nehmen wir nun an, wir haben alle Ihre Datenpunkte von auf diesen neuen Bereich abgebildet . Wenn Sie nun versuchen, das normale lineare svm in diesem neuen Raum anstelle von zu lösen , werden Sie feststellen, dass alle früheren Arbeiten einfach gleich aussehen, außer dass alle Punkte als dargestellt werden ΦX Φ:X→F X F X F F X xi Φ(xi) und anstatt (Punktprodukt) zu verwenden, das das natürliche innere Produkt für den euklidischen Raum ist, ersetzen wir es durch das das natürliche innere Produkt im neuen Raum darstellt . Am Ende würde Ihr so aussehen:xTy ⟨Φ(x),Φ(y)⟩ F w∗
und daher
In ähnlicher Weise ist
und Ihre Klassifizierungsregel sieht folgendermaßen aus: .cx=sign(⟨w,Φ(x)⟩+b)
So weit so gut, es gibt nichts Neues, da wir die normale lineare SVM einfach auf einen anderen Raum angewendet haben. Der magische Teil ist jedoch dieser -
Nehmen wir an, es gibt eine Funktion so dass . Dann können wir alle obigen Punktprodukte durch ersetzen . Ein solches wird als Kernelfunktion bezeichnet. k ( x i , x j ) = ⟨ Φ ( x i ) , Φ ( x j ) ⟩ k ( x i , x j ) kk:X×X→R k(xi,xj)=⟨Φ(xi),Φ(xj)⟩ k(xi,xj) k
Für welche Kernelfunktionen gilt die obige Ersetzung? Nun, das ist eine etwas komplizierte Frage, und Sie möchten vielleicht richtiges Lesematerial aufnehmen, um diese Implikationen zu verstehen. Ich möchte jedoch nur hinzufügen, dass das oben Gesagte für den RBF-Kernel gilt.
quelle