交叉验证是否用于模型选择?

问题描述 投票:0回答:1

所以这开始让我有些困惑。例如,具有以下训练GLM模型的代码:

glm_sens = train(
  form = target ~ .,
  data = ABT,
  trControl = trainControl(method = "repeatedcv", number = 5, repeats = 10, classProbs = TRUE, summaryFunction = twoClassSummary, savePredictions = TRUE),
  method = "glm",
  family = "binomial",
  metric = "Sens"
)

我希望这会训练一些模型,然后选择在灵敏度上表现最佳的模型。然而,当我阅读交叉验证时,最能发现的是如何使用它来计算平均性能得分。

我的假设是否正确?

r machine-learning cross-validation r-caret k-fold
1个回答
0
投票

插入符号确实训练了不同的模型,但是通常它是用不同的超参数完成的。您可以签出an explanation of the process。无法从数据中直接学习超级参数,因此您需要训练过程。这些参数决定了模型的行为方式,例如,套索中有lambda,它决定了对模型应用多少正则化。

一目了然,没有要训练的超参数。我猜您正在寻找的是从许多潜在变量中选择最佳线性模型的方法。您可以使用step()

fit = lm(mpg ~ .,data=mtcars)
step(fit,direction="back")

[另一种选择是将插入符号与跳转一起使用,例如,与上面相同的是:

train(mpg~ .,data=mtcars,method='leapBackward', trControl=trainControl(method="cv",number=10),tuneGrid=data.frame(nvmax=2:6)) 

Linear Regression with Backwards Selection 

32 samples
10 predictors

No pre-processing
Resampling: Cross-Validated (10 fold) 
Summary of sample sizes: 30, 28, 28, 28, 30, 28, ... 
Resampling results across tuning parameters:

  nvmax  RMSE      Rsquared   MAE     
  2      3.299712  0.9169529  2.783068
  3      3.124146  0.8895539  2.750305
  4      3.249803  0.8849213  2.853777
  5      3.258143  0.8939493  2.823721
  6      3.123481  0.8917197  2.723475

RMSE was used to select the optimal model using the smallest value.
The final value used for the model was nvmax = 6.

您可以在此website中使用跃点查看有关变量选择的更多信息,>

© www.soinside.com 2019 - 2024. All rights reserved.