Zufällige Gesamtstruktur in einer Big Data-Einstellung

8

Ich habe einen Datensatz mit 5.818.446 Zeilen und 51 Spalten, von denen 50 Prädiktoren sind. Meine Antwort ist quantitativ, daher interessiere ich mich für ein Regressionsmodell. Ich versuche, mithilfe des Caret-Pakets einen zufälligen Wald an meine Daten anzupassen. Ich habe jedoch nicht genug RAM, um dies zu tun.

Ich habe nach Lösungen für mein Problem gesucht. Abgesehen davon, dass ich einen leistungsstärkeren Computer habe, kann ich anscheinend das Absacken nutzen , um mein Problem zu lösen. Daher ist meine Idee wie folgt:

  1. Erstellen Sie sowohl Zug- als auch Testpartitionen aus meinem ursprünglichen Datensatz

  2. Probe mit Ersatz einen kleinen Teil meines Zugdatensatzes in R (sagen wir 1% davon, dh 58.185 Zeilen)

  3. Passen Sie eine zufällige Gesamtstruktur an diesen kleinen Teil der Daten an

  4. Speichern Sie das Modellergebnis

  5. Wiederholen Sie die Schritte 2 bis 4 1000 Mal

  6. Kombinieren Sie diese 1.000 Modelle aus den Schritten 2-5

Random Forest selbst verwendet jedoch Bagging, um das Modell an die Daten anzupassen, und daher bin ich mir nicht sicher, ob mein Ansatz korrekt ist. Daher habe ich einige Fragen an Sie:

i) Ist mein Ansatz korrekt? Ich meine, da ich nicht genug RAM in meinem System habe, ist es richtig, viele verschiedene zufällige Gesamtstrukturmodelle an verschiedene Datenblöcke anzupassen und sie danach zu kombinieren?

ii) Unter der Annahme, dass mein Ansatz korrekt ist, ist 1% der Daten eine gute Faustregel für meine Stichprobengröße? Selbst mit 1% der Daten habe ich immer noch .np

iii) Gibt es unter der Annahme, dass mein Ansatz korrekt ist, eine Reihe von Replikationen für Modelle, die ich verwenden sollte? Ich habe aus Gründen an 1.000 gedacht.

Marcus Nunes
quelle
Da das Absacken eine Methode zum Generieren jedes Entscheidungsbaums in einer zufälligen Gesamtstruktur ist, wie wäre es, wenn Sie nur eine einzelne DT pro 1% durchführen und dann die Bäume kombinieren ? Voila, ein hausgebackener Zufallswald. Dann können Sie 1000 oder mehr Bäume bauen und zufällige Baumkombinationen erstellen, um zu sehen, was mit Ihren Testdaten am besten funktioniert. Obwohl Sie dann zu Ihren Testdaten passen, nehmen Sie sie vielleicht einfach alle und führen Sie sie aus.
Engineero
Ooo! Oder kombinieren Sie sie alle mit einer vollständig verbundenen Ausgabeebene und trainieren Sie diese Ebene dann mit einer l1Regularisierung, bei der die Gewichte unbedeutender Komponenten normalerweise auf nahezu Null sinken, sodass Sie durch Inspektion sehen können, welche Bäume Sie behalten sollten.
Engineero
@Engineero Die von Ihnen skizzierte Methode wird allgemein als "zufällige Küchenspülen" bezeichnet: Passen Sie eine große Anzahl schwacher Lernender an, um eine Basisdarstellung der ursprünglichen Merkmale (sogar Entscheidungsstümpfe) zu bilden, und gewichten Sie dann die Endknoten, möglicherweise mit einer gewissen Regularisierung der Knotengewichte . people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycorax sagt Reinstate Monica
1 / Ich habe keine endgültigen Kenntnisse, daher poste ich keine Antwort. Aber diese Methode sollte in Ordnung sein. Beachten Sie, dass die Anzahl der Proben in jeder "Charge" eine Obergrenze für die Tiefe jedes Baums und damit für die Fähigkeit jedes Baums impliziert, die Daten anzupassen. Daher sollten Sie eine Optimierung über 0,5%, 1%, 2%, 4 in Betracht ziehen % (fiktiv) ... der Daten beim Generieren jedes Baums. Die Anzahl der zu verwendenden Bäume ist lediglich eine Frage des Zeitpunkts, zu dem das Modell "Plateaus" verliert. Diese Auswahl muss nicht abgestimmt werden, da der erwartete Verlust eine monoton abnehmende Funktion von für kontinuierliche richtige Bewertungsregeln ist. T.
Sycorax sagt Reinstate Monica
2 / Weitere Informationen über die Anzahl der Bäume finden Sie in meiner Antwort hier: stats.stackexchange.com/questions/348245/…
Sycorax sagt Reinstate Monica

Antworten:

3

Hier geht es nicht um Ihre spezifischen Fragen, sondern um die Motivation dahinter. Das bigRFPaket kann Ihr Problem lösen:

Dies ist eine R-Implementierung der Random Forest-Algorithmen von Leo Breiman und Adele Cutler zur Klassifizierung und Regression mit Optimierungen für die Leistung und für die Verarbeitung von Datensätzen, die zu groß sind, um im Speicher verarbeitet zu werden.

Ebenfalls:

Bei großen Datenmengen können die Trainingsdaten, Zwischenberechnungen und einige Ausgaben (z. B. Proximity-Matrizen) mithilfe von "big.matrix" -Objekten auf der Festplatte zwischengespeichert werden. Auf diese Weise können zufällige Gesamtstrukturen auf relativ großen Datenmengen erstellt werden, ohne dass die RAM-Grenzwerte überschritten werden. Dies führt zu einem übermäßigen Austausch des virtuellen Speichers durch das Betriebssystem.

mkt - Monica wieder einsetzen
quelle