Kann SVM Streaming-Lernen für ein Beispiel gleichzeitig durchführen?

33

Ich habe einen Streaming-Datensatz, Beispiele sind einzeln verfügbar. Ich müsste sie in mehreren Klassen klassifizieren. Sobald ich dem Lernprozess ein Trainingsbeispiel gegeben habe, muss ich das Beispiel verwerfen. Gleichzeitig verwende ich auch das neueste Modell, um Vorhersagen für unbeschriftete Daten durchzuführen.

Meines Wissens ist ein neuronales Netzwerk in der Lage, Stream-Lernen durchzuführen, indem Beispiele nacheinander eingespeist und Vorwärtsausbreitung und Rückwärtsausbreitung für das Beispiel ausgeführt werden.

Kann eine SVM jeweils ein Beispiel streamen und das Beispiel sofort verwerfen?

siamii
quelle
2
Die akzeptierte Antwort sollte aktualisiert werden. Es scheint derzeit mehrere Bibliotheken zu geben, die SVM-Online-Lernalgorithmen unterstützen. Vowpal Wabbit hat eine Reduktion für SVM , andere Alternativen sind: Scikit-Learn, Sofia-ml und Rs Kernlab-Paket bietet einige Optionen für Online-Lernen.
Marbel

Antworten:

22

Die Streaming-Einstellung beim maschinellen Lernen wird als "Online-Lernen" bezeichnet. In der Online-Einstellung gibt es keine exakte Support-Vektor-Maschine (da die Definition der Zielfunktion inhärent für die Stapeleinstellung ist). Die wahrscheinlich einfachste Verallgemeinerung des SVM auf die Online-Einstellung sind passiv-aggressive Algorithmen. Der Code ist hier http://webee.technion.ac.il/people/koby/code-index.html und ein zugehöriges Dokument ist hier http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. pdf

Die Grundidee ist, dass man Daten als Paare mit Abfragepunkten wobei ist die Anzahl der Etiketten. Der Algorithmus unterhält eine Gewichtungsmatrix bei Iteration die Algorithmen recieves einen Datenpunkt und dann gibt vorhergesagte Partituren für jedes Etikett und sagt das Etikett mit der höchsten Punktzahl als wahres Etikett voraus. Wenn die Vorhersage falsch ist, nimmt der Algorithmus die kleinste Änderung anxR k W tR k × d t x t y t = W x t W t(x,y)Rd×[k]xRkWtRk×dtxty^t=WxtWtso dass es diesen Fehler in Zukunft vermeiden wird. Die kleinste Änderung wird hier im Sinne der Frobenius-Norm definiert.

Mark S
quelle
1
(+1) Willkommen auf der Seite, Mark.
Kardinal
11

Ich habe immer festgestellt, dass das Framework für implizite Updates (einschließlich der hier in einer anderen Antwort erwähnten passiv-aggressiven Algorithmen) unnötig komplexer ist als das Framework für explizite Updates (ganz zu schweigen davon, dass implizite Updates viel langsamer sein können als die expliziten, es sei denn, a Closed-Form-Lösung für implizites Update verfügbar).

Online Importance Weight Aware Updates ist ein Beispiel für einen expliziten Aktualisierungsalgorithmus auf dem neuesten Stand der Technik, der einfacher, schneller und flexibler ist (Unterstützung mehrerer Verlustfunktionen, mehrfacher Strafen, kostensensitiven Lernens usw.) als seine impliziten Gegenstücke. Die Arbeit befasst sich jedoch nur mit linearen Modellen (lineares SVM entspricht dem Fall der Scharnierverlustfunktion mit quadratischer Strafe).

Da Sie eine Klassifizierung in mehreren Klassen benötigen, besteht ein Ansatz darin, die "Reduktions" -Funktionalität von Vowpal Wabbit (die auf dem Ansatz aus dem Papier aufbaut ) zu verwenden, was leider nicht gut dokumentiert ist.

Jewgeni
quelle
8

LASVM ist eine der beliebtesten Online- Lernvarianten des SVM.

Lineare SVMs können wie jedes lineare Modell auch mit stochastischem Gradientenabstieg trainiert werden.

Fred Foo
quelle
Um es klar zu machen, kann kein lineares Modell mit SGD trainiert werden. Man muss mindestens eine bestimmte Form des Ziels annehmen (additive Verlustfunktion)
lejlot
6

Weitere Informationen finden Sie in der Veröffentlichung SVM Incremental Learning, Adaptation and Optimization , in der eine Online-SVM für die binäre Klassifizierung vorgeschlagen wurde.

Den Code des obigen Papiers finden Sie hier . Im Code werden zwei Arten von Online-Schulungen vorgestellt:

  1. Trainieren Sie die SVM inkrementell für jeweils ein Beispiel, indem Sie svmtrain()und aufrufen
  2. Führen Sie ein Batch-Training durch und erhöhen Sie alle Trainingsbeispiele gleichzeitig durch Aufrufen der Lösung svmtrain2().

Zurück zu Ihrer Frage lautet die Antwort offensichtlich JA, wenn Sie nur ein Beispiel nach dem anderen lernen möchten . Der Code kann auch das Verlernen (Verwerfen) eines Beispiels verarbeiten, dh die genaue und ungefähre LOO-Fehlerschätzung (Leave-One-Out). Die genaue LOO-Fehlerschätzung kann effizient berechnet werden, indem jeweils ein Beispiel verlernt und der Klassifikator getestet wird das Beispiel.

herohuyongtao
quelle
(+1) Willkommen auf unserer Seite!
Whuber
0

Online-Lernen mit Kernels beschreibt das Online-Lernen in allgemeinen Kernel-Einstellungen.

Auszug aus dem Abstract -

" Kernelbasierte Algorithmen wie Support-Vektor-Maschinen haben bei verschiedenen Problemen bei der Stapeleinstellung, bei denen alle Trainingsdaten im Voraus verfügbar sind, beachtliche Erfolge erzielt. Support-Vektor-Maschinen kombinieren den sogenannten Kernel-Trick mit der Idee eines großen Spielraums Diese Methoden werden in einer für Echtzeitanwendungen geeigneten Online-Umgebung nur wenig eingesetzt. In diesem Artikel wird das Online-Lernen in einem reproduzierenden Kernel-Hilbert-Raum unter Berücksichtigung des klassischen stochastischen Gradientenabfalls in einem Merkmalsraum und der Verwendung einiger einfacher Tricks erörtert Wir entwickeln einfache und recheneffiziente Algorithmen für eine Vielzahl von Problemen wie Klassifizierung, Regression und Neuheitserkennung. "

TenaliRaman
quelle