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.
classification
svm
model-selection
libsvm
kernel-trick
pemistahl
quelle
quelle
Antworten:
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.
quelle
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).
quelle