Esto es similar a los métodos de muestreo de Caret , aunque eso realmente nunca respondió a esta parte de la pregunta de una manera acordada.
la función de tren de caret ofrece cv
y repeatedcv
. ¿Cuál es la diferencia en decir haciendo:
MyTrainControl=trainControl(
method = "cv",
number=5,
repeats=5
)
vs
MyTrainControl=trainControl(
method = "repeatedcv",
number=5,
repeats=5
)
Entiendo que cv
divide el conjunto en k-pliegues (parámetro number
), y luego comienza de nuevo y ejecuta sus parámetros repeats
varias veces.
Lo único que se me ocurre es que, ¿puede ser regular cv
con repeats
los mismos índices exactos para los pliegues cada vez? esencialmente ejecutando los cv
mismos pliegues exactos cada vez, ¿vs quizás repeatedcv
selecciona nuevos pliegues cada vez?
¿Alguien puede aclarar?
r
machine-learning
caret
Brian Feeny
fuente
fuente
Control()
sintaxis del tren en R) para cada uno de los k pliegues cruzados (dado por número). En el pliegue cruzado, mientras se usa CV, es un proceso de una sola vez en cada pliegue (establecido usando números en el trencontrol()
).Respuestas:
Según el manual de caret, página 22 , el parámetro
repeats
solo se aplica cuandomethod
se establece enrepeatedcv
, por lo que no se realiza ninguna repetición cuandomethod
se establece encv
. Entonces, la diferencia entre ambos métodos es que serepeatedcv
repite ycv
no.Aparte: repetir una validación cruzada con exactamente la misma división producirá exactamente el mismo resultado para cada repetición (suponiendo que el modelo esté entrenado de manera determinista), lo que no solo es ineficiente, sino también peligroso cuando se trata de comparar los resultados de validación para diferentes algoritmos modelo de manera estadística. Así que tenga en cuenta esto si alguna vez tiene que programar una validación usted mismo.
fuente
El código real detrás de estos parámetros se puede encontrar en los archivos fuente
selectByFilter.R
ycreateDataPartition.R
(anteriormentecreateFolds.R
) en la carpeta `caret / R / 'del paquete.Vea estos archivos, por ejemplo, aquí y aquí (tenga en cuenta que estos enlaces permanentes pueden apuntar a una versión anterior del código). Para mayor comodidad, se muestran a continuación los fragmentos relevantes (a partir de la versión 6.0-78 c. Nov. 2017)
En selectByFilter.R c. línea 157
En createDataPartition.R c. línea 227
fuente