2016-10-10 8 views
1

予測ランダムフォレストモデルを実行しました。私は以下のコードを実行すると、2つの異なる混乱行列が得られます。唯一の違いは、データを使用することです=予測関数の列車と私はちょうど '列車'を使用します。なぜこのような違いがありますか?1つを思い出すことはさらに悪くなります。紛らわしい混乱マトリクスパラメータ出力を変更する

conf.matrix <- table(train$Status,predict(fit2,train)) 

       Pred:Churn Pred:Current 
    Actual:Churn   2543   984 
    Actual:Current   44  27206 

conf.matrix <- table(train$Status,predict(fit2,data = train)) 

       Pred:Churn Pred:Current 
    Actual:Churn   1609   1918 
    Actual:Current  464  26786 

多くのありがとう。

+0

引数の名前は 'newdata =' not 'data ='です。 – mtoto

+0

okありがとうございます。なぜデータ=動作し、結果に影響を与えますか? – user3103335

+0

おそらく 'predict.randomForest()'とは異なる 'predict()'を呼び出すでしょう。これは 'data ='引数を持ちます。 – mtoto

答えて

1

第2の例のdata引数は、正しい引数名がnewdataで、@mtotoおよび@agenisが記載されているため、無視されます。 newdataがない場合、predict.randomForestは、バッグの袋外予測を返します。

これはあなたのやりたいことです。 CrossValidated:

上の私のポストから

は、トレーニングデータセットの予測を取得するとき

predict(model) 

predict(model, newdata=train) 

違いがあることに注意してください。最初のオプションは、ランダムフォレストからのバッグ外予測を取得します。これは、訓練データの予測値と実際の値とを比較するときに、一般に必要なものです。

2つ目は、トレーニングデータを新しいデータセットであるかのように扱い、各ツリーの下で観測を実行します。これは、RFアルゴリズムが一般的に個々のツリーをプルーニングせず、代わりにオーバーフィッティングを制御するためにツリーのアンサンブルに依存するため、予測と実際との間に人為的に密接な相関が生じることになります。したがって、トレーニングデータの予測を取得する場合は、これを行わないでください。

+0

ああ大丈夫です。ですから、新しいデータでモデルをテストしたいときは、newdata = testを使うべきですか? – user3103335

+0

はい、正しいです。 –

+0

ありがとうございます – user3103335

関連する問題