ランダムフォレストアルゴリズムの最適化された実装


43

私は、ALGLIB、Waffles、およびなどのいくつかのRパッケージなど、ランダムフォレストの実装がいくつかあることに気付きましたrandomForest。これらのライブラリが高度に最適化されているかどうかを教えてもらえますか?統計学習の要素で詳しく説明されているランダムフォレストと基本的に同等ですか、それとも多くの余分なトリックが追加されていますか?

この質問が具体的であることを願っています。私が探している答えのタイプの例として、線形代数パッケージBLASが高度に最適化されているかどうか尋ねられた場合、それは非常に高度に最適化されていて、非常に特殊なアプリケーションを除いて改善しようとする価値はほとんどないと言います。


ランダムジャングルは、多くのサーバーで並行して実行できます。Schwarz、et al(2010)を参照してください。ランダムジャングルのサファリ:高次元データのランダムフォレストの高速実装。バイオインフォマティクス、26、14、頁1752から8、doi.org/10.1093/bioinformatics/btq257。コード:1 ; 2 ; 3 ; 4
User128525

回答:


31

(コメントからの提案で6 IX 2015を更新し、CWも作成)

Rには、特定の条件に最適化された2つの新しい素晴らしいパッケージがあります。

  • レンジャー -C、Rパッケージ、問題に最適化された、GWASデータの並列、特別な処理。p>>n
  • アーボリスト -大規模問題に最適化されたC ++、R、Pythonバインディング、どうやらGPGPUの計画。n

その他のRF実装:

レンジャー紙には速度とメモリの比較がいくつかありますが、完全なベンチマークはありません。


6
Python scikit-learnツールボックスからsklearn.ensembleを追加できるようになりました。
-chl

1
PythonのMilkには、ランダムフォレストの実装もあります。
-JEquihua

3
ランダムジャングルはレンジャーに取って代わられました。私はRバージョン(別のC ++バージョンがあります)を試してみましたが、randomForestよりも著しく高速です(私は時間を計りませんでした)。著者は、別の論文(arxiv.org/abs/1508.04409)でいくつかのテストを行っています。
NoviceProg

11

私の知る限り、randomForestのRバージョンは、元のバージョンと同じFortranコードを呼び出します。さらに、randomForest関数を並列化するのは簡単です。これは、実際にはforeachのドキュメントで提供されている例の1つです。

library(foreach)
library(randomForest)
rf <- foreach(ntree = rep(250, 4), .combine = combine, .packages = "randomForest") %dopar% 
randomForest(x, y, ntree = ntree)

ランダムフォレストは恥ずかしいほど並列であるため、最大の最適化は並列で実行することです。その後、私はアルゴリズムに他の低品質の果物があるとは思わないが、間違っている可能性がある。

唯一の問題は、結合されたフォレストでout-of-bagエラー推定値を失うことですが、おそらくそれを計算する簡単な方法があります(実際にこれを行う方法を見つけたいです)。


7

ELSIIを使用ランダムフォレストがある(例えば、脚注3 p.591)のR Breimanの実装とカトラーのある、Fortranコードサルから。Andy LiawのコードはCにあります。

パーティーパッケージ(C)で提案されているRFの別の実装があります。これは、BLASに依存するR / Lapackに依存し/include/R_ext/Lapack.hています(ベースRディレクトリを参照)。

バギングに関する限り、それを並列化するのはそれほど難しいことではないはずですが、私はより専門的なユーザーにこの面で答えさせます。


5

randomJungleの背後にあるチームは、R randomForestの実装よりも1桁高速であり、使用するメモリが1桁少ないことを主張しています。randomJungleのパッケージがR用に開発されていますが、まだビルドできません。

https://r-forge.r-project.org/projects/rjungler/


これが4年経ってもまだ興味があるかどうかはわかりませんが、randomJungleの作者がRangerに取って代わりました。私はRバージョンを試してみましたが、実際にいくつかのサンプルデータでrandomForestよりも顕著に高速です(ただし、時間を計りませんでした)。
NoviceProg

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.