ランダムフォレストを使って、変数の重要度をチェックしたい時は、varImpPlot()を使います。
MeanDecreaseAccuracyによる重要度のプロットが欲しかったのに、varImpPlot()でMeanDecreaseGiniによる結果しか返されなかったのであれこれ調べたところ、割と些細なことで自分がスタックしていただけでした。自戒の意味も込めて記事にします。
randomForest()で、”importance= TRUE”と指定する
最初のrandomForest()の時点において、importanceを指定しないと、%IncMSEの結果をプロットしてくれません。
RF_model <- randomForest(Ozone ~., data= airquality, na.action = na.omit, importance=TRUE)
varImpPlot(RF_model)
RF_model <- randomForest(Ozone ~., data= airquality,
na.action = na.omit) #これが大事
varImpPlot(RF_model)
以下のコードだと、IncNodePurityのみがプロットされます。
意外と時間をとられてしまい悔しいので、備忘録として残しておきます。誰かのお役に立てれば幸いです。
今回は作図のデモを目的のみにしています。airquarityのデータを使用しました。実際にランダムフォレストを行う際には、使用するデータセットのサンプルサイズや変数について各自ご検討ください。
コメント