En algunas conferencias y tutoriales que he visto, sugieren dividir sus datos en tres partes: capacitación, validación y prueba. Pero no está claro cómo se debe usar el conjunto de datos de prueba, ni cómo este enfoque es mejor que la validación cruzada en todo el conjunto de datos.
Digamos que hemos guardado el 20% de nuestros datos como un conjunto de prueba. Luego tomamos el resto, lo dividimos en k pliegues y, mediante validación cruzada, encontramos el modelo que hace la mejor predicción sobre datos desconocidos de este conjunto de datos. Digamos que el mejor modelo que hemos encontrado nos da una precisión del 75% .
Varios tutoriales y muchas preguntas en varios sitios web de preguntas y respuestas dicen que ahora podemos verificar nuestro modelo en un conjunto de datos guardado (prueba). Pero todavía no puedo entender cómo se hace exactamente, ni cuál es el punto.
Digamos que tenemos una precisión del 70% en el conjunto de datos de prueba. Entonces, ¿qué hacemos ahora? ¿Intentamos con otro modelo, y luego con otro, hasta que obtengamos una puntuación alta en nuestro conjunto de datos de prueba? Pero en este caso realmente parece que encontraremos el modelo que se ajusta a nuestro conjunto de prueba limitado (solo el 20%) . No significa que encontraremos el modelo que es mejor en general.
Además, ¿cómo podemos considerar este puntaje como una evaluación general del modelo, si solo se calcula en un conjunto de datos limitado? Si este puntaje es bajo, tal vez tuvimos mala suerte y seleccionamos datos de prueba "malos".
Por otro lado, si usamos todos los datos que tenemos y luego elegimos el modelo usando la validación cruzada k-fold, encontraremos el modelo que hace la mejor predicción sobre datos desconocidos de todo el conjunto de datos que tenemos.
Respuestas:
Esto es similar a otra pregunta que respondí con respecto a la validación cruzada y los conjuntos de pruebas . El concepto clave para entender aquí son los conjuntos de datos independientes . Considere solo dos escenarios:
Ahora, si soy un investigador que no es tan afortunado, ¿qué hago? Bueno, puedes intentar imitar ese escenario exacto:
Para abordar sus otras preocupaciones:
Más o menos, la idea es que esté creando el mejor modelo que pueda a partir de sus datos y luego evaluándolo en algunos datos más que nunca antes haya visto. Puede volver a evaluar su esquema de validación cruzada, pero una vez que tenga un modelo ajustado (es decir, hiperparámetros), avanzará con ese modelo porque fue lo mejor que pudo hacer. La clave es NUNCA UTILIZAR SUS DATOS DE PRUEBA PARA SINTONIZAR . El resultado de los datos de prueba es el rendimiento de su modelo en datos "generales". La replicación de este proceso eliminaría la independencia de los conjuntos de datos (que era el punto completo). Esta también es la dirección en otra pregunta sobre datos de prueba / validación .
Esto es poco probable si ha dividido sus datos correctamente. Debería dividir sus datos al azar (aunque potencialmente estratificados para el equilibrio de clases). Si su conjunto de datos es lo suficientemente grande como para dividir sus datos en tres partes, su subconjunto de prueba debe ser lo suficientemente grande como para que haya muy pocas posibilidades de que elija datos incorrectos. Es más probable que su modelo haya sido sobreajustado.
fuente
Si todo lo que va a hacer es entrenar un modelo con la configuración predeterminada en el conjunto de datos sin procesar o mínimamente preprocesado (p. Ej., Codificación de un solo uso y / o eliminación de NA), no necesita un conjunto de pruebas por separado, simplemente puede entrenar en su entrene y pruebe en su conjunto de validación, o incluso mejor, entrene en todo el conjunto utilizando la validación cruzada para estimar su rendimiento.
Sin embargo, tan pronto como su conocimiento sobre los datos le obligue a realizar cambios en su estrategia original, ahora ha "contaminado" su resultado. Algunos ejemplos incluyen:
Elección del modelo: Usted probó máquinas logísticas, de lazo, de bosque aleatorio, XGBoost y de soporte y eligió el mejor modelo
Ajuste de parámetros: sintonizó un XGBoost para encontrar los hiperparámetros óptimos
Selección de características: utilizó la selección hacia atrás, algoritmo genético, boruta, etc. para elegir un subconjunto óptimo de características para incluir en su modelo
Falta de imputación: imputaste las variables faltantes con la media, o con un modelo simple basado en las otras variables
Transformación de características: Centraste y escalaste tus variables numéricas para reemplazarlas con una puntuación z (número de desviaciones estándar de la media)
En todos los casos anteriores, el uso de un único conjunto de reserva, o incluso la validación cruzada, no le dará una estimación realista del rendimiento en el mundo real porque está utilizando información que no tendrá sobre datos futuros en su decisión. En cambio, está seleccionando el mejor modelo, los mejores hiperparámetros, el mejor conjunto de características, etc. para sus datos, y es probable que esté "ajustando" ligeramente su estrategia a sus datos. Para obtener una estimación honesta del rendimiento en el mundo real, debe calificarlo en los datos que no entraron en el proceso de decisión, de ahí la práctica común de usar un conjunto de pruebas independiente separado de su entrenamiento (modelado) y validación ( selección de un conjunto de modelos, características, hiperparámetros, etc.
Como alternativa a mantener un conjunto de prueba, puede utilizar una técnica llamada validación cruzada anidada. Esto requiere que codifique toda su estrategia de modelado (transformación, imputación, selección de características, selección de modelo, ajuste de hiperparámetro) como una función no paramétrica y luego realice una validación cruzada en toda esa función como si fuera simplemente una función de ajuste del modelo. Esto es difícil de hacer en la mayoría de los paquetes ML, pero puede implementarse con bastante facilidad en R con el paquete mlr utilizando envoltorios para definir su estrategia de entrenamiento y luego volver a muestrear a su alumno envuelto:
https://mlr.mlr-org.com/articles/tutorial/nested_resampling.html
fuente
Supongo que estás haciendo clasificación.
Tome sus datos y divídalos 70/30 en subconjuntos trainingData / testData. Tome el subconjunto trainingData y divídalo 70/30 nuevamente en los subconjuntos trainingData / validateData. Ahora tiene 3 subconjuntos de sus datos originales: trainingData (.7 * .7), validateData (.7 * .3) y testData (.3).
Entrena su modelo con trainingData. Luego, verifica el rendimiento de ese modelo usando validateData, que podemos considerar como independiente de trainingData y, por lo tanto, una buena evaluación de qué tan bien el modelo se está generalizando. Supongamos que logras un 75% de precisión.
Ahora vuelve a entrenar su modelo un número arbitrario de veces. En cada reentrenamiento, está evaluando un conjunto diferente de hiperparámetros (los parámetros que se alimentan a su modelo en primer lugar frente a aquellos para los que está optimizando su modelo) pero aún utiliza el subconjunto trainingData. En cada reentrenamiento, también verifica nuevamente qué tan bien generaliza el nuevo modelo al verificar el rendimiento en validateData.
Una vez que haya verificado todas las combinaciones de hiperparámetros que quiere evaluar, elija el conjunto de hiperparámetros que le dio su mejor rendimiento en validateData. Supongamos que su mejor rendimiento en validateData fue del 80% de precisión. Estos son sus hiperparámetros finales y el modelo definido por esos hiperparámetros es el que usará para el siguiente paso.
Ahora toma el modelo que usa sus hiperparámetros finales y evalúa testData. Esta es la primera vez que testData ha sido tocado desde que comenzó todo este proceso. Si obtiene un rendimiento testData que es comparable a su rendimiento en validateData (aunque generalmente será un poco más bajo), ¡entonces puede sentirse seguro de que su modelo funciona como se espera y se generaliza bien! Si eso sucede, ¡este es tu modelo final!
¿Por qué hacer todo esto? Estás tratando de evitar el sobreajuste. Siempre existe el riesgo de que se sobreajuste a los datos que utiliza cuando entrena y ajusta (también conocido como validación) de su modelo. Si entrena, ajusta (valida) y prueba usando solo un conjunto de datos, existe una buena probabilidad de que sobreajuste esos datos y no se generalizará bien. Al separar los conjuntos de datos de entrenamiento y prueba (y suponiendo que sintonice usando los datos de prueba), tiene la oportunidad de comprobarse a sí mismo internamente, pero todavía existe la posibilidad de que solo esté ajustando los datos de prueba ahora. Es por eso que separamos un tercer conjunto de datos, lo validamos, por lo que tenemos una capa adicional de mantenernos honestos internamente. La sintonización con validateData nos impide adaptarnos en exceso a trainingData. Las pruebas finales con testData nos evitan el sobreajuste para validar los datos.
fuente
Veámoslo de la siguiente manera
Práctica común
a) Datos de capacitación: utilizados para elegir los parámetros del modelo.
b) Datos de validación: se utilizan para elegir hiperparámetros.
c) Datos de prueba: se utilizan para obtener la confianza de la salida de los dos pasos anteriores
Otra forma de ver la parte 1
a) Nuestro grupo de candidatos modelo es un conjunto de 5 dimenson, es decir,
b) El paso 1a reduce los candidatos modelo de 5 dimensiones a 1 dimensión.
c) El paso 1b reduce los candidatos modelo de 1 dimensión a dimensión 0, que es un modelo único.
d) Sin embargo, el OP puede pensar que el resultado 'final' anterior no está funcionando lo suficientemente bien en el conjunto de datos de prueba y, por lo tanto, rehace todo el proceso nuevamente, por ejemplo, usando la regresión de cresta en lugar de la regresión lineal ordinaria. Luego, el conjunto de datos de prueba se usa varias veces y, por lo tanto, el ruido en estos datos puede producir un sobreajuste al decidir si usar regresión lineal o regresión de cresta.
e) Para tratar con un conjunto de modelos de alta dimensión con parámetros, hiperparámetros, tipos de modelos y métodos de preprocesamiento, cualquier división de los datos disponibles para nosotros es esencialmente definir un proceso de toma de decisiones que
Conclusión y respuestas a la pregunta de OP
a) Dos divisiones (entrenamiento y prueba), tres divisiones (capacitación, validación y prueba) o un número mayor de divisiones se trata esencialmente de reducir la dimensionalidad y asignar los datos (especialmente el ruido y el riesgo de sobreajuste).
b) En algún momento, puede llegar a un grupo de candidatos modelo 'final', y luego, puede pensar en cómo diseñar el proceso de reducción de la dimensión secuencialmente de modo que
c) ¿Qué pasa si no puedes lograr b?
fuente