¿Puedo usar un pequeño conjunto de Validación?

15

Entiendo el razonamiento detrás de dividir los datos en un conjunto de prueba y un conjunto de validación. También entiendo que el tamaño de la división dependerá de la situación, pero generalmente variará de 50/50 a 90/10.

Construí un RNN para corregir la ortografía y comenzar con un conjunto de datos de ~ 5 millones de oraciones. Afeito 500k oraciones y luego entreno con las ~ 4.5m oraciones restantes. Cuando termine la capacitación, tomo mi conjunto de validación y calculo la precisión.

Lo interesante es que después de solo el 4% de mi conjunto de validación tengo una precisión del 69,4% y este porcentaje no cambia en más del 0,1% en ninguna dirección. Finalmente, acabo de acortar la validación porque el número está atascado en 69.5%.

Entonces, ¿por qué cortar un 10% para la Validación cuando probablemente podría salirme con un 1%? ¿Importa?

Mark Cramer
fuente
44
Una respuesta general es que un tamaño de muestra mayor que yo diría que 10,000 será un subconjunto muy representativo de la población. Aumentar la muestra, si se ha extraído correctamente, puede ser costoso, mientras que la estimación que ve será aproximadamente la misma. Busque un concepto de intervalo de confianza.
Alexey Burnakov

Respuestas:

20

Los conjuntos de validación más grandes proporcionan estimaciones más precisas del rendimiento fuera de la muestra. Pero como ha notado, en algún momento esa estimación puede ser tan precisa como lo necesita, y puede hacer algunas predicciones aproximadas sobre el tamaño de la muestra de validación que necesita para llegar a ese punto.

Para una precisión de clasificación simple correcta / incorrecta, puede calcular el error estándar de la estimación como (desviación estándar de una variable de Bernouilli), donde es la probabilidad de una clasificación correcta, y es el tamaño del conjunto de validación. Por supuesto que no conoce , pero es posible que tenga una idea de su rango. Por ejemplo, supongamos que espera una precisión entre 60-80% y desea que sus estimaciones tengan un error estándar menor que 0.1%: ¿Qué tan grande debería ser (el tamaño de el conjunto de validación) ser? Para obtenemos: Para pnpp(1p)/npnpnp=0.6n> 0.6 - 0.6 2

p(1p)/n<0.001
np=0.6p=0.8n>0.8-0.82
n>0.60.620.0012=240,000
p=0.8obtenemos: Así que esto nos dice que podría salirse con el uso de menos del 5% de sus 5 millones de muestras de datos, para su validación. Este porcentaje disminuye si espera un mayor rendimiento, o especialmente si está satisfecho con un error estándar más bajo de su estimación de rendimiento fuera de muestra (por ejemplo, con y para un se <1%, solo necesita 2100 muestras de validación , o menos del veinte por ciento de sus datos).p=0.7
n>0.80.820.0012=160,000
p=0.7

Estos cálculos también muestran el punto hecho por Tim en su respuesta, que la precisión de sus estimaciones depende del tamaño absoluto de su conjunto de validación (es decir, en ), en lugar de su tamaño en relación con el conjunto de entrenamiento.n

(También podría agregar que estoy asumiendo un muestreo representativo aquí. Si sus datos son muy heterogéneos, es posible que necesite usar conjuntos de validación más grandes solo para asegurarse de que los datos de validación incluyan las mismas condiciones, etc., que los datos de su tren y prueba. )

Ruben van Bergen
fuente
14
Tenga en cuenta que alcanza su máximo en , en cuyo caso . Por lo tanto, siempre puede usar como una estimación del peor de los casos. En particular, 250,000 muestras de validación siempre deberían ser suficientes para alcanzar su objetivo de <0.1% de error estándar máximo (y 2,500 muestras serán suficientes para <1%), independientemente de cuál sea la precisión real de la clasificación. p(1p)p=1/2p(1p)=1/4p(1p)/n1/4n
Ilmari Karonen
11

Andrew Ng ofrece una buena discusión sobre este problema en su curso de aprendizaje profundo en Coursera.org . Como él señala, las divisiones estándar como 8: 2 o 9: 1 son válidas si sus datos son pequeños o moderadamente grandes, pero muchos problemas actuales de aprendizaje automático utilizan grandes cantidades de datos (por ejemplo, millones de observaciones como en su caso), y en tal escenario, podría dejar el 2%, el 1% o incluso menos de los datos como un conjunto de prueba, tomando todos los datos restantes para su conjunto de entrenamiento (en realidad argumenta que también usa un conjunto de desarrollo). Como él argumenta, cuantos más datos alimente su algoritmo, mejor para su rendimiento y esto es especialmente cierto para el aprendizaje profundo * (también señala que este no debe ser el caso para los algoritmos de aprendizaje automático no profundo).

Como ya noté en el comentario de Alex Burn , no se trata realmente del tamaño de su conjunto de pruebas, sino de su representatividad para su problema. Por lo general, con un tamaño mayor de los datos, esperamos que sea más representativo, pero esto no tiene por qué ser así. Esto siempre es una compensación y necesita hacer consideraciones específicas del problema. No hay reglas que indiquen que el conjunto de pruebas no debe ser menor que X casos, o menor que Y% de sus datos.

* - Descargo de responsabilidad: estoy repitiendo los argumentos de Andrew Ng aquí, no me consideraría un especialista en aprendizaje profundo.

Tim
fuente
2
"No se trata realmente del tamaño de su conjunto de pruebas, sino de su representatividad para su problema". - probablemente una forma pintoresca de decirlo es que no tiene sentido tener un conjunto de entrenamiento grande para algo que se ocupa de perros y gatos si su conjunto de entrenamiento está compuesto casi por completo de gatos.
JM no es un estadístico
Más específicamente, esto fue en la conferencia 'Train / Dev / Test sets' en la semana 1 del curso 'Mejorando las redes neuronales profundas: ajuste de hiperparámetros, regularización y optimización' (que es el punto 2 de toda la especialización de aprendizaje profundo)
icc97
2
Aquí está la cita completa de la conferencia: "Entonces, en este ejemplo, donde tienes un millón de ejemplos, si necesitas solo 10,000 para tu desarrollo y 10,000 para tu prueba, tu proporción será más como esta 10,000 es 1% de 1 millón, así que Tendrás 98% de entrenamiento, 1% de desarrollo, 1% de prueba. Y también he visto aplicaciones en las que, si tienes incluso más de un millón de ejemplos, podrías terminar con 99.5% de entrenamiento y 0.25% de desarrollo, 0.25% de prueba O tal vez una prueba de 0.4% dev, 0.1% "
icc97
5

Asymptotic Statistical Theory of Overtraining and Cross-Validation1/ /2nortenortenorte=5 5106 60.00032=0,032%

[1] https://www.ncbi.nlm.nih.gov/pubmed/18255701

Jan Kukacka
fuente