2

最近、R のランダム フォレスト パッケージをいじり始めました。フォレストを成長させた後、同じデータセット (つまり、トレーニング データセット) を使用して応答を予測しようとしました。フォレスト オブジェクト自体。newdata 引数に何か問題があるのではないかと思いましたが、ドキュメントに記載されている例に従って t を実行したところ、同じ問題が発生しました。Species データセットを使用した例を次に示します。これは、作成者がドキュメントで使用したのと同じ例ですが、同じデータセットを使用してトレーニングと予測を行っています...ここでの質問は、なぜこれら 2 つの混同行列が同一でないのかということです。

data(iris)
set.seed(111)
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2))
#grow forest
iris.rf <- randomForest(Species ~ ., data=iris[ind == 1,])
print(iris.rf)

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

        OOB estimate of  error rate: 3.33%
Confusion matrix:
           setosa versicolor virginica class.error
setosa         45          0         0  0.00000000
versicolor      0         39         1  0.02500000
virginica       0          3        32  0.08571429

#predict using the training again...
iris.pred <- predict(iris.rf, iris[ind == 1,])
table(observed = iris[ind==1, "Species"], predicted = iris.pred)

           predicted
observed     setosa versicolor virginica
  setosa         45          0         0
  versicolor      0         40         0
  virginica       0          0        35
4

1 に答える 1

3

最初の要約で、混同行列には というラベルが付けられていることに注意してくださいOOB estimate

これは Out-of-Bag の略で、フォレストのトレーニング セットの各観測値を直接予測することと同じではありません。後者は明らかに偏った精度の推定値であり、OOB の推定値はそれほどではありません (ただし、OOB には批判もありますが、少なくともより合理的です)。

基本的に、要約自体を印刷するときは、各観測を取得し、それが使用されていないツリー、つまり「袋から出された」ツリーでのみテストします。そのため、OOB 予測では基本的に、フォレスト内のツリーのサブセット (一般的には約 2/3) のみを使用しています。

トレーニング データに対して直接 predict を呼び出すと、各観測が実際にツリーの構築に使用されたツリーが使用されます。そのため、OOB バージョンでは一部が誤分類されているのに対し、そのバージョンではそれぞれが正しくなっても驚くことではありません。

于 2014-02-21T17:30:53.737 に答える