Einklassen-SVM vs. exemplarische SVM


16

Ich verstehe, dass Ein-Klassen-SVMs (OSVMs) ohne Berücksichtigung negativer Daten vorgeschlagen wurden und dass sie nach Entscheidungsgrenzen suchen, die eine positive Menge und einen negativen Ankerpunkt, beispielsweise den Ursprung, trennen.

Eine Arbeit aus dem Jahr 2011 schlägt beispielhafte SVMs (ESVMs) vor, die einen "einzelnen Klassifikator pro Kategorie" ausbilden, der sich von OSVMs insofern unterscheiden soll, als ESVMs nicht "das Abbilden der Exemplare in einen gemeinsamen Merkmalsraum erfordern, über den sich ein Ähnlichkeitskern befinden kann berechnet ". Ich verstehe nicht ganz, was dies bedeutet und wie sich ESVMs von OSVMs unterscheiden. Und wie unterscheiden sie sich? Und wie wird diese Ähnlichkeitskernberechnung in ESVMs vermieden?

Antworten:


20

(Vielleicht möchten Sie sich zuerst die "Tabelle" unten ansehen.)

Beginnen wir mit den "klassischen" Support-Vektor-Maschinen. Diese lernen, zwischen zwei Kategorien zu unterscheiden. Sie sammeln einige Beispiele für Kategorie A, einige für Kategorie B und übergeben sie beide an den SVM-Trainingsalgorithmus, der die Linie / Ebene / Hyperebene ermittelt, die A am besten von B trennt Sie möchten zwischen genau definierten und sich gegenseitig ausschließenden Klassen unterscheiden: Männer gegen Frauen, die Buchstaben des Alphabets und so weiter.

Angenommen, Sie möchten stattdessen "A" identifizieren. Sie könnten dies als ein Klassifizierungsproblem behandeln: Wie unterscheide ich "A" von "Nicht-A". Es ist ziemlich einfach, ein Trainingsset mit Hundebildern zusammenzustellen, aber was sollte in Ihr Trainingsset mit Nicht-Hunden passen? Da es unendlich viele Dinge gibt, die keine Hunde sind, kann es schwierig sein, ein umfassendes und dennoch repräsentatives Trainingsset für alle nicht-Hundeartigen Dinge zu erstellen. Stattdessen können Sie einen Ein-Klassen-Klassifikator verwenden. Der herkömmliche Klassifikator mit zwei Klassen findet eine (Hyper-) Ebene, die A von B trennt. Die SVM mit einer Klasse findet stattdessen die Linie / Ebene / Hyperebene, die alle Punkte der Klasse (die "A") vom Ursprung trennt ;

Das Ensemble SVM "System" ist eigentlich eine Sammlung von zwei SVM "Untereinheiten". Jede Untereinheit wird mit einer einzigen trainiertpositives Beispiel für eine Klasse und eine enorme Sammlung negativer Beispiele für die andere. Anstatt also Hunde gegen Nichthundebeispiele (Standard-SVM mit zwei Klassen) oder Hunde gegen Herkunft (SVM mit einer Klasse) zu unterscheiden, unterscheidet jede Untereinheit zwischen spezifischen Hunden (z. B. "Rex") und vielen Nichthunden Beispiele. Individuelle SVMs für Untereinheiten werden für jedes Beispiel der positiven Klasse trainiert, sodass Sie eine SVM für Rex, eine für Fido und eine weitere für den Hund Ihres Nachbarn haben, der um 6 Uhr morgens bellt, und so weiter. Die Ausgaben dieser SVMs für Untereinheiten werden kalibriert und kombiniert, um zu bestimmen, ob ein Hund, nicht nur eines der spezifischen Beispiele, in den Testdaten erscheint. Ich denke, Sie könnten sich die einzelnen Untereinheiten auch als SVMs einer Klasse vorstellen, bei denen der Koordinatenraum so verschoben ist, dass das einzige positive Beispiel im Ursprung liegt.

Zusammenfassend sind die wichtigsten Unterschiede:

Trainingsdaten

  • Zwei Klassen SVM: Positive und negative Beispiele
  • Eine Klasse SVM: Nur positive Beispiele
  • Ensemble SVM "System": Positive und negative Beispiele. Jede Untereinheit wird auf ein einziges positives Beispiel und viele negative Beispiele trainiert.

Anzahl der Maschinen

  • SVM mit zwei Klassen: eine
  • Eine Klasse SVM: Eins
  • Ensemble SVM "System": viele (eine Untereinheit Maschine pro positives Beispiel)

Beispiele pro Klasse (pro Maschine)

  • SVM mit zwei Klassen: viele / viele
  • Eine Klasse SVM: viele / eine (am Ursprung festgelegt)
  • Ensemble SVM "System": viele / viele
  • Ensemble SVM "Subunit": eins / viele

Nachbearbeitung

  • SVM mit zwei Klassen: Nicht erforderlich
  • Ein-Klassen-SVM: Nicht erforderlich
  • Ensemble SVM: Wird benötigt, um die Ausgabe jeder SVM zu einer Vorhersage auf Klassenebene zusammenzuführen.

Nachtrag: Sie hatten gefragt, was sie unter "[anderen Ansätzen] verstehen, wenn die Exemplare in einen gemeinsamen Merkmalsraum abgebildet werden sollen, über den ein Ähnlichkeitskern berechnet werden kann". Ich denke, sie bedeuten, dass eine traditionelle SVM mit zwei Klassen unter der Annahme funktioniert, dass sich alle Mitglieder der Klasse irgendwie ähnlich sind, und deshalb möchten Sie einen Kernel finden, der große Dänen und Dachsunde nahe beieinander, aber weit entfernt von allem anderen platziert. Im Gegensatz dazu umgeht das SVM-System des Ensembles dies, indem es etwas als Hund bezeichnet, wenn es ausreichend dänen- ODER dachsund- ODER pudelartig ist, ohne sich Gedanken über die Beziehung zwischen diesen Exemplaren zu machen.


Vielen Dank für die tolle und umfassende Antwort. Nur um es klar zu sagen: An einigen Stellen meinen Sie tatsächlich "Ensemble" von beispielhaften SVMs, an anderen "exemplarischen" SVMs? Ich denke, um fair zu sein, sollte es einen Vergleich mit entweder (1) einem EINZELNEN OSVM mit einem EINZELNEN ESVM oder (2) EINZELNEN OSVM mit EINZELNEN ESVM geben.
Bjou

Ich hoffe, es ist nicht zu ungewöhnlich zu fragen, wie gut sich dies auf mehrere Klassen verallgemeinern lässt. Wenn ich Katzen, Hunde und Vögel habe, erfordert das esvm dann ein "Element" SVM für Fido gegen jede Katze UND ein "Element" SVM für Fido gegen jeden Vogel? Wenn ich 10 Datenpunkte für jede von 3 Kategorien hätte, würde das bedeuten, dass ich 20 SVM-Elemente pro "Hund" oder ein Ensemble aus 200 Elementen hätte? Was ist, wenn ich 300 Datenpunkte und 20 Dimensionen oder 50.000 Datenpunkte und 50.000 Dimensionen habe? Wenn ich eine zufällige Gesamtstruktur von SVMs erstellen würde, könnte ich dann zufällige Teilmengen verwenden, um die Auswirkung des "Fluches der Dimenionalität" zu verringern?
EngrStudent - Wiedereinsetzung von Monica 08.07.13

@bjou, ich war ein bisschen schlampig mit der ESVM-Terminologie, also ging ich zurück und räumte auf. Man könnte sich eine "Untereinheit" des ESVM-Systems wie eine OSVM vorstellen, mit der Ausnahme, dass das Koordinatensystem neu zentriert wurde, sodass das positive Beispiel am Ursprung liegt.
Matt Krause

1
@EngrStudent, es verallgemeinert eigentlich sehr schön. In der Arbeit verwenden sie die Pascal VOC-Task mit ~ 20 Kategorien. Um unser Tierbeispiel zu erweitern, hätten Sie eine Untereinheit für "Fido" vs. (alle Vögel, Katzen und Fische), eine weitere Untereinheit für "Rex" vs. alle Nicht-Hunde und so weiter für jeden Hund. Für die Vögel würden Sie "Tweety" gegen (alle Katzen, Hunde, Fische), "Polly" gegen alle Nicht-Vögel und so weiter trainieren. Es würde auch eine Untereinheit für jedes Katzen- und Fischbeispiel geben, die gegen alle Nichtkatzen bzw. Nichtfische trainiert wird. Sie erhalten 1 SVM pro beschriftetem Beispiel, unabhängig von der Anzahl der Klassen.
Matt Krause

Es klingt wie ein Cousin von Boosting (im Sinne von Gradienten-Boosted-Bäumen). Ist das Ensemble fehlergewichtet oder gleichmäßig gewichtet?
EngrStudent

2

Kurz gesagt, das ESVM-Modell ist ein Ensemble von SVMs, die darauf trainiert sind, jedes einzelne Trainingssatzelement von allen anderen zu unterscheiden, während OSVM ein Ensemble von SVMs ist, die darauf trainiert sind, jede Teilmenge von Trainingselementen zu unterscheiden, die zu einer Klasse gehören. Wenn Sie also 300 Katzen- und 300 Hundebeispiele im Trainingsset haben, erstellt die ESVM 600 SVMs für jeweils ein Haustier, während die OSVM zwei SVMs erstellt (erstens für alle Katzen, zweitens für alle Hunde).

Auf diese Weise muss ESVM keinen Raum finden, in dem die gesamte Klasse gruppiert wird, sondern einen Raum, in dem dieses einzelne Element ein Ausreißer ist, was wahrscheinlich einfacher ist und zu einer hohen Genauigkeit führt. Rückruf soll vom Ensemble geleistet werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.