Einstufung mit Tall Fat-Daten


15

Ich muss auf meinem Laptop einen linearen Klassifikator mit hunderttausenden Datenpunkten und etwa zehntausenden Funktionen trainieren. Welche Möglichkeiten habe ich? Was ist der Stand der Technik für diese Art von Problem?

Der stochastische Gradientenabstieg scheint eine vielversprechende Richtung zu sein, und ich bin der Meinung, dass dies auf dem neuesten Stand ist:

"Pegasos: Primal Estimated sub-GrAdient SOlver für SVM" Shai Shalev-Shwartz, Yoram Sänger, Nathan Srebro, Andrew Cotter. "Mathematische Programmierung, Serie B, 127 (1): 3-30, Jahr: 2007."

Ist das der Konsens? Sollte ich in eine andere Richtung schauen?


1
Haben Sie darüber nachgedacht, einige Methoden zur Dimensionsreduzierung einzusetzen? Tausende von Features fordern eine Dimensionsreduktion: en.wikipedia.org/wiki/Dimension_reduction
Dov

Diese Frage könnte mit Forschungsaufwand verbessert werden. Hast du irgendwelche Techniken im Sinn?
Tamzin Blake

@Thom Blake: Ich habe die Frage mit meinen Gedanken ein wenig bearbeitet.
Carlosdc

Ohne mehr über die Daten zu wissen, wäre jede Antwort uninformiert. Ist es spärlich? kontinuierlich? diskret? redundante Features / Objekte? wie viele klassen? Zum Beispiel kann PCA für spärliche Daten manchmal schädlich sein.
Cyborg

2
groß = viele Punkte? Fett = viele Funktionen? wird diese std-terminologie irgendwo in refs verwendet?

Antworten:


6

Ich denke, Sie sollten sich die Online-Lernmethoden ansehen . Das Perzeptron und das Kernel-Perzeptron sind extrem einfach zu codieren und funktionieren in der Praxis sehr gut, und es gibt eine ganze Reihe weiterer Online-Methoden. Beachten Sie, dass jede Online-Lernmethode in einen Batch-Lernalgorithmus umgewandelt werden kann. In diesem Fall ähneln sie stark den stochastischen Gradientenabstiegsmethoden.

Wenn Sie Matlab verwenden, gibt es eine wirklich schöne Toolbox namens DOGMA von Francesco Orabona, die eine Reihe von Online-Lernalgorithmen enthält, und Sie können damit einige verschiedene Methoden bewerten. Ich habe dies in einigen meiner Nachforschungen verwendet und fand es sehr nützlich (beachte, dass, soweit ich mich erinnere, die Daten als [features x examples] erwartet werden, so dass du sie möglicherweise umsetzen musst).

Wie andere bereits erwähnt haben, möchten Sie möglicherweise die Dimensionsreduzierung ausprobieren. PCA ist hier möglicherweise keine so gute Option, da Sie die Kovarianzmatrix berechnen müssen, was sehr kostspielig sein wird. Sie könnten versuchen, zufällige Projektionen zu betrachten . Die Theorie ist hart, aber das Prinzip ist sehr einfach. Es basiert auf der Johnson-Lindenstrauss Lemma , wenn Sie daran interessiert ist , aber die Grundidee ist , dass , wenn Sie zufällig auf einen niedrigeren dimensionalen Raum projizieren, dann Abstände zwischen den Punkten sind bis zu einem gewissen erhalten bis ε . Wenn Sie einen RBF-Kernel verwenden, sind 2 Entfernungen alles , woran Sie interessiert sind!2ϵ2


7

Zunächst möchte ich Sie fragen, woher Sie wissen, dass ein linearer Klassifikator die beste Wahl ist. Intuitiv ist es für einen so großen Raum (R ^ 10000) möglich, dass ein anderer nichtlinearer Klassifikator die bessere Wahl ist.

Ich schlage vor, dass Sie mehrere verschiedene Klassifikatoren ausprobieren und die Vorhersagefehler beobachten (ich würde mehrere regulierte Klassifikationsmodelle ausprobieren).

Wenn Ihnen der Speicher ausgeht, reduzieren Sie die Dimension mithilfe von PCA


2
Vielen Dank. Ich dachte mehr darüber nach, wie ich mit dem Ausmaß des Problems umgehen sollte. Ich wollte zunächst linear arbeiten, weil es einfacher ist. Ich denke, Sie schlagen eine kernelbasierte Methode vor. Lassen Sie mich nur darauf hinweisen, dass die Kernelmatrix bei 750000 Datenpunkten eine Größe von 540 GB hat. Die Antwort kann also nicht lauten: Schließen Sie es an LIBSVM / SVMLight / etc an, und holen Sie sich ein gutes C und Gamma und sehen Sie, was Sie bekommen.
Carlosdc

2
(-1) Die Antwort ist a) teilweise so allgemein, dass sie auf jede Klassifizierungsfrage angewendet werden kann. B) Es wird nicht erklärt, warum PCA empfohlen wird (gegenüber jeder anderen Dimensionierungsreduktionstechnik).
Steffen


1

Wie von jb vorgeschlagen, halte ich es für besser, eine "Dimensionsreduktions" -Methode zu verwenden. Prinzipielle Komponentenanalyse (PCA) ist eine beliebte Wahl. Sie können auch unbeaufsichtigte Lerntechniken ausprobieren. Weitere Informationen zum unbeaufsichtigten Lernen von Features finden Sie unter http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial


1
PCA nicht PAC;) ( 15 Zeichen )
Neuron
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.