¿Debería haber siempre más datos de entrenamiento que datos de prueba? ¿Por qué?

Al entrenar un modelo, esencialmente comienza con alguna solución aleatoria (su inicialización) y lentamente itera en pequeños pasos hacia una mejor solución incorporando correcciones para los errores cometidos. Mientras realiza la prueba, simplemente pasa los datos una vez a su modelo entrenado y los resultados se presentan como predicciones.

Supongamos que las muestras de datos de entrenamiento y prueba provienen de la misma distribución, es decir, hay patrones comunes en ambos. Si, durante la prueba, presenta algunos ejemplos que tienen patrones complejos que son diferentes de los que se entrena en el modelo, entonces hay una alta probabilidad de que la salida sea incorrecta. En tales casos, incluso si obtiene el resultado correcto, no puede estar seguro de si fue aleatorio o si su modelo realmente aprendió los patrones subyacentes.

Se considera que la suposición anterior se cumple en casi todos los casos y hay casos específicos de ambigüedad en algunos conjuntos de datos donde esto falla y los diseñadores de modelos los conocen. Cuando se mantiene, podemos decir que el modelo puede generalizarse bien.

Ahora llegando a la pregunta exacta,
¿Deberían los datos de entrenamiento ser siempre más que datos de prueba?
La respuesta es muy intuitiva. Se requieren múltiples entradas de tipo similar para que el modelo identifique los patrones subyacentes comunes, mientras que esta capacidad de identificación podría muy bien probarse utilizando menos muestras.

Ejemplo: su modelo necesita ver tantas imágenes de gatos como sea posible para comprender qué características son las del objeto en cuestión: los gatos y cuáles son solo ruido de fondo. Para tener un modelo que se generalice bien, debe asegurarse de que funcione independientemente del fondo, las intensidades de color, los tamaños, etc. Es posible que necesite de miles a millones de imágenes para lograr una extracción de características decente que conduzca a una baja precisión de clasificación. No necesita un millón de muestras únicas para probar si su modelo ha aprendido lo anterior y tener unas pocas muestras de cada tipo de gato debería ser suficiente.

Por lo tanto, típicamente los datos (entrenamiento + validación) son ~ 4 veces mayores que los datos de prueba.

Actualizar:
Puede encontrar algunas ideas interesantes en la teoría del aprendizaje computacional. Es posible obtener el tamaño de muestra mínimo de acuerdo con la teoría de aprendizaje Probablemente aproximada correcta (PAC) . Esta publicación de blog contiene una explicación detallada junto con una secuencia de comandos de Python de muestra: ¿son mejores los datos para el aprendizaje automático?

En lo que respecta a las redes neuronales, Ilya Sutskever tiene algunos consejos aquí: Una breve descripción general de Deep Learning. Citando el párrafo de Generalización :

Si bien es muy difícil decir algo específico sobre la naturaleza precisa de la optimización de las redes neuronales (excepto cerca de un mínimo local donde todo se vuelve convexo y sin interés), podemos decir algo no trivial y específico sobre la generalización.

Y lo que podemos decir es lo siguiente: en su famoso artículo de 1984 llamado “A Theory of the Learnable”, Valiant demostró, en términos generales, que si tiene un número finito de funciones, diga N, entonces cada error de entrenamiento estará cerca a cada error de prueba una vez que tenga más de log N casos de entrenamiento por un pequeño factor constante. Claramente, si cada error de entrenamiento está cerca de su error de prueba, entonces el sobreajuste es básicamente imposible (el sobreajuste ocurre cuando la brecha entre el entrenamiento y el error de prueba es grande). (También me dicen que este resultado se dio en el libro de Vapnik como un pequeño ejercicio). Este teorema es fácil de probar, pero no lo haré aquí.

Pero este resultado muy simple tiene una implicación genuina en cualquier implementación de redes neuronales. Supongamos que tengo una red neuronal con N parámetros. Cada parámetro será un float32. Por lo tanto, una red neuronal se especifica con 32N bits, lo que significa que no tenemos más que [math] 2 ^ {32N} [/ math] redes neuronales distintas, y probablemente mucho menos. Esto significa que no nos equiparemos demasiado una vez que tengamos más de 32N casos de entrenamiento. Lo cual es bueno. Significa que teóricamente está bien contar parámetros. Además, si estamos bastante seguros de que cada peso solo requiere 4 bits (digamos), y que todo lo demás es solo ruido, entonces podemos estar bastante seguros de que el número de casos de entrenamiento será un factor constante pequeño de 4N en lugar de 32N .

No. Pero los datos de capacitación deben contener tantas muestras que se requieran para reflejar todas (o al menos la mayoría) de las características importantes del problema. La regla general es que cuanto más grandes sean los datos de entrenamiento, mejor será el resultado. En general es cierto. Pero también depende de la calidad de los datos de entrenamiento. No hay formas absolutas de probar esto. pero puede intentar un experimento como lo sugiere Andrew Ng en su curso de ML.

%%

por ciento = 0.1
datos = leer (input_data)
para i = 1 a 9
datos de prueba = datos * porcentaje
train_data = data – train_data
porcentaje = porcentaje +0.1
modelo = clasificador (train_data)
train_accuracy (i) = predecir (train_data, modelo)
test_accuracy (i) = predecir (test_data, modelo)
parcela (train_accuracy)
Espere,
plot (test_accuracy)

%%

Aquí estamos trazando la precisión del tren y la precisión de la prueba dividiendo el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba. Ambos conjuntos son mutuamente excluyentes. En cada iteración, la cantidad de porcentaje de conjunto de prueba se incrementa en un 10% a partir del 10% del total de datos. Esto dará las curvas de aprendizaje. Al observarlos, obtenemos mucha información.

Si la precisión de la prueba está disminuyendo, más datos definitivamente ayudarán en el aprendizaje, de lo contrario, más datos no serán de ninguna ayuda.

More Interesting

¿Cómo realizan las empresas el análisis predictivo utilizando herramientas Hadoop / Big Data a gran escala?

¿Necesito aprender el desarrollo del backend si quiero convertirme en un científico de datos?

¿Qué estudios serían los más útiles para nuevas empresas durante las próximas décadas, informática o ciencia de datos?

¿Qué tipo de predicción puede ser posible usando la ciencia de datos en LinkedIn?

Después de Mu-sigma, ¿debería unirme a Flipkart o un inicio en análisis de datos?

El modelado dimensional popularizado por Ralph Kimball es quizás la metodología de implementación del almacén de datos más popular. Sin embargo, algunos cuestionan la escalabilidad de la metodología de Kimball. ¿Cuáles son algunas desventajas del método K?

Cómo hacer una carrera en big data

¿Cómo realizan los científicos de datos la selección del modelo? Al abordar, por ejemplo, un problema de clasificación, ¿cómo eligen los científicos de datos entre regresión logística, SVM, KNN, árboles de decisión, redes neuronales, etc.? ¿Es diferente para Kaggle?

¿Existen buenos MOOC sobre inferencia causal, análisis de series temporales y diseño experimental?

¿Es Scala una mejor opción que Python para Apache Spark en términos de rendimiento, curva de aprendizaje y facilidad de uso?

¿Qué área dentro de la ciencia de datos experimentará el mayor crecimiento laboral para los profesionales de análisis? (cuidado de la salud, riesgo, financiero, etc.)

Actualmente soy gerente de una reconocida empresa de análisis de datos. ¿Está bien para mí continuar en un puesto directivo, o se me considerará solo un gerente general (sin relevancia para la industria analítica) unos años más adelante, sin experiencia práctica en diferentes técnicas / tecnologías? ?

¿Todos los científicos necesitarán saber ciencia de datos?

Cómo comenzar con un proyecto relacionado con big data

¿Cómo se deben responder preguntas sobre las métricas de productos en entrevistas con científicos de datos?