Una técnica común después de entrenar, validar y probar el modelo de preferencia de Machine Learning es usar el conjunto de datos completo, incluido el subconjunto de pruebas, para entrenar un modelo final para implementarlo , por ejemplo, en un producto.
Mi pregunta es: ¿es siempre lo mejor hacerlo? ¿Qué pasa si el rendimiento realmente se deteriora?
Por ejemplo, supongamos un caso en el que el modelo obtiene un puntaje de alrededor del 65% al clasificar el subconjunto de pruebas. Esto podría significar que o bien el modelo está entrenado de manera insuficiente O que el subconjunto de pruebas consta de valores atípicos. En el último caso, entrenar el modelo final con ellos disminuiría su rendimiento y lo descubrirá solo después de implementarlo.
Reformulando mi pregunta inicial:
Si tuviera una demostración única de un modelo , como implementarlo en dispositivos electrónicos integrados a bordo de un costoso experimento con un cohete, ¿confiaría en un modelo que se ha vuelto a entrenar con el subconjunto de prueba en el paso final sin volver a serlo? probado en su nuevo rendimiento?
Interesante pregunta. Personalmente, no he visto eso para los productos que entran en producción, pero entiendo la lógica.
Teóricamente, cuantos más datos haya visto su modelo implementado, mejor debería generalizarse. Entonces, si entrenó al modelo en el conjunto completo de datos que tiene disponible, debería generalizar mejor que un modelo que solo vio, por ejemplo, conjuntos de entrenamiento / val (por ejemplo, ~ 90%) del conjunto de datos completo.
El problema con esto (¡y la razón por la que dividimos los datos en conjuntos de tren / val / prueba en primer lugar!) Es que queremos poder hacer afirmaciones estadísticas en cuanto a la precisión de los datos no vistos. Tan pronto como volvamos a entrenar un modelo nuevamente en todos los datos, ya no es posible hacer tales afirmaciones.
[Editar]
Aquí hay una pregunta relacionada sobre validación cruzada , donde la respuesta aceptada me hace puntos similares y menciona otras formas de hacer las cosas.
Hacemos un bucle:
Eventualmente, si logras obtener una excelente puntuación en el conjunto de pruebas, puedes afirmar que se generaliza bien. Por lo tanto, la pregunta de si volver a entrenar en el conjunto de datos completo mejorará el rendimiento en futuros datos no vistos no es estrictamente algo que pueda probar. La evidencia empírica de un mejor rendimiento en otros conjuntos de problemas relacionados sería la única fuente u orientación en el momento en que debe tomar la decisión.
Una verificación de cordura sería probar el modelo final reentrenado nuevamente en el conjunto de prueba original; esperando que obtenga un puntaje más alto que nunca cuando el modelo solo vio el conjunto de tren / val, porque realmente ha visto el conjunto de prueba durante el entrenamiento. Esto no me haría sentir 100% seguro de que este modelo final es superior en todos los casos futuros, pero al menos es tan bueno como puede ser con los datos dados.
Tal vez haya argumentos más rigurosos en contra de hacer lo que usted dice (probablemente académicamente motivado), sin embargo, ¡parece atractivo para aplicaciones prácticas!
fuente
Un punto que debe enfatizarse sobre el aprendizaje automático de estadísticas es que no hay garantías . Cuando estima el rendimiento utilizando un conjunto extendido, eso es solo una estimación . Las estimaciones pueden estar equivocadas.
Esto lleva un tiempo acostumbrarse, pero es algo con lo que tendrá que sentirse cómodo. Cuando dices "¿Qué pasa si el rendimiento realmente se deteriora?", La respuesta es segura, eso podría suceder. El rendimiento real podría ser peor de lo que estimó / predijo. También podría ser mejor. Ambos son posibles. Eso es inevitable. Existe cierta incertidumbre inherente e irreducible.
Cuando evalúa el rendimiento utilizando un conjunto de prueba extendido, está utilizando datos del pasado para intentar predecir el rendimiento futuro. Como dicen, el rendimiento pasado no es garantía de resultados futuros . Este es un hecho de la vida que solo tenemos que aceptar.
No puedes dejar que esto te inmovilice. El hecho de que sea posible hacerlo peor de lo que predice no es una razón para evitar implementar en producción un modelo entrenado en los datos. En particular, también es posible hacerlo mal si no lo haces. Es posible que un modelo entrenado en todos los datos (tren + validación + prueba) sea peor que un modelo entrenado solo en la parte de tren + validación. También es posible que sea mejor. Entonces, en lugar de buscar una garantía, debemos preguntarnos: ¿Qué nos da la mejor oportunidad de éxito? ¿Qué es más probable que sea el más efectivo?
Y en este caso, cuando desee implementar en producción, lo mejor que puede hacer es utilizar todos los datos disponibles. En términos del rendimiento esperado, usar todos los datos no es peor que usar algunos de los datos, y potencialmente mejor. Por lo tanto, también puede utilizar todos los datos disponibles para entrenar el modelo cuando construya el modelo de producción. Las cosas aún pueden salir mal, siempre es posible tener mala suerte, siempre que use métodos estadísticos, pero esto le brinda la mejor oportunidad posible de que las cosas salgan bien.
En particular, la práctica estándar es la siguiente:
Reserve algunos de sus datos en un conjunto de prueba extendido. No existe una regla estricta sobre qué fracción usar, pero, por ejemplo, puede reservar un 20% para el conjunto de prueba y conservar el 80% restante para capacitación y validación. Normalmente, todas las divisiones deben ser aleatorias.
Luego, use los datos de capacitación y validación para probar múltiples arquitecturas e hiperparámetros, experimentando para encontrar el mejor modelo que pueda. Tome el 80% retenido para entrenamiento y validación, y divídalo en un conjunto de entrenamiento y un conjunto de validación, y entrene un modelo usando el conjunto de entrenamiento y luego mida su precisión en el conjunto de validación. Si está utilizando la validación cruzada, lo hará varias veces y promediará los resultados en el conjunto de validación; si no lo está, realizará una única división (por ejemplo, una división del 70% / 30% del 80%, o algo así) y evaluará el rendimiento en el conjunto de validación. Si tiene muchos hiperparámetros para probar, hágalo una vez para cada ajuste candidato de hiperparámetro. Si tiene muchas arquitecturas para probar, haga esto para cada arquitectura candidata. Puedes iterar sobre esto, usando lo que '
Una vez que eres feliz, congelas la elección de arquitectura, hiperparámetros, etc. Ahora tu experimentación está hecha. Una vez que llegue a este punto, nunca podrá volver a probar ninguna otra opción (sin obtener un nuevo conjunto de pruebas nuevo), así que no lo haga hasta que esté seguro de que está listo.
Cuando esté listo, entrena un modelo en el conjunto completo de entrenamiento + validación (ese 80%) utilizando la arquitectura y los hiperparámetros que seleccionó anteriormente. Luego, mida su precisión en el conjunto de prueba extendido. Esa es su estimación / predicción de cuán preciso será este enfoque de modelado. Obtienes un solo número aquí. Ese número es el que es: si no está satisfecho con él, no puede volver a los pasos 1 y 2 y hacer más experimentos; eso sería inválido.
Finalmente, para uso en producción, puede entrenar un modelo en todo el conjunto de datos, entrenamiento + validación + conjunto de prueba y ponerlo en uso en producción. Tenga en cuenta que nunca mide la precisión de este modelo de producción, ya que no tiene datos restantes para hacerlo; ya has usado todos los datos. Si desea una estimación de qué tan bien funcionará, tiene derecho a usar la precisión estimada del paso 4 como su predicción de qué tan bien funcionará en la producción, ya que es la mejor predicción disponible de su rendimiento futuro. Como siempre, no hay garantías: esa es la mejor estimación posible, dada la información disponible para nosotros. Ciertamente es posible que pueda ser peor de lo que predice, o mejor de lo que predijo, eso siempre es cierto.
fuente
Una de las razones para tener un conjunto de datos es evitar el sobreajuste. Si emplea la validación cruzada, esencialmente permite que todo el conjunto de datos actúe como conjunto de entrenamiento, pero el reentrenamiento no le permitirá validar si hay signos de sobreajuste. Supongo que de cualquier manera (validación cruzada o reentrenamiento con todo el conjunto de datos) no debería cambiar drásticamente su resultado (desde mi suposición sin educación), pero no podrá realizar ajustes de hiperparámetro o validar el rendimiento de su modelo como no lo hace. tener un conjunto de prueba. Es difícil decir si termina siendo mejor, pero supongo que la única forma de saberlo es hacer un A / B de los dos modelos con datos reales a lo largo del tiempo.
fuente