8

のドキュメントで次のことを読みましたrandomForest

階層: 階層化サンプリングに使用される (因子) 変数。

sampsize: 描画するサンプルのサイズ。分類では、sampsize が層の数の長さのベクトルである場合、サンプリングは層によって層化され、sampsize の要素は層から引き出される数を示します。

参考までに、関数へのインターフェイスは次のようになります。

 randomForest(x, y=NULL,  xtest=NULL, ytest=NULL, ntree=500,
              mtry=if (!is.null(y) && !is.factor(y))
              max(floor(ncol(x)/3), 1) else floor(sqrt(ncol(x))),
              replace=TRUE, classwt=NULL, cutoff, strata,
              sampsize = if (replace) nrow(x) else ceiling(.632*nrow(x)),
              nodesize = if (!is.null(y) && !is.factor(y)) 5 else 1,
              maxnodes = NULL,
              importance=FALSE, localImp=FALSE, nPerm=1,
              proximity, oob.prox=proximity,
              norm.votes=TRUE, do.trace=FALSE,
              keep.forest=!is.null(y) && is.null(xtest), corr.bias=FALSE,
              keep.inbag=FALSE, ...)

私の質問は次のとおりです。どのように正確に and を使用stratasampsizeますか? これらのパラメーターをテストしたい最小限の作業例を次に示します。

library(randomForest)
iris = read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", sep = ",", header = FALSE)
names(iris) = c("sepal.length", "sepal.width", "petal.length", "petal.width", "iris.type")

model = randomForest(iris.type ~ sepal.length + sepal.width, data = iris)

> model
500 samples
  6 predictors
  2 classes: 'Y0', 'Y1' 

No pre-processing
Resampling: Bootstrap (7 reps) 

Summary of sample sizes: 477, 477, 477, 477, 477, 477, ... 

Resampling results across tuning parameters:

  mtry  ROC    Sens  Spec  ROC SD  Sens SD  Spec SD
  2     0.763  1     0     0.156   0        0      
  4     0.782  1     0     0.231   0        0      
  6     0.847  1     0     0.173   0        0      

ROC was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 6.

これらのパラメーターにたどり着いたのは、RF に、データのポジティブとネガティブの比率を考慮したブートストラップ サンプルを使用してもらいたいからです。

この別のスレッドは、トピックに関する議論を開始しましたが、これらのパラメーターをどのように使用するかを明確にすることなく解決されました.

4

1 に答える 1

8

これは次のようなものではないでしょうか:

model = randomForest(iris.type ~ sepal.length + sepal.width, 
                     data = iris, 
                     sampsize=c(10,10,10), strata=iris$iris.type)

私は試し ..., strata=iristypeてみ..., strata='iristype'ましたが、「データ」引数の環境でその値を解釈するようにコードが書かれていないようです。そのデータセットの唯一の要因変数であるため、結果変数を使用しましたが、結果変数である必要はないと思います。実際のところ、それは絶対に結果変数であってはならないと思います。この特定のモデルは、役に立たない出力を生成すると予想され、構文をテストするためにのみ提示されます。

于 2013-02-12T21:43:06.373 に答える