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.
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle