Welchen SVM-Kernel soll für ein binäres Klassifizierungsproblem verwendet werden?

9

Ich bin ein Anfänger, wenn es darum geht, Vektormaschinen zu unterstützen. Gibt es Richtlinien, die besagen, welcher Kernel (z. B. linear, polynomial) für ein bestimmtes Problem am besten geeignet ist? In meinem Fall muss ich Webseiten danach klassifizieren, ob sie bestimmte Informationen enthalten oder nicht, dh ich habe ein Problem mit der binären Klassifizierung.

Können Sie allgemein sagen, welcher Kernel für diese Aufgabe am besten geeignet ist? Oder muss ich mehrere davon in meinem spezifischen Datensatz ausprobieren, um den besten zu finden? Übrigens verwende ich die Python-Bibliothek scikit-learn , die die libSVM-Bibliothek verwendet.

pemistahl
quelle
Wie repräsentieren Sie Ihre Webseiten? Tasche voller Worte? Die Wahl des Kernels hängt von dem Ähnlichkeitsmaß ab, das Sie in Ihrem Eingabebereich wünschen.
Memming
@Memming Ja, ich verwende eine Wortsack-Darstellung. Was genau meinst du mit Ähnlichkeitsmaß? Ich untersuche, ob eine Webseite bestimmte Informationen enthält oder nicht.
Pemistahl
Sie können dieses Tutorial nützlich finden, wenn Sie es noch nicht überprüft haben ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Libsvm verfügt über ein integriertes k-faches Kreuzvalidierungsschema zur Auswahl zwischen Modellen und Modellparametern.
Zoran
@PeterStahl Es hängt auch davon ab, welche Art von Klassengrenzen Sie erwarten. Ich habe keine Erfahrung mit dem Raum der Wortsäcke, daher kann ich Ihnen nicht viel helfen.
Memming

Antworten:

10

Sie sind tatsächlich auf eine offene Frage in der Literatur gestoßen. Wie Sie sagen, gibt es eine Vielzahl von Kerneln (z. B. lineare, radiale Basisfunktion, Sigmoid, Polynom), die Ihre Klassifizierungsaufgabe in einem durch ihre jeweiligen Gleichungen definierten Raum ausführen. Meines Wissens hat niemand definitiv gezeigt, dass ein Kernel bei einer Art von Textklassifizierungsaufgabe im Vergleich zu einer anderen immer die beste Leistung erbringt.

Eine zu berücksichtigende Sache ist, dass jede Kernelfunktion einen oder mehrere Parameter hat, die für Ihren Datensatz optimiert werden müssen. Wenn Sie dies richtig machen, sollten Sie eine zweite Hold-Out-Trainingssammlung haben, auf der Sie arbeiten können Untersuchen Sie die besten Werte für diese Parameter. (Ich sage eine zweite Hold-Out-Sammlung, weil Sie bereits eine haben sollten, mit der Sie die besten Eingabefunktionen für Ihren Klassifikator herausfinden.) Ich habe vor einiger Zeit ein Experiment durchgeführt, in dem ich jede von ihnen in großem Maßstab optimiert habe Diese Parameter für eine einfache Textklassifizierungsaufgabe stellten fest, dass jeder Kernel eine einigermaßen gute Leistung zu erbringen schien, dies jedoch bei unterschiedlichen Konfigurationen. Wenn ich mich richtig an meine Ergebnisse erinnere, hat Sigmoid die beste Leistung erbracht, dies jedoch bei sehr spezifischen Parametereinstellungen - bei denen ich über einen Monat gebraucht habe, bis meine Maschine sie gefunden hat.

Kyle.
quelle
Vielen Dank für Ihre Gedanken. Entschuldigung für meine späte Reaktion. Ich schreibe gerade meine Masterarbeit, für die ich die Ergebnisse für mehrere Klassifikatoren auswerten muss, nicht nur für SVM. Leider habe ich keine Zeit, viele Parameterkombinationen zu testen. Deshalb werde ich mich wahrscheinlich an den linearen Kernel halten.
Pemistahl
Viel Glück! Ich denke, das ist ein guter Anruf.
Kyle.
7

Probieren Sie den Gaußschen Kernel aus.

Der Gaußsche Kernel wird oft zuerst ausprobiert und erweist sich in vielen Anwendungen als der beste Kernel (auch mit Ihren Funktionen für viele Wörter). Sie sollten auch den linearen Kernel ausprobieren. Erwarten Sie keine guten Ergebnisse. Textklassifizierungsprobleme sind in der Regel nicht linear. Aber es gibt Ihnen ein Gefühl für Ihre Daten und Sie können sich darüber freuen, wie sehr die Nichtlinearität Ihre Ergebnisse verbessert.

Stellen Sie sicher, dass Sie Ihre Kernelbreite ordnungsgemäß über Kreuz validieren und überlegen, wie Sie Ihre Funktionen normalisieren möchten (tf-idf usw.).

Ich würde sagen, Sie können Ihre Ergebnisse mit einer besseren Feature-Normalisierung mehr verbessern als mit der Auswahl eines anderen Kernels (dh nicht des Gaußschen).

flxb
quelle