2015年12月17日木曜日

ランダムフォレストのパッケージ別速度比較の可視化

この記事はR AdventCalendar18日目の記事です。

最近のR界隈でもxgboostブームによって久しく名前が聞こえてこなかったランダムフォレストですが、今年の夏頃に高速化されたパッケージがリリースされて話題になりましたね。

RでランダムフォレストやるならRboristかrangerか
新型のランダムフォレスト(Random Forest)パッケージ比較:Rborist・ranger・randomForest

dichikaさんの場合、Rboristが良さそう。teramonagiさんの場合はrangerが良さそうということで、自分はどっちがいいんだろうということで、試してみました。

たしかに早いのだけど、そこまでの差が出なかった…
これはどちらでもいいのだろうか…

幸運なことにmicrobenchmarkパッケージは速度の統計量を算出してくれるので、このデータを使って、木の数を増やした場合のそれぞれの処理時間がどのように変化するかを可視化してみます。

とりあえず木の数のパターンを上記のように500,1000,3000,5000と最初に出した100の5パターンを用意します。

出てきた統計量をちょこちょこと修正して、下記のようなデータにします。 そして、ggplot2で可視化。

結果









どうやら木の数を増やしていくと、徐々にrangerパッケージの処理性能の優位性が出てきそうだということがわかりました。
まあ、今回はirisデータを使っているので、元となるデータの量や特徴量数などの変数次第ではまた変わってくるのかもしれませんが、個人的にランダムフォレストをかける際は、rangerをファーストチョイスにしていきたいかなと思った次第。

p.s 本当はglmnetの正則化とかVAR,GAUCHモデルあたりをやろうかなーと思ったのだけど、直近でランダムフォレストを使ったこともあり、このネタにしました。
あと、randomForestパッケージにある重要度の可視化に関してはrangerパッケージに標準搭載はなく、`variable.importance`で見ることが可能となったり、caretパッケージから呼び出す際には

library("caret")
fit1 <- data="iris," method="ranger" span="" species="" train="">importance = "permutation")
plot(varImp(fit1))


で描画できるとr-wakalangのslackチャットで教えてもらったので、みなさんもぜひ参加しましょう!

明日の更新は@master_qさんです!

0 件のコメント:

ページビューの合計