クロスバリデーションのあるcaret::train(..., method = "glmnet")
、またはcv.glmnet()
の両方が実装されていることがわかりましたので、クロスバリデーションエラーを最小限に抑えるlambda.min
が見つかりました。最終的に最も適合したモデルは、lambda.min
に適合するモデルでなければなりません。次に、グリッドをlambda
の値をトレーニングプロセスに設定する必要があるのはなぜですか?なぜlambdaをcaret :: train(...、method = "glmnet")とcv.glmnet()で調整する必要がありますか?
2
A
答えて
1
glmnet
モデルのカスタムチューニンググリッドを使用します。これは、デフォルトのチューニンググリッドが非常に小さく、探索する可能性があるより多くの潜在的なglmnet
モデルがあるためです。
glmnet
は罰せモデルのフィッティング2種類の異なる可能であり、それは2つのチューニングパラメータがあります
- アルファ
- リッジ回帰(またはアルファ= 0)
- ラッソ退縮を(またはα= 1)
- ラムダ係数
上
- ペナルティの強度が
glmnet
モデルは(単一alpha
ため、lambda
のすべての値が同時にフィット)一度に多くのモデルに適合することができ、我々は渡すことができますモデルのペナルティの量を制御する多数のlambda
値。train()
は、alpha
値ごとに1つのモデルに適合し、lambda
の値すべてを同時に適合させるのに十分なほどスマートです。例:
# Make a custom tuning grid tuneGrid <- expand.grid(alpha = 0:1, lambda = seq(0.0001, 1, length = 10)) # Fit a model model <- train(y ~ ., overfit, method = "glmnet", tuneGrid = tuneGrid, trControl = myControl ) # Sample Output Warning message: The metric "Accuracy" was not in the result set. ROC will be used instead. + Fold01: alpha=0, lambda=1 - Fold01: alpha=0, lambda=1 + Fold01: alpha=1, lambda=1 - Fold01: alpha=1, lambda=1 + Fold02: alpha=0, lambda=1 - Fold02: alpha=0, lambda=1 + Fold02: alpha=1, lambda=1 - Fold02: alpha=1, lambda=1 + Fold03: alpha=0, lambda=1 - Fold03: alpha=0, lambda=1 + Fold03: alpha=1, lambda=1 - Fold03: alpha=1, lambda=1 + Fold04: alpha=0, lambda=1 - Fold04: alpha=0, lambda=1 + Fold04: alpha=1, lambda=1 - Fold04: alpha=1, lambda=1 + Fold05: alpha=0, lambda=1 - Fold05: alpha=0, lambda=1 + Fold05: alpha=1, lambda=1 - Fold05: alpha=1, lambda=1 + Fold06: alpha=0, lambda=1 - Fold06: alpha=0, lambda=1 + Fold06: alpha=1, lambda=1 - Fold06: alpha=1, lambda=1 + Fold07: alpha=0, lambda=1 - Fold07: alpha=0, lambda=1 + Fold07: alpha=1, lambda=1 - Fold07: alpha=1, lambda=1 + Fold08: alpha=0, lambda=1 - Fold08: alpha=0, lambda=1 + Fold08: alpha=1, lambda=1 - Fold08: alpha=1, lambda=1 + Fold09: alpha=0, lambda=1 - Fold09: alpha=0, lambda=1 + Fold09: alpha=1, lambda=1 - Fold09: alpha=1, lambda=1 + Fold10: alpha=0, lambda=1 - Fold10: alpha=0, lambda=1 + Fold10: alpha=1, lambda=1 - Fold10: alpha=1, lambda=1 Aggregating results Selecting tuning parameters Fitting alpha = 1, lambda = 1 on full training set # Print model to console model # Sample Output glmnet 250 samples 200 predictors 2 classes: 'class1', 'class2' No pre-processing Resampling: Cross-Validated (10 fold) Summary of sample sizes: 225, 225, 225, 225, 224, 226, ... Resampling results across tuning parameters: alpha lambda ROC Sens Spec 0 0.0001 0.3877717 0.00 0.9786232 0 0.1112 0.4352355 0.00 1.0000000 0 0.2223 0.4546196 0.00 1.0000000 0 0.3334 0.4589674 0.00 1.0000000 0 0.4445 0.4718297 0.00 1.0000000 0 0.5556 0.4762681 0.00 1.0000000 0 0.6667 0.4783514 0.00 1.0000000 0 0.7778 0.4826087 0.00 1.0000000 0 0.8889 0.4869565 0.00 1.0000000 0 1.0000 0.4869565 0.00 1.0000000 1 0.0001 0.3368659 0.05 0.9188406 1 0.1112 0.5000000 0.00 1.0000000 1 0.2223 0.5000000 0.00 1.0000000 1 0.3334 0.5000000 0.00 1.0000000 1 0.4445 0.5000000 0.00 1.0000000 1 0.5556 0.5000000 0.00 1.0000000 1 0.6667 0.5000000 0.00 1.0000000 1 0.7778 0.5000000 0.00 1.0000000 1 0.8889 0.5000000 0.00 1.0000000 1 1.0000 0.5000000 0.00 1.0000000 ROC was used to select the optimal model using the largest value. The final values used for the model were alpha = 1 and lambda = 1. # Plot model plot(model)
関連する問題
- 1. jsコードを調整する必要があります
- 2. jQuery autosuggestプラグインに調整する必要があります
- 3. 見出しレベルの整列を調整する必要があります
- 4. Caretパッケージtrain()出力評価
- 5. CollectionViewはアニメーションでスクロールポストを調整する必要があります。
- 6. 調整が必要なCSSの一致の正規表現があります
- 7. TypeError:バイトインデックスは整数である必要があります
- 8. なぜvalue.lengthを使用する必要がありますか?
- 9. なぜPOSTデータをネストする必要がありますか?
- 10. なぜredux-thunksをディスパッチする必要がありますか?
- 11. なぜメッセージハブをポーリングする必要がありますか?
- 12. なぜ変数をリセットする必要がありますか?
- 13. なぜデータベースラッパーを作成する必要がありますか?
- 14. Reflect.construct()なぜオブジェクトプロトタイプをオーバーライドする必要がありますか?
- 15. なぜレンダリングをカウントする必要がありますか?
- 16. なぜstopPropagation()を使用する必要がありますか?
- 17. htaccess調整が必要
- 18. なぜmochaはdevDependenciesになる必要がありますか?
- 19. なぜopengl32.libにリンクする必要がありますか
- 20. qtsql-querymodel-editablesqlmodel:なぜリフレッシュする必要がありますか?
- 21. AjaxUpload:なぜ2回クリックする必要がありますか?
- 22. なぜhtml_safeに注意する必要がありますか?
- 23. なぜ使用する必要がありますか?
- 24. スリムな微調整はGPUが必要ですか?
- 25. Jqueryでレコードを整列する必要があります
- 26. ブートストラップ内でテキストを整列する必要があります
- 27. なぜresolve()を呼び出す必要がありますか?
- 28. なぜ行番号を渡す必要がありますか?
- 29. セレンページオブジェクト:なぜこれを返す必要がありますか?
- 30. なぜHTMLDivElement.constructor.prototype == HTMLDivElementですか?プロトタイプオブジェクトである必要があります