Angenommen, Sie analysieren einen riesigen Datensatz mit Milliarden von Beobachtungen pro Tag, wobei jede Beobachtung einige Tausend spärliche und möglicherweise redundante numerische und kategoriale Variablen enthält. Angenommen, es gibt ein Regressionsproblem, ein Problem der unausgeglichenen binären Klassifizierung und die Aufgabe, herauszufinden, welche Prädiktoren am wichtigsten sind. Mein Gedanke, wie ich das Problem angehen soll, ist:
Passen Sie ein Vorhersagemodell an immer größere (zufällige) Teilstichproben der Daten an, bis:
Die Anpassung und Kreuzvalidierung des Modells wird rechnerisch schwierig (z. B. unangemessen langsam auf meinem Laptop, R verfügt nicht über genügend Arbeitsspeicher usw.), ODER
Die Trainings- und Test-RMSE- oder Präzisions- / Rückrufwerte stabilisieren sich.
Wenn sich die Trainings- und Testfehler nicht stabilisiert haben (1.), verwenden Sie ein einfacheres Modell und / oder implementieren Sie Multicore- oder Multinode-Versionen des Modells und starten Sie von Anfang an neu.
Wenn sich die Trainings- und Testfehler stabilisiert haben (2.):
Wenn (dh ich kann immer noch Algorithmen auf ausführen, da es noch nicht zu groß ist), versuchen Sie, die Leistung zu verbessern, indem Sie den Funktionsbereich erweitern oder ein komplexeres Modell verwenden und von Anfang an neu starten.
Wenn 'groß' ist und das Ausführen weiterer Analysen kostspielig ist, analysieren Sie die variable Wichtigkeit und das Ende.
Ich plane Pakete zu benutzen und wie biglm
, speedglm
, multicore
und ff
in R zunächst und später verwendet mehr komplizierte Algorithmen und / oder Mehrfachknoten (auf EC2) nach Bedarf.
Klingt dies nach einem vernünftigen Ansatz, und wenn ja, haben Sie spezielle Ratschläge oder Vorschläge? Wenn nicht, was würden Sie stattdessen für einen Datensatz dieser Größe versuchen?
quelle
Antworten:
Sie sollten Online-Methoden zur Regression und Klassifizierung für Datensätze dieser Größe prüfen. Mit diesen Ansätzen können Sie den gesamten Datensatz verwenden, ohne ihn in den Speicher laden zu müssen.
Du könntest auch Vowpal Wabbit (VW) ausprobieren:
https://github.com/JohnLangford/vowpal_wabbit/wiki
Es wird eine Out-of-Core-Onlinemethode verwendet, sodass es in der Lage sein sollte, einen Datensatz dieser Größe zu verarbeiten. Sie können Regression und Klassifizierung durchführen und es werden nur spärliche Formate unterstützt. Sie können in VW auch strafbare Versionen (z. B. Lasso-Typ-Regression / -Klassifikation) ausführen, um die Genauigkeit Ihres Modells zu verbessern.
quelle
Ich würde vorschlagen, Hadoop und RMR (ein spezielles Paket für Map Reduce in R) zu verwenden. Mit dieser Strategie können Sie große Datenmengen auf Standardcomputern mit einer erschwinglichen Konfiguration ausführen (wahrscheinlich haben Sie in zwei Stunden sowohl Hadoop als auch RMR (RHadoop) installiert und ausgeführt).
Wenn Sie mehr als einen Computer haben, können Sie einen Cluster erstellen und so die Verarbeitungszeit verkürzen.
Ich gebe Ihnen einige Links, die meinen Vorschlag unterstützen:
Daher rate ich Ihnen, diese Richtlinien zu befolgen, da es sich sicher lohnt, wenn Ihre Daten riesig sind.
quelle
Dies ist eher ein Kommentar als eine Antwort, aber ich kann ihn nicht als Kommentar posten (erfordert 50 Wiederholungen).
Haben Sie versucht, PCA für Ihren Datensatz zu verwenden? Es kann Ihnen helfen, den Variablenraum zu verkleinern und eine mögliche Richtung zu finden, in der Variablen von Ihrem Regressionsmodell ausgeschlossen werden. Auf diese Weise lässt sich das Modell leichter berechnen. Hier finden Sie eine interessante Diskussion zur Verwendung von PCA mit kategorialen Variablen: Kann die Hauptkomponentenanalyse auf Datensätze angewendet werden, die eine Mischung aus kontinuierlichen und kategorialen Variablen enthalten?
Ich stelle mir auch vor, dass Sie R aus vielen Gründen verwenden (ich verwende auch R), aber es ist möglicherweise einfacher, eine Software wie SAS oder STATA zu verwenden. Sie arbeiten mit Big Data besser und Sie müssen sich nicht mit Multi-Core- und Parallel-Computing befassen.
Versuchen Sie abschließend zu überlegen, ob es sinnvoll ist, so viele Zeilen wie möglich aus Ihrem Dataset zu verwenden. Dies ist ein Bevölkerungsdatensatz, ein Quasi-Bevölkerungsdatensatz oder ein Stichprobendatensatz? Mit einer guten Stichprobe in Ihrem Datensatz erzielen Sie möglicherweise bessere Ergebnisse als mit den gesamten Daten. Werfen Sie einen Blick auf diesen Beitrag: Ist Stichproben in Zeiten von Big Data relevant?
Hoffe das hilft
quelle