2009-06-12 8 views
5

Der kernbasierte Klassifikator benötigt normalerweise O (n^3) Trainingszeit wegen der Berechnung des inneren Produkts zwischen zwei Instanzen. Um das Training zu beschleunigen, können innere Produktwerte vorberechnet und in einem zweidimensionalen Array gespeichert werden. Wenn jedoch die Nr. der Instanzen ist sehr groß, sagen wir über 100.000, es wird nicht genügend Speicher dafür geben.Kernel-Methoden für große Datasets

Also eine bessere Idee dafür?

+0

Ich habe keine Ahnung, wovon du sprichst. Versteht das hier jemand anders und kann es mir vielleicht erklären? –

+0

'Kernel-basierte Klassifikatoren' sind eine Art maschineller Lernalgorithmus, der auf (Eingabe-> Ausgabe-) Daten trainiert werden kann, um Ausgabewerte für Eingabewerte vorherzusagen, die sie noch nie zuvor gesehen haben. Der Fragesteller ist besorgt, weil die Algorithmen mit der Anzahl der (Eingabe-, Ausgabe-) Paare scheinbar schlecht skalieren. – Stompchicken

Antwort

0

Die Relevance Vector Machine verfügt über einen sequentiellen Trainingsmodus, in dem Sie nicht die gesamte Kernel-Matrix im Speicher behalten müssen. Sie können grundsätzlich eine Spalte nach der anderen berechnen, feststellen, ob sie relevant erscheint, und sie andernfalls wegwerfen. Ich hatte selbst nicht viel Glück damit und das RVM hat noch andere Probleme. Es gibt wahrscheinlich eine bessere Lösung im Bereich der Gaußschen Prozesse. Ich habe mich mit denen nicht wirklich viel unterhalten, aber ich habe einen Online-Algorithmus dafür erwähnt.

0

Ich bin kein numerischer Analytiker, aber ist nicht die QR decomposition, die Sie gewöhnliche kleinste Quadrate lineare Regression auch O (n^3) tun müssen?

Wie auch immer, Sie werden wahrscheinlich die Literatur suchen (da dies ziemlich neu ist) für Online-Lernen oder aktive Lernversionen des Algorithmus, den Sie verwenden. Die allgemeine Idee besteht darin, entweder Daten weit entfernt von Ihrer Entscheidungsgrenze zu verwerfen oder sie gar nicht einzubeziehen. Die Gefahr besteht darin, dass Sie möglicherweise in ein schlechtes lokales Maximum gesperrt werden, und dann ignoriert Ihr Online/Aktiv-Algorithmus Daten, die Ihnen helfen würden, auszusteigen.

1

Für moderne Implementierungen von Support Vector Machines hängt die Skalierung des Trainingsalgorithmus von vielen Faktoren ab, wie z. B. der Art der Trainingsdaten und des verwendeten Kernels. Der Skalierungsfaktor von O (n^3) ist ein analytisches Ergebnis und ist nicht besonders nützlich, um zu prognostizieren, wie sich SVM-Training in realen Situationen skalieren lässt. Zum Beispiel setzen empirische Schätzungen des von SVMLight verwendeten Trainingsalgorithmus die Skalierung gegen die Größe des Trainingssets auf approximately O(n^2).

Ich würde vorschlagen, dass Sie diese Frage in stellen. Ich denke, dass Sie eher eine bessere Antwort bekommen als auf Stack Overflow, das eher eine allgemeine Programmierseite ist.