Tengo un conjunto de datos con 26 características y 31000 filas. Es el conjunto de datos de 38 sujetos. Es para un sistema biométrico. Entonces quiero poder identificar sujetos.
Para tener un conjunto de pruebas, sé que tengo que eliminar algunos valores.
Entonces, ¿qué es mejor hacer y por qué?
(a) mantenga 30 sujetos como conjunto de entrenamiento y elimine 8 sujetos como conjunto de prueba
(b) mantenga los 38 temas, pero elimine algunas filas de cada uno. Así que al final terminaré con un conjunto de entrenamiento: 24800 filas de 38 sujetos Y un conjunto de prueba: 6200 filas de 38 sujetos
Respuestas:
Creo que la respuesta de Matthew Gunn es correcta, pero me parece que el CV "a nivel de registro" puede abarcar dos conceptos diferentes:
Los registros se dividen aleatoriamente en pliegues, independientemente del tema o el tiempo.
Los registros se dividen en pliegues basados en el tiempo, sin pliegues utilizados para el entrenamiento que contiene datos del inicio del pliegue de prueba.
En el primer caso, cualquier naturaleza de serie temporal de sus datos se ve comprometida, ya que su conjunto de entrenamiento puede incluir datos de antes y después de su conjunto de pruebas. El principio de Train / Test es que los datos de entrenamiento representan datos conocidos hasta el presente, y los datos de prueba representan datos aún no vistos (quizás literalmente del futuro).
Quizás la autocorrelación de series temporales compromete la opción # 2. Quizás el elemento de tiempo del modelo no sea realmente importante, por lo que es probable que las observaciones "pasadas" y "futuras" sean las mismas. En estos casos, ni # 1 ni # 2 es el camino a seguir.
Si solo hay estacionalidad y no tendencias, parece que está bien incluir "el futuro" en el entrenamiento de algunas asignaturas para predecir nuevas asignaturas (que se verán afectadas por la misma estacionalidad). Si hay tendencias, la capacitación sobre el futuro debería aprender algo sobre el futuro que realmente no sabría al usar el modelo en producción.
En el ejemplo del OP, parece que el tema es bueno. Pero si las tendencias y las preocupaciones sobre las series temporales formaran parte del modelo, trataría de utilizar la partición basada en el tema y el tiempo para que entrenara en un conjunto de temas antes de un punto específico en el tiempo, luego realice una prueba en los otros temas después ese punto específico en el tiempo.
fuente
Una distinción crítica es si desea:
El caso mucho más común es el número de caso (1). Por ejemplo, ¿qué tan bien predice los ataques cardíacos para alguien que ingresa a la sala de emergencias? Y si está en el caso (1), es casi seguro que debería hacer (a) validación cruzada basada en temas en lugar de (b) validación cruzada basada en registros. Hacer una validación basada en registros en el caso (1) probablemente conducirá a estimaciones de rendimiento excesivamente altas y falsas sobre nuevos temas.
No entiendo con precisión lo que estás tratando de hacer (y tal vez es un estudio propio, por lo que la pregunta no es del todo realista). No sé en qué caso te encuentras. Si estás en el caso mucho menos común (2), la validación de registro inteligente puede estar bien.
Un tema general en las estadísticas es pensar cuidadosamente sobre lo que es independiente y lo que está correlacionado. En términos generales, una observación independiente tiende a ser un tema diferente. Si desea predecir el rendimiento en nuevas asignaturas, ¡debe probar en asignaturas en las que no entrenó!
¿Por qué la validación cruzada por temas en lugar de por registros?
En entornos típicos, las observaciones repetidas del mismo individuo se correlacionan entre sí incluso después de condicionar las características. ¡Por lo tanto, con la validación cruzada a nivel de registro, su conjunto de prueba no es independiente de su conjunto de entrenamiento! En el caso extremo de la correlación perfecta, ¡tendría exactamente las mismas observaciones en el conjunto de entrenamiento y el conjunto de prueba! ¡Estarías entrenando en el set de prueba! El rendimiento medido en la validación cruzada no sería predictivo del rendimiento en nuevos sujetos.
Por ejemplo, este artículo reciente llama validación cruzada de registro, `` Voodoo Machine Learning ''.
Pero qué hacer con tan pocos temas ...
Quizás algunos comentaristas más experimentados con la validación cruzada que yo podrían intervenir, pero para mí, esto parece un posible candidato para (también conocido como omitir una validación cruzada).k=n
Para maximizar los datos para la capacitación, algo que podría hacer es dejar de lado un tema para la validación cruzada. Cada iteración, prueba en un tema diferente y entrena en todos los demás.
Si todas las asignaturas son muy diferentes, es posible que tenga cerca de y desee incluir tantas asignaturas independientes en el conjunto de entrenamiento.n=38
fuente
Realmente depende de cómo visualice la configuración que desea emular con la división tren / prueba. Para hacer las cosas concretas, digamos que cada fila describe la calidad del sueño de un sujeto en una sola noche.
Es posible que, en el futuro, cada sujeto llegue primero a un laboratorio de sueño y le brinde la calidad del sueño durante algunas noches. Después de eso, deberá predecir la calidad del sueño de las noches futuras para estos sujetos . En este caso, usaría su opción b). En
sklearn
, podrías usarsklearn.model_selection.StratifiedShuffleSplit
Es posible que, en el futuro, algunos sujetos vengan primero a un laboratorio del sueño y le proporcionen la calidad del sueño durante algunas noches. Después de eso, tendrá que predecir la calidad del sueño de las noches futuras para otros sujetos . En este caso, usaría su opción a). En
sklearn
, podrías usarsklearn.cross_validation.LeavePLabelOut
fuente
Para intervenir, supongo que la aplicación es predecir sujetos desconocidos. Eso significa (independientemente de si tiene series de tiempo o mediciones repetidas inherentemente desordenadas) que la división debe hacerse para que los sujetos desconocidos sean evaluados => división a)
Sin embargo, teniendo en cuenta que solo tiene 38 asignaturas, debe pensar un poco en la validación de muestreo Desde mi experiencia trabajando con tamaños de muestra igualmente pequeños (aunque con más funciones), aquí hay algunas recomendaciones en pocas palabras:
Opta por una validación cruzada iterativa fuera de la rutina o por temas. Permiten evaluar la estabilidad de sus modelos, lo cual es crucial en problemas de tamaño de muestra pequeño. Los resultados pueden incluso usarse para un modelo agregado en caso de que la inestabilidad sea un problema.
No no hacer licencia de un objeto de salida. No permite medir la estabilidad del modelo ni reducirla. Además, hay situaciones en las que está sujeto a un sesgo pesimista grande debido al pequeño tamaño de la muestra (a diferencia del sesgo pesimista mínimo que se espera).
Si está utilizando las típicas cifras de clasificación de mérito, como precisión, sensibilidad, especificidad, etc., y la tarea es clasificar correctamente a los sujetos: tenga en cuenta que el problema crucial es medir el rendimiento porque la incertidumbre de los resultados de la prueba depende del número absoluto de casos de prueba. Como ejemplo, observar 17 predicciones correctas de 17 sujetos verdaderamente positivos corresponde a un intervalo de confianza del 95% para una sensibilidad que oscila entre aproximadamente el 80% y el 100%.
En otras palabras, no podrá hacer una optimización de modelo basada en datos basada en eso.
Esto también significa que no necesita configurar una división de tres conjuntos (validación cruzada anidada), ya que desperdiciaría recursos en comparaciones estadísticamente sin sentido aquí: es casi seguro que su optimización fallará (aunque es posible que no note eso si no verifique la estabilidad).
El mismo cálculo para el intervalo de confianza binomial para los 5 (3) sujetos de prueba / optimización / validación propuestos arroja un 95% de ci para todos los rangos correctos hasta el 50% (30%), por lo que, según los resultados perfectos de la prueba, su intervalo de confianza aún incluiría 50 / 50 adivinanzas!
Algunos artículos que escribimos sobre estos temas:
Beleites, C .; Baumgartner, R .; Bowman, C .; Somorjai, R .; Steiner, G .; Salzer, R. y Sowa, MG Reducción de la variación en la estimación del error de clasificación utilizando conjuntos de datos dispersos, Chemom Intell Lab Syst, 79, 91-100 (2005).
Beleites, C. y Salzer, R .: Evaluación y mejora de la estabilidad de modelos quimiométricos en situaciones de pequeño tamaño de muestra, Anal Bioanal Chem, 390, 1261-1271 (2008). DOI: 10.1007 / s00216-007-1818-6
Beleites, C. y Neugebauer, U. y Bocklitz, T. y Krafft, C. y Popp, J .: Planificación del tamaño de la muestra para modelos de clasificación. Anal Chim Acta, 2013, 760, 25-33. DOI: 10.1016 / j.aca.2012.11.007
manuscrito aceptado en arXiv: 1211.1323
fuente