RBF SVM-Anwendungsfälle (vs. logistische Regression und zufällige Gesamtstruktur)

10

Support Vector Machines mit Radial-Base-Funktionskernel ist ein universell beaufsichtigter Klassifikator.

Obwohl ich die theoretischen Grundlagen für diese SVMs und ihre Stärken kenne, sind mir keine Fälle bekannt, in denen sie die bevorzugte Methode sind. Gibt es also eine Klasse von Problemen, bei denen RBF-SVMs anderen ML-Techniken überlegen sind? (Entweder in Bezug auf Punktzahl oder andere - wie Robustheit, Leichtigkeit beim Starten, Interpretierbarkeit usw.)

Ich frage, da sich mein Standardansatz auf logistische Regression (möglicherweise mit einigen Interaktionen), zufällige Gesamtstruktur und ein bisschen neuronale Netze konzentriert. Keiner meiner Freunde, die ML machen (einige sind Kaggle-Gewinner), ist ein SVM-Benutzer (aber es kann ein Artefakt meiner Community sein oder die Probleme, mit denen sie sich befassen).

Piotr Migdal
quelle

Antworten:

8

Ich werde versuchen, diese Frage mit einer Kombination aus veröffentlichten Beweisen, persönlicher Erfahrung und Spekulation zu beantworten.

A) Veröffentlichte Beweise.

Das einzige mir bekannte Papier, das bei der Beantwortung der Frage hilft, ist Delgado et al. 2014 - Brauchen wir Hunderte von Klassifikatoren, um Probleme bei der Klassifizierung in der realen Welt zu lösen? - JMLR, das Hunderte verschiedener Algorithmen und Implementierungen auf 121 Datensätzen für UCI ausführt. Sie stellen fest, dass RBF SVM zwar nicht der "beste" Algorithmus ist (es sind zufällige Wälder, wenn ich mich richtig erinnere), aber zu den Top 3 (oder 5) gehört.

Wenn Sie bedenken, dass ihre Auswahl von Datensätzen eine "gute Stichprobe" von Problemen der realen Welt ist, dann ist SVM definitiv ein Algorithmus, der bei neuen Problemen ausprobiert werden sollte, aber man sollte zuerst zufällige Gesamtstruktur ausprobieren!

Die Grenzen für die Verallgemeinerung dieses Ergebnisses liegen darin, dass die Datensätze fast alle groß und dünn sind (n >> p), nicht sehr dünn - was ich spekuliere, sollte für RF eher ein Problem sein und nicht sehr groß (sowohl n als auch p).

Schließlich empfehle ich nach den veröffentlichten Erkenntnissen zwei Websites, die unterschiedliche Implementierungen zufälliger Wälder vergleichen:

B) Persönliche Erfahrung.

Ich glaube, dass Papiere wie Delgado et al. Sehr wichtig für die Community des maschinellen Lernens sind, deshalb habe ich versucht, ihre Ergebnisse unter verschiedenen Bedingungen zu replizieren. Ich habe 15 verschiedene Algorithmen für mehr als 100 binäre Datensätze ausgeführt (aus Delgados Datensatz). Ich glaube auch, dass ich bei der Auswahl der Hyperparameter vorsichtiger war als sie.

Mein Ergebnis ist, dass die SVM der "beste Algorithmus" war (mittlerer Rang 4,9). Ich gehe davon aus, dass SVM RF bestanden hat, da der ursprüngliche Datensatz viele Probleme mit mehreren Klassen enthielt - die ich im Spekulationsteil erörtern werde -, sollte ein Problem für SVM sein.

EDIT (16. Juni):

Aber RF ist viel schneller und es war der zweitbeste Algorithmus (mittlerer Rang 5,6), gefolgt von gbm (5,8), nnets (7,2) und so weiter. Ich habe bei diesen Problemen keine standardmäßige logistische Regression versucht, aber ich habe ein elastisches Netz (L1 und L2 reguliertes LR) ausprobiert, aber es hat keine gute Leistung erbracht (mittlerer Rang 8,3) ~

Ich habe die Analyse der Ergebnisse oder das Schreiben des Papiers noch nicht abgeschlossen, daher kann ich nicht einmal auf einen technischen Bericht mit den Ergebnissen verweisen. Hoffentlich kann ich diese Antwort in einigen Wochen erneut bearbeiten und auf einen technischen Bericht mit den Ergebnissen verweisen.

Das Papier ist unter http://arxiv.org/abs/1606.00930 verfügbar. Es stellt sich heraus, dass RF und SVM nach der vollständigen Analyse hinsichtlich der erwarteten Fehlerrate nahezu gleichwertig sind und SVM am schnellsten ist (zu meiner Überraschung !!). Ich empfehle RF nicht mehr so ​​nachdrücklich (aus Geschwindigkeitsgründen).

Meine persönliche Erfahrung ist also, dass SVM zwar ein bisschen mehr Genauigkeit bringt, es aber fast immer eine bessere Wahl ist, eine RF zu verwenden.

Auch bei größeren Problemen kann es unmöglich sein, einen Batch-SVM-Solver zu verwenden (ich habe noch nie einen Online-SVM-Solver wie LASVM oder andere verwendet).

Schließlich habe ich nur in einer Situation die logistische Regression verwendet. Ich habe ein "intensives" Feature-Engineering für ein Bildklassifizierungsproblem durchgeführt (z. B. - zwei verschiedene Beschreibungen des Bildes kombinieren oder nicht und die Dimensionalität der Beschreibungen). Und ich habe die logistische Regression verwendet, um unter den vielen Alternativen auszuwählen (da es in LR keine Hyperparametersuche gibt). Sobald wir uns für die besten Merkmale entschieden haben (gemäß LR), haben wir eine RF (Auswahl der besten Hyperparameter) verwendet, um den endgültigen Klassifikator zu erhalten.

C) Spekulation

Ich habe noch nie ernsthaft an Problemen mit mehreren Klassen gearbeitet, aber ich habe das Gefühl, dass SVM nicht so gut darin ist. Das Problem ist nicht das Problem zwischen Eins-gegen-Eins- oder Eins-gegen-Alle-Lösungen, sondern dass alle mir bekannten Implementierungen für alle (OVO- oder OVA-) Klassifizierer dieselben Hyperparameter verwenden. Die Auswahl der richtigen Hyperparameter für SVM ist so kostspielig, dass keine der mir bekannten Standardimplementierungen nach den einzelnen Klassifizierern sucht. Ich spekuliere, dass dies ein Problem für SVM ist (aber kein Problem für RF !!).

Andererseits würde ich bei Problemen mit mehreren Klassen direkt zu RF gehen.

Jacques Wainer
quelle
Eine gute Antwort! Haben Sie zufällig einen Blog-Beitrag, ein Notizbuch oder ein Skript zu Ihrer Replikation des Experiments von Delgado et al? (Das Optimieren von Parametern und Skalieren von Variablen ist normalerweise genauso wichtig wie die Auswahl eines Algorithmus. Ohne diese ist es daher schwierig, starke Aussagen über die Überlegenheit des Algorithmus zu machen.)
Piotr Migdal
25,20,25,210,215215,210.5,26,21.5,230.5,1,2p
0

Ich habe nicht genügend Berechtigungen, um Kommentare schreiben zu können, daher werde ich hier nur meine Eingaben / Beobachtungen als Antwort geben.

Nach meiner Erfahrung sind Support Vector Classifiers (SVC) entweder gleich oder übertreffen die anderen Methoden, wenn die Binärklassen ausgeglichen sind. Bei unausgeglichenen Klassen schneidet SVC tendenziell schlecht ab.

Ich beschäftige mich nicht oft mit Problemen mit mehreren Klassen, aber ich habe mit SVC auch bei Problemen mit mehreren Klassen einige gute Ergebnisse erzielt.

Eine andere Sache, die mir aufgefallen ist, ist, dass der Fluch der Dimentionalität SVC nicht so sehr zu beeinflussen scheint wie andere Modellierungstechniken. Mit anderen Worten, wenn ich mehr Begriffe in das Modell einfüge, beginnen die anderen Techniken im Vergleich zum Trainingssatz schlecht mit dem Test- (oder Holdout-) Satz zu arbeiten. Aber nicht so sehr, wenn ich SVC benutze. Aus diesem Grund ist SVC möglicherweise die bessere Option, wenn Modellsparsamkeit nicht Ihre Priorität ist, da Sie viele Begriffe einfügen können, ohne so viel Überanpassung wie die anderen Methoden.

Eines der Probleme, die ich mit SVC habe, ist, dass es nicht implizit ein Maß (wie die vorhergesagte Wahrscheinlichkeit) liefert, um die Beobachtungen in eine Rangfolge bringen zu können. Sie könnten Platt Scaling verwenden (implementiert im Paket sklearn.svm in Python), aber ich habe einige Inkonsistenzen festgestellt. (Ich kann die Details teilen, wenn jemand interessiert ist.)

Ich bin mir nicht sicher, ob dies Ihre Frage wirklich beantwortet, aber dies sind meine Beobachtungen. Hoffentlich hilft das.

Vishal
quelle
0

RF und (RBF) SVM haben unterschiedliche Theorien, aber vorausgesetzt, Sie haben genügend Daten, funktionieren sie ähnlich gut. Beide können komplexe Funktionen erlernen und gut mit verrauschten und nicht informativen Variablen und Ausreißern umgehen.

Wenn Sie versuchen, die besten Ergebnisse für so etwas wie ein Kaggle zu erzielen, würden Sie ohnehin mehrere Modelle zusammenstellen, einschließlich RF und SVM.

In Nicht-Kaggle-Einstellungen können Sie überlegen, wie schwierig es ist, das Modell zu implementieren, es in Produktion zu bringen, eine Vorhersage zu treffen, es zu interpretieren, es einem Manager zu erklären usw.

SVM (linearer oder stark regulierter RBF) wäre auf jeden Fall vorzuziehen, wenn Sie über eine geringe Datenmenge verfügen oder sich mit einem Verlauf der Dimensionalität befassen. Es gibt mehrere Gründe dafür. Einer ist, dass es besser ist, nach einer Hyperebene mit maximalem Rand zu suchen, als nach einer Reihe der besten Teilungen für Ihre Features. Außerdem ist normalerweise keine komplexe Grenze erforderlich, da im hochdimensionalen Raum eine Hyperebene vorhanden ist kann die Daten trotzdem trennen. Ein weiteres Problem ist, dass RF schwieriger abzustimmen ist (mehr Parameter abzustimmen sind), sodass Sie mehr Daten benötigen.

Ein anderer Gedanke ist, dass die Kreuzvalidierung für SVM, insbesondere für LOOCV, sehr billig und schnell sein kann. Da nur wenige Stichproben Unterstützungsvektoren sind (nicht immer), müssen Sie Ihren Klassifikator nicht bei jeder Falte neu trainieren, sondern nur dann, wenn die Daten, die jetzt im Testsatz enthalten sind, zuvor Unterstützungsvektoren waren. Dies kann auch das Online-Lernen erleichtern.

Außerdem ist es möglicherweise billiger, Unterstützungsvektoren als vollständige Bäume zu speichern.

Ist oft besser probabilistisches Modell als Klassifikator zu machen. Treffen Sie also zuerst das Modell und später die Entscheidung. In diesem Fall wird eine logistische Regression bevorzugt. Und Sie können weiterhin Kernel und Regularisierung verwenden, damit es sich so verhält, wie Sie es möchten. Sie werden RF auch nicht verwenden, um Fragen zu beantworten wie: Korrektur von Alter, Lebensstil, Geschlecht und Bildung, erhöht Alkoholkonsum die Wahrscheinlichkeit, dass ein Herzinfarkt gefärbt wird?

Einige zusätzliche Ressourcen, die ich interessant fand: https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/

rep_ho
quelle