統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

Rでランダムフォレストを行う方法 重要度の可視化も

R でランダムフォレストを実行する方法。

↑1万人以上の医療従事者が購読中

 

  

 

ランダムフォレストとバギングの違い

ランダムフォレストとバギングの違いは、こちらの記事を参照。

toukeier.hatenablog.com

 

R でランダムフォレストを実行するパッケージの準備

パッケージはrandomForestというそのままの名前のパッケージを使う。

最初に一回だけインストールする。

install.packages("randomForest")

 

使えるように呼び出しておく。

library(randomForest)

 

R のランダムフォレストで決定木を作る例

irisデータを使って、ランダムフォレストで決定木を作ってみる。

set.seed()でランダム変数のシードを設定しておき、再現性を持たせる。

Speciesをそれ以外の変数で予測する決定木を作成するスクリプトは以下の通り。

set.seed(71)
iris.rf <- randomForest(Species ~ ., data=iris)

 

結果は以下のように表示される。ランダムサンプリングを使って、決定木は500個作っている。エラー率は5.33%

Out Of Bag (OOB)とは、3分の1をテスト用に外しておいて学習して、テストデータの結果でConfusion matrixを作り検討していることを意味している。

> iris.rf

Call:
 randomForest(formula = Species ~ ., data = iris) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 2

        OOB estimate of  error rate: 5.33%
Confusion matrix:
           setosa versicolor virginica class.error
setosa         50          0         0        0.00
versicolor      0         47         3        0.06
virginica       0          5        45        0.10

 

↑1万人以上の医療従事者が購読中

 

R でランダムフォレストを実行した結果 重要な変数を表示する

重要な変数は、ジニ不純度の減少量で見る。

グラフではMean Decrease Giniと表示される。

ジニ不純度が大きく下がる変数が、識別に役立つ重要な変数という意味。

不純度が下がって、純度が増すということは、より純粋なグループ、つまりよりよく分けることができる変数ということになる。

重要な変数プロットでは、Petal.WidthとPetal.Lengthが重要であることが示された。

 

varImpPlot(iris.rf)

 

f:id:toukeier:20180911200533p:plain

まとめ

統計ソフトRでランダムフォレストを実行したい場合、randomForestパッケージを使う。

randomForest()で解析が実行できて、varImpPlot()で重要な変数が図示される。