列車(キャレット)の相互検証はどのように正確に機能しますか?


8

キャレットパッケージに関する多くの投稿を読みましたが、特にtrain関数に興味があります。ただし、列車の機能がどのように機能するかを正しく理解したかどうかは、完全にはわかりません。

私の現在の考えを説明するために、簡単な例を作成しました。

  • 最初に、パラメーターグリッドを指定します。メソッドgbmを使用しているとすると、モデルのパラメーターグリッドは次のようになります。

    grid <- expand.grid( .n.trees=seq(10,50,10), .interaction.depth=seq(1,4,1), .shrinkage=c(0.01,0.001), .n.minobsinnode=seq(5,20,5))
  • 続いて、train(trainControl)の制御パラメーターが定義されます。trainを使用した交差検証に関する私の考えが正しいかどうか知りたいので、この例では次のように使用します。

    train_control <- trainControl('cv',10)
  • 最後に、train関数が実行されます。例えば:

    fit <- train(x,y,method="gbm",metric="Kappa",trControl=train_control,tuneGrid=grid)

今、私は電車がうまくいくと推定する方法は次のとおりです:

  1. 上記の例では、160(5 * 4 * 2 * 4)の可能なパラメーターの組み合わせがあります。
  2. 各パラメーターの組み合わせトレインは、10分割交差検証を実行します
  3. パラメーターの組み合わせごと、および(10分割の)分割ごとに、パフォーマンスメトリック(この例ではKappa)が計算されます(この例では、これは1600 Kappaが計算されることを意味します)
  4. 各パラメーターの組み合わせについて、パフォーマンスメトリックの平均が10倍にわたって計算されます。
  5. 最高の平均パフォーマンスメトリックを持つパラメーターの組み合わせは、モデルの最適なパラメーターと見なされます

私の質問は簡単です、私の現在の考えは正しいですか?

回答:


8

はい。それで合っています。詳細を見たい場合:

  • パラメータ化以上の結果、および選ばれた最終モデルを観察するためには、比較することができfit$resultsfit$bestTune、およびfit$finalModel(より少ない複雑なモデルが選択されているのと同じ性能を持ちます)。
  • パーティションごとの最終的なモデルのパラメーター化とリサンプルのパフォーマンスを観察するには、を参照してくださいfit$resample。値を変更していることを注意returnResampして?trainControl、あなたを設定することができ(あなたが最終的に選択したパラメータセット以外にも、それらを見たい場合など)あなたはここを参照してください結果-しかし、通常はデフォルトでは問題ないはずです。
  • CV中に行われた個々の予測を観察するにsavePredictions = T?trainControl、で有効にしてからfit$pred、たとえばを見てくださいtable(fit$pred$Resample)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.