Mit dem begrenzten Wissen, das ich über SVM habe, ist es gut für eine kurze und fette Datenmatrix (viele Funktionen und nicht zu viele Instanzen), aber nicht für Big Data.
Ich verstehe einen Grund dafür, dass die Kernel-Matrix eine n × n- Matrix ist, wobei n die Anzahl der Instanzen in den Daten ist. Wenn wir sagen, 100K Daten, die Kernmatrix K wird 10 10 Elemente und kann ~ 80G Erinnerungen nehmen.
Gibt es eine Modifikation von SVM, die in großen Datenmengen verwendet werden kann? (Sagen wir auf der Skala von 100K bis 1M Datenpunkten?)
machine-learning
svm
large-data
Haitao Du
quelle
quelle
Antworten:
Wie Sie bereits erwähnt haben, erfordert das Speichern der Kernelmatrix einen Speicher, der quadratisch mit der Anzahl der Datenpunkte skaliert. Die Trainingszeit für herkömmliche SVM-Algorithmen skaliert auch superlinear mit der Anzahl der Datenpunkte. Daher sind diese Algorithmen für große Datenmengen nicht durchführbar.
Ein Ansatz zur Kernnäherung verwendet die Nyström-Näherung (Williams und Seeger 2001). Dies ist eine Möglichkeit, die Eigenwerte / Eigenvektoren einer großen Matrix unter Verwendung einer kleineren Submatrix zu approximieren. Ein anderer Ansatz verwendet zufällige Merkmale und wird manchmal als "zufällige Küchenspülen" bezeichnet (Rahimi und Recht 2007).
Ein weiterer Trick zum Trainieren von SVMs für große Datenmengen besteht darin, das Optimierungsproblem mit einer Reihe kleinerer Teilprobleme zu approximieren. Zum Beispiel ist die Verwendung eines stochastischen Gradientenabfalls für das ursprüngliche Problem ein Ansatz (unter vielen anderen). An der Optimierungsfront wurde viel Arbeit geleistet. Menon (2009) gibt eine gute Umfrage.
Verweise
Williams und Seeger (2001). Verwenden der Nystroem-Methode zum Beschleunigen von Kernel-Computern.
Rahimi und Recht (2007). Zufällige Funktionen für große Kernelmaschinen.
Menon (2009) . Große Support-Vektor-Maschinen: Algorithmen und Theorie.
quelle