2016-08-23 7 views
1

Ich mache multinomiale Regression mit Glmnet in Matlab, und habe einen Datensatz, der etwa 6-10GB ist, je nachdem, wie groß ich den Test gesetzt habe. Ich bin in der Lage, es in den Speicher zu laden, aber es scheint, dass glmnetmex nicht in der Lage ist, den gesamten Datensatz für größere Trainingsgrößen zu behandeln (z. B. eins auslassen). Ich vermute, es sollte eine Möglichkeit geben, die Eingaben in glmnetmex zu chargen, aber ich kann es nicht in der Dokumentation finden. Existiert es oder haben Sie Empfehlungen, wie Sie sonst vorgehen? Mir geht es gut, anstatt die R-Version zu verwenden, wenn es eine Möglichkeit der Adressierung dieses ProblemGlmnet Batching übergroßen Datensatz

+0

Warten Sie, verwenden Sie R oder Matlab? –

+0

Ich benutze Matlab, aber unter der Haube ist Glmnetmex Fortran. Wenn entweder die Matlab- oder die R-Version von glmnet damit umgehen kann, bin ich mit beiden Implementierungen (vorzugsweise Matlab) in Ordnung. Ich werde das in der Frage klarer machen. –

Antwort

0

der Lage zu füttern Chargen ein Verfahren erfordert zwei Dinge hat:

  • Fähigkeit, den Lernalgorithmus mit einer früheren fit zu initialisieren
  • Fähigkeit des Lernalgorithmus für eine begrenzte Anzahl von Iterationen

glmnet weist diese aber leider nicht ersterem laufen. Ich denke, Sie haben mehrere Optionen für die Annäherung an das Problem:

  • Finden Sie eine bessere Maschine. Sie können einen der Cloud-Dienste in Erwägung ziehen, wenn Ihre finanziellen Ressourcen dies zulassen.
  • In den Code glmnet eingravieren. Sowohl die MATLAB- als auch die R-Pakete sind Wrapper für den eigentlichen Optimierer, der in FORTRAN geschrieben ist. Beide Wrapper führen eine Neuinitialisierung der Modellvariablen durch, bevor sie an den Fortran-Solver übergeben werden. Sie können versuchen, es zu ändern, um ein vorberechnetes Modell zu verwenden.
  • Sie können einen Ensemble-Prädiktor erstellen, bei dem Sie für jede Charge ein separates glmnet-Modell trainieren und ein gewichtetes Abstimmschema verwenden (wobei jeder Prädiktor durch seine Kreuzvalidierungsleistung gewichtet wird), um endgültige Vorhersagen zu treffen.
  • Ich habe eine R package, die eine allgemeinere Regularisierung Rahmen bietet, aber es kann auch verwendet werden, um Standard-elastische Netzmodelle wie mit glmnet zu trainieren. Mein Paket ermöglicht können Sie Training mit einem vorberechneten Modell initialisieren, sowie Training für eine feste Anzahl von Iterationen ausführen. Der Nachteil ist, dass ich nur einen Binomiallöser habe, keinen multinomialen. Also müssten Sie es mit einem One-vs-One- oder One-vs-Rest-Schema hacken.
  • Schließlich, wenn Sie nicht an lineare Modelle angeschlossen sind, gibt es viele andere Lernmethoden, die eine einfache Dosierung von Eingaben ermöglichen. Deep Learning und Neural Network Frameworks gehören derzeit zu den beliebtesten.
Verwandte Themen