En esta página de Wikipedia en la subsección para la validación cruzada de K-fold dice "En la validación cruzada de k-fold, la muestra original se divide aleatoriamente en k submuestras de igual tamaño. De las k submuestras, se retiene una sola submuestra como datos de validación para prueba del modelo, y las restantes submuestras k - 1 se utilizan como datos de entrenamiento ". Los datos de prueba no están en la imagen en absoluto.
Mientras que en un libro que leí, el autor indica claramente
- Los datos completos se dividen en tres conjuntos: conjunto de entrenamiento, conjunto de prueba y conjunto de validación (o submuestras en lenguaje Wikipedias).
- De las k submuestras, una submuestra se retiene como datos de validación, otra submuestra se retiene como datos de prueba y las k-2 submuestras se usan como datos de entrenamiento.
¿Cual es verdad?
Respuestas:
Ambos son correctos en su propio contexto. Describen dos formas diferentes de selección de modelos en diferentes situaciones.
En general, cuando realiza la selección y prueba del modelo, sus datos se dividen en tres partes: conjunto de capacitación, conjunto de validación y conjunto de prueba. Utiliza su conjunto de entrenamiento para entrenar diferentes modelos, estima el rendimiento en su conjunto de validación, luego selecciona el modelo con un rendimiento óptimo y lo prueba en su conjunto de prueba.
Por otro lado, si está utilizando la validación cruzada K-fold para estimar el rendimiento de un modelo, sus datos se dividen en K fold, recorre los K fold y cada vez usa un fold como prueba (o validación) establece y usa los pliegues del resto (K-1) como conjunto de entrenamiento. Luego, promedia en todos los pliegues para obtener el rendimiento de prueba estimado de su modelo. A esto se refiere la página de Wikipedia.
Pero tenga en cuenta que esto es para probar un modelo específico, si tiene varios modelos candidatos y desea hacer la selección del modelo también, debe seleccionar un modelo solo con su conjunto de entrenamiento para evitar esta sutil falacia de lógica circular. Entonces divide sus 'datos de entrenamiento' (K-1) en dos partes, una para entrenamiento y otra para validación. Esto significa que hace una 'validación cruzada' adicional primero para seleccionar el modelo óptimo dentro de los pliegues (K-1), y luego prueba este modelo óptimo en su pliegue de prueba. En otras palabras, está realizando una validación cruzada de dos niveles, una es la validación cruzada K-fold en general, y dentro de cada bucle de validación cruzada, hay una validación cruzada adicional (K-1) para Selección de modelo. Luego tiene lo que dijo en su pregunta: 'De las k submuestras, una submuestra se retiene como datos de validación, otra submuestra se retiene como datos de prueba y las k-2 submuestras se usan como datos de entrenamiento'.
fuente
Aquí vuelvo a decir lo que obtuve de la respuesta de @Yuanning y los comentarios de @cbeleites en forma de pseudocódigo. Esto puede ser útil para personas como yo.
Para medir el rendimiento de un modelo determinado solo necesitamos entrenamiento y conjuntos de prueba:
Pero si necesitamos hacer una selección de modelo, deberíamos hacer esto:
fuente
k_performance
pretende que sea la etiqueta para un pliegue específico entre el número total dek_select
pliegues de rendimiento? Supongo que esto va a su pregunta sobre "Cómo seleccionar test_set". También agradecería comentarios específicos sobre esto. He visto esta validación cruzada 'anidada' para la selección del modelo aludida, pero nunca descrita en detalle.