« 覚え書き:caretパッケージが提供する前処理用の関数たち | メイン | 読了:Choi, Cha, & Tappert (2010) 二値類似性指標はたくさんあるので、その類似性を調べてみた »
2018年5月 1日 (火)
Wright, M.N., Ziegler, A. (2017) ranger: A fast implementation of random forests for high dimensional data in C++ and R. Journal of Statistical Software.
Rの高速ランダム・フォレストパッケージrangerの紹介。うっかりarXivのバージョン(2015)を読んじゃったけど、中身は同じだと思う。
rangerについてご紹介します。分類木、回帰木、生存木に対応してます。速いです。高次元データに最適化してます。C++のスタンドアロン版もあるけど、Rパッケージ版をお勧めします(速さは同じです)。Rにおける標準的実装であるrandomForestパッケージに近い結果が得られます。云々。
rangerは手法が新しいというより、高速・低メモリ消費を謳うパッケージ。紹介されている実験の結果をみると、
- 当然rangerが勝っているわけだけど、randomForestSRCがわりかし善戦している。mtryがすごく大きくなる状況には弱いが、あとはあまり遜色ない。このrandomForestSRCは通常版なのだろうか、それともOpenMP対応版なのだろうか...
- 面白いのは、randomForestパッケージをマルチコア対応させたらどうなるかというのも試しているところ。紹介されているコードを見ると、mclapply()で投げ、返ってきたオブジェクトのリストを単にdo.call(combine, ...)すればいいらしい。知らなかった。もっとも、randomForestをマルチコア化してもやっぱりrangerが速いのだそうな。
- 同じく高速で知られるRパッケージにRboristがあって、その比較がもっとも関心あるところなんだけど、100変数・10万ケースの分類木ではrangerといい勝負。Rboristは、連続変数、低次元、標本サイズが大きいときに速く、すっごく高次元な状況は苦手、ということらしい。なるほどね、経験的にもそんな感じだ。
論文:データ解析(2018-) - 読了:Wright & Ziegler (2017) ランダム・フォレストのRパッケージranger