Was ist die effizienteste Methode zum Trainieren von Daten mit dem geringsten Speicher?

10

Dies sind meine Trainingsdaten: 200.000 Beispiele x 10.000 Funktionen. Meine Trainingsdatenmatrix ist also - 200.000 x 10.000.

Ich habe es geschafft, dies in einer flachen Datei ohne Speicherprobleme zu speichern, indem ich jeden Datensatz einzeln (ein Beispiel nach dem anderen) gespeichert habe, während ich die Funktionen für jedes Beispiel generierte.

Wenn ich jetzt Milch , SVM- Licht oder einen anderen Algorithmus für maschinelles Lernen verwende, versucht alles, die gesamten Trainingsdaten in den Speicher zu laden, anstatt sie einzeln zu trainieren. Ich habe jedoch nur 8 GB RAM, daher kann ich nicht so vorgehen.

Wissen Sie überhaupt, dass ich den Algorithmus Datensatz für Datensatz trainieren könnte? Das heißt, so dass ich zu jedem Zeitpunkt während des Trainings nur einen Datensatz in den Speicher geladen habe.

madCode
quelle
1
Was meinen Sie mit "Speichern Sie jeden Datensatz einzeln?" Meinen Sie "jede Zeile der Daten?" Wenn Sie mehrere Datensätze haben, die Sie einzeln speichern, laden Sie sie nacheinander und passen Sie den Algorithmus an jeden an.
Zach
1
Bedeutet "ein Datensatz nach dem anderen" Zeile für Zeile? Dh ein Datensatz = 10000 Funktionen? Wenn dies der Fall ist, suchen Sie möglicherweise nach Online-Algorithmen, siehe: en.wikipedia.org/wiki/Online_algorithm und en.wikipedia.org/wiki/Online_machine_learning . Es gibt eine Online-Version für viele Algorithmen zum Neigen von Maschinen, zum Beispiel SVM und zufällige Gesamtstrukturen.
Herra Huu
Danke .. Zach und Herra. Ich habe die Frage bearbeitet, um sie nacheinander klarer zu definieren. Und ja, ich habe an Online-Lernen gedacht, aber nie an Online-Algorithmen gedacht. Lassen Sie mich das nachlesen und ausprobieren.
MadCode

Antworten:

4

Ich glaube, der Begriff für diese Art des Lernens ist Out-of-Core- Lernen. Ein Vorschlag ist vowpal wabbit , das eine praktische R-Bibliothek sowie Bibliotheken für viele andere Sprachen enthält.

Zach
quelle
Ich habe Abhängigkeitsprobleme mit Boost während der Installation. Hast du eine Idee, warum ich das bekomme? bit.ly/L939DO
madCode
@madCode Ich habe noch nie vowpal wabbit verwendet, daher kann ich Ihnen nicht helfen, es zu installieren. Ich habe gehört, dass ihre Mailingliste ausgezeichnet ist, und ich bin sicher, dass Sie dort Hilfe beim Einrichten finden können.
Zach
Hey..Zach. Es hat gut funktioniert. Ich habe es installiert und gebe mir sogar Vorhersagen. danke :-)
madCode
1

Ich stimme Zachs Vorschlag von Herzen zu. vowpal wabbit ist eine ausgezeichnete Option, und Sie würden von seiner Geschwindigkeit überrascht sein. Ein 200k x 10k-Datensatz wird nach den Normen von vowpal wabbit nicht als groß angesehen.

vowpal_wabbit (verfügbar in Quellform über https://github.com/JohnLangford/vowpal_wabbit , eine ältere Version ist als Standardpaket im Ubuntu-Universum verfügbar) ist ein schneller linearer + bilinearer Online-Lernender mit sehr flexibler Eingabe. Sie können binäre und numerische Features mischen. Die Features müssen nicht nummeriert werden, da Variablennamen "wie sie sind" funktionieren. Es verfügt über eine Vielzahl von Optionen, Algorithmen, Reduzierungen, Verlustfunktionen und insgesamt eine große Flexibilität. Sie können sich der Mailingliste anschließen (über Github finden) und Fragen stellen. Die Community ist sehr kompetent und unterstützend.

arielf
quelle
1

Ich habe hier eine ähnliche Frage beantwortet . Punkt ist, dass die meisten Algorithmen für maschinelles Lernen / Data Mining Batch-Lernende sind, dh sie laden alle Daten in den Speicher. Daher benötigen Sie für sehr große Datenmengen unterschiedliche Tools. Sehen Sie sich auch die Tools dieser Fragen an.

Online-Lernen ist eine Möglichkeit, den Speicherbedarf von Algorithmen zu verringern.

Atilla Ozgur
quelle