Isso é semelhante à pergunta dos métodos de re-amostragem da Caret , embora isso nunca tenha respondido a essa parte da pergunta de maneira acordada.
A função de trem do cursor oferece cv
e repeatedcv
. Qual é a diferença em dizer fazendo:
MyTrainControl=trainControl(
method = "cv",
number=5,
repeats=5
)
vs
MyTrainControl=trainControl(
method = "repeatedcv",
number=5,
repeats=5
)
Entendo cv
quebras o conjunto em dobras k (parâmetro number
) e, em seguida, recomeça e executa os parâmetros repeats
várias vezes.
A única coisa que eu conseguia pensar é que talvez regular cv
com repeats
os mesmos índices exatos para as dobras de cada vez? essencialmente executando as cv
mesmas dobras exatas de cada vez, vs talvez repeatedcv
selecione novas dobras a cada vez?
Alguém pode esclarecer?
r
machine-learning
caret
Brian Feeny
fonte
fonte
Control()
sintaxe de trem em R) para cada uma das k dobras cruzadas (fornecidas pelo número). Na dobra cruzada, enquanto estiver usando o CV, é um processo único em cada uma das dobras (definido usando números no tremcontrol()
).Respostas:
De acordo com o manual de interpolação, página 22 , o parâmetro
repeats
se aplica somente quandomethod
está definido comorepeatedcv
, portanto, nenhuma repetição é executada quandomethod
está definido comocv
. Portanto, a diferença entre os dois métodos é de fato que serepeatedcv
repete ecv
não.Além disso: repetir uma validação cruzada com exatamente a mesma divisão resultará exatamente no mesmo resultado para cada repetição (assumindo que o modelo seja treinado de maneira determinística), o que não é apenas ineficiente, mas também perigoso quando se trata de comparar os resultados da validação para diferentes algoritmos de modelo de maneira estatística. Portanto, esteja ciente disso se precisar programar uma validação por conta própria.
fonte
O código real por trás desses parâmetros pode ser encontrado nos arquivos de origem
selectByFilter.R
ecreateDataPartition.R
(anteriormentecreateFolds.R
) na pasta `caret / R / 'do pacote.Veja esses arquivos, por exemplo, aqui e aqui (cuidado: esses links permanentes podem eventualmente apontar para uma versão mais antiga do código). Por conveniência, os trechos relevantes (a partir da versão 6.0-78 c. Nov 2017) são mostrados abaixo
Em selectByFilter.R c. linha 157
Em createDataPartition.R c. linha 227
fonte