Mir ist aufgefallen, dass es einige Implementierungen von Random Forest wie ALGLIB, Waffles und einige R-Pakete gibt randomForest
. Kann mir jemand sagen, ob diese Bibliotheken hoch optimiert sind? Entsprechen sie im Wesentlichen den Zufallsforsten, wie in den Elementen des statistischen Lernens beschrieben, oder wurden viele zusätzliche Tricks hinzugefügt?
Ich hoffe, diese Frage ist spezifisch genug. Als Beispiel für die Art der Antwort, nach der ich suche, würde ich sagen, wenn mich jemand fragte, ob das BLAS-Paket für lineare Algebra in hohem Maße optimiert ist, dass es in höchstem Maße optimiert ist und es meistens nicht wert ist, verbessert zu werden, außer in sehr speziellen Anwendungen.
random-forest
algorithms
model-evaluation
Henry B.
quelle
quelle
Antworten:
(Aktualisiert 6 IX 2015 mit Vorschlägen aus Kommentaren, auch CW gemacht)
Es gibt zwei neue, nette Pakete für R, die für bestimmte Bedingungen ziemlich gut optimiert sind:
Andere RF-Implementierungen:
Ranger-Papier hat einige Geschwindigkeits- / Speichervergleiche, aber es gibt keinen gründlichen Benchmark.
quelle
Soweit ich weiß, nennt die R-Version von randomForest denselben Fortran-Code wie die Originalversion. Darüber hinaus ist es trivial, die randomForest-Funktion zu parallelisieren. Tatsächlich ist es eines der Beispiele in der Dokumentation zu foreach .
Da zufällige Gesamtstrukturen peinlich parallel sind, können Sie sie am besten parallel ausführen. Danach glaube ich, dass der Algorithmus keine anderen niedrig hängenden Früchte enthält, aber ich könnte mich irren.
Das einzige Problem ist, dass Sie die Out-of-Bag-Fehlerabschätzung in der kombinierten Gesamtstruktur verlieren, aber es gibt wahrscheinlich einen einfachen Weg, sie zu berechnen (ich würde gerne herausfinden, wie das geht).
quelle
Das ELSII verwendete randomForest (siehe z. B. Fußnote 3, S. 591), eine R-Implementierung des Breiman and Cutler's Fortran-Codes von Salford. Andy Liaws Code ist in C.
Es gibt eine weitere Implementierung von RFs, die im Party- Paket (in C) vorgeschlagen wird und auf R / Lapack basiert, das einige Abhängigkeiten von BLAS aufweist (siehe
/include/R_ext/Lapack.h
in Ihrem Basis-R-Verzeichnis).Was das Absacken betrifft, sollte es nicht zu schwierig sein, es zu parallelisieren, aber ich werde spezialisiertere Benutzer auf diesen Aspekt antworten lassen.
quelle
Das Team hinter randomJungle behauptet, dass dies eine Größenordnung schneller ist als die Implementierung von R randomForest und eine Größenordnung weniger Speicherplatz benötigt. Ein Paket für randomJungle wird für R entwickelt, aber ich kann es noch nicht erstellen.
https://r-forge.r-project.org/projects/rjungler/
quelle
Für die Javascript- Implementierung gehen Sie diese Demo durch.
Wenn Sie wie ein Kind sind, das Hunger nach Schokolade hat, finden Sie hier Ihre Schokolade aus zufälligen Wäldern: http://cs.stanford.edu/people/karpathy/svmjs/demo/demoforest.html
quelle