caret パッケージを使用して、 ranger を使用して構築されたランダムフォレストモデルを分析しています。モデルパラメータを調整するためにtuneGrid引数を使用してtrain関数を呼び出す方法がわかりません。
私はtuneGrid引数を間違って呼び出していると思いますが、なぜそれが間違っているのか理解できません。任意の助けいただければ幸いです。
data(iris)
library(ranger)
model_ranger <- ranger(Species ~ ., data = iris, num.trees = 500, mtry = 4,
importance = 'impurity')
library(caret)
# my tuneGrid object:
tgrid <- expand.grid(
num.trees = c(200, 500, 1000),
mtry = 2:4
)
model_caret <- train(Species ~ ., data = iris,
method = "ranger",
trControl = trainControl(method="cv", number = 5, verboseIter = T, classProbs = T),
tuneGrid = tgrid,
importance = 'impurity'
)
キャレットのレンジャーの構文は次のとおりです。
library(caret)
追加 .
パラメータを調整する前:
tgrid <- expand.grid(
.mtry = 2:4,
.splitrule = "gini",
.min.node.size = c(10, 20)
)
これらの3つだけがキャレットでサポートされ、ツリーの数はサポートされません。 trainでは、num.treesと重要度を指定できます:
model_caret <- train(Species ~ ., data = iris,
method = "ranger",
trControl = trainControl(method="cv", number = 5, verboseIter = T, classProbs = T),
tuneGrid = tgrid,
num.trees = 100,
importance = "permutation")
変数の重要度を取得するには:
varImp(model_caret)
#output
Overall
Petal.Length 100.0000
Petal.Width 84.4298
Sepal.Length 0.9855
Sepal.Width 0.0000
これが機能するかどうかを確認するには、ツリーの数を1000以上に設定します-適合は非常に遅くなります。変更後importance = "impurity"
:
#output:
Overall
Petal.Length 100.00
Petal.Width 81.67
Sepal.Length 16.19
Sepal.Width 0.00
それが機能しない場合は、CRANから最新のレンジャーとgitハブからキャレットをインストールすることをお勧めします。
devtools::install_github('topepo/caret/pkg/caret')
木の数をトレーニングするには、lapply
またはcreateMultiFolds
によって作成された固定折りたたみでcreateFolds
を使用できます。
[〜#〜] edit [〜#〜]:上記の例はキャレットパッケージバージョン6.0-84で機能しますが、ドットなしのハイパーパラメータの名前を使用しても機能します。
tgrid <- expand.grid(
mtry = 2:4,
splitrule = "gini",
min.node.size = c(10, 20)
)