2011-12-03 20 views
61

私はランダムフォレストモデルに適合したいと思いますが、私は、私はRで不足している(NA)値を持つランダムフォレストを構築する方法はありますか?

Error in na.fail.default(list(speed = c(NA, 4, 7, 7, 8, 9, 10, 10, 10, : 
    missing values in object 
+0

現状では、この質問は非常に難解です。いくつかのサンプルデータで質問を更新できますか? – Chase

+1

@ MattO'Brien質問の質は、質問自体のメリットではなく、人数に基づいて議論されることも面白いです。そして、@ジョランは何が尋ねられているのか把握し、質問者の問題のための良い解決策であると思われるものを提供しても問題はなかったので、その答え。 – user7610

答えて

101

次のエラーを取得する

library(randomForest) 
cars$speed[1] <- NA # to simulate missing value 
model <- randomForest(speed ~., data=cars) 

を呼び出すときに、この質問への私の最初の反応は、それが多くの研究を示さなかったということでしたランダムなフォレストが予測変数の欠損値を処理しないことを「誰もが知っている」からです。しかし、?randomForestをチェックすると、これについてもっとはっきりとわかるはずです。

(BreimanのPDF、が明示的に欠損値が単純にすべてで処理されていないことを言うん文書でにリンクされている。)

は、私が見ることができる公式ドキュメントの唯一の明白な手がかりであることが確認されたデフォルト値についてna.actionのパラメータはna.failです。新しいユーザーにとってはあまりにも曖昧な場合があります。

あなたの予測因子は、欠損値を持っている場合いずれにせよ、あなたは(基本的に)二つの選択肢があります。

  1. を別のツールを使用し
  2. 転嫁欠損値
  3. (うまく欠損値 rpartハンドルを。)

randomForestパッケージにはこれだけの機能があります(rfImpute)。 ?rfImputeのドキュメントは、その使用の基本的な例を示しています。

少数のケースに欠損値がある場合は、na.action = na.omitを設定して、単にそのケースを削除することもできます。

もちろん、この回答はあなたの問題が実際には値が欠落していることを少し推測しています。

+0

OP手段の最初の引数に 'WIN〜.'が何であるか知っていますか?これは確かに質問するのに最適な場所ではありませんが、あなたが知っているかどうか疑問に思っていました。ありがとう。 –

+4

@ user273158これは 'formula'引数を使って'?randomForest'の中で文書化されているモデル式です。 Rに応答変数として 'WIN'を使用するよう指示し、' .'は「データフレーム内の他のすべての変数」を意味する略語です。したがって、応答変数として「WIN」を使用するようにRに指示し、使用可能な他のすべての変数は予測変数です。詳細は '?formula'を参照してください。 – joran

3

欠損値が有益である可能性があるなら、あなたはnew.varyour_datasetに追加するように設定大きすぎる場合、あなたが使用することができ、欠損値をINPUTEと(new.vars<-is.na(your_dataset)付き)追加のバイナリ変数を追加し、それがエラーを下げるかどうかを確認することができますそれだけで、varImpPlotとsignificiant変数を選択し、your_datasetに追加する、あなたはまた、行方不明の変数が有益会計であれば、これはオフtopick答えではありませんNAnew.var <- rowSums(new.vars)

の数をカウントするyour_datasetに単一の変数を追加しようとすることができ不完全帰属手続きのみによるモデル誤差の増加を補正することができる。

不足している値は、無作為な原因によるものであり、社会実験の設定では頻繁に一般的です。

関連する問題