Как указать задержку проверки, установленную для каретки
Мне действительно нравится использовать каретку, по крайней мере, на ранних этапах моделирования, особенно для этого »Это очень легко использовать методы передискретизации. Однако я'Я работаю над моделью, в которой учебный набор содержит достаточное количество случаев, добавленных с помощью самообучения под наблюдением, и из-за этого мои результаты перекрестной проверки действительно искажены. Мое решение этого заключается в использовании набора проверки для измерения производительности модели, но я могуНе вижу способа использовать набор проверки непосредственно внутри каретки - я что-то упустил или это просто не поддерживается? Я знаю, что могу написать свои собственные обертки, чтобы делать то, что обычно делает каретка для m, но было бы очень хорошо, если бы был обходной путь без необходимости делать это.
Вот тривиальный пример того, что я испытываю:
> library(caret)
> set.seed(1)
>
> #training/validation sets
> i train valid
> #make my model
> tc model.rf
> #model parameters are selected using CV results...
> model.rf
100 samples
4 predictors
3 classes: 'setosa', 'versicolor', 'virginica'
No pre-processing
Resampling: Cross-Validation (10 fold)
Summary of sample sizes: 90, 90, 90, 89, 90, 92, ...
Resampling results across tuning parameters:
mtry Accuracy Kappa Accuracy SD Kappa SD
2 0.971 0.956 0.0469 0.0717
3 0.971 0.956 0.0469 0.0717
4 0.971 0.956 0.0469 0.0717
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry = 2.
>
> #have to manually check validation set
> valid.pred table(valid.pred,valid$Species)
valid.pred setosa versicolor virginica
setosa 17 0 0
versicolor 0 20 1
virginica 0 2 10
> mean(valid.pred==valid$Species)
[1] 0.94
Я изначально думал, что смогу сделать это, создавsummaryFunction()
дляtrainControl()
объект, но я не вижу, как ссылаться на мой объект модели, чтобы получить прогнозы из набора проверки (документация -http://caret.r-forge.r-project.org/training.html - только спискиданные", "лев» а также "модель» как возможные параметры). Например, это явно не будет работать:
tc$summaryFunction tc$summaryFunction train(Species ~ ., data=train,method="rf",trControl=tc)
note: only 1 unique complexity parameters in default grid. Truncating the grid to 1 .
Called from: trControl$summaryFunction(testOutput, classLevels, method)
Browse[1]> lapply(sys.frames(),function(x) ls(envi=x))
[[1]]
[1] "x"
[[2]]
[1] "cons" "contrasts" "data" "form" "m" "na.action" "subset"
[8] "Terms" "w" "weights" "x" "xint" "y"
[[3]]
[1] "x"
[[4]]
[1] "classLevels" "funcCall" "maximize" "method" "metric" "modelInfo"
[7] "modelType" "paramCols" "ppMethods" "preProcess" "startTime" "testOutput"
[13] "trainData" "trainInfo" "trControl" "tuneGrid" "tuneLength" "weights"
[19] "x" "y"
[[5]]
[1] "data" "lev" "model"