12 votos

¿Cuál es la forma más adecuada de crear un conjunto de retención: eliminar algunos sujetos o eliminar algunas observaciones de cada sujeto?

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. Así que quiero ser capaz de identificar a los sujetos.

Para tener un conjunto de pruebas, sé que tengo que eliminar algunos valores.

Entonces, ¿qué es mejor hacer y por qué?

  1. (a) mantener 30 sujetos como conjunto de entrenamiento y eliminar 8 sujetos como conjunto de prueba

  2. (b) mantener los 38 temas, pero eliminar algunas filas de cada uno. Así que al final terminaré con un conjunto de entrenamiento 24800 filas de 38 sujetos Y un conjunto de pruebas: 6200 filas de 38 sujetos

1 votos

Si se quiere identificar a los sujetos, ¿cómo se puede eliminar a los sujetos "enteros" para un conjunto de pruebas? El modelo entrenado en 30 sujetos sólo podrá identificar a esos 30 sujetos, no a los 8 sujetos que nunca ha visto. Su aclaración sobre el "sistema biométrico" puede hacer que la mayoría de las respuestas existentes no sean aplicables.

1 votos

Sería útil aclarar: (1) el preciso objetivo, cuál es la variable de resultado que intentas predecir (2) qué datos tienes y posiblemente (3) qué enfoque utilizas.

0 votos

Una vez entrenado el sistema, ¿cómo se desplegaría? ¿El objetivo es utilizarlo con personas que no están en el conjunto de entrenamiento? ¿Los nuevos datos serán de los mismos 38 sujetos? Intento entender cómo se supone que se va a utilizar el sistema y si estás en el caso (1) o en el caso (2) de la respuesta de @AmiTavory.

17voto

Martin Robins Puntos 1893

A crítico distinción es si quieres hacerlo:

  1. [Caso más común]: Construya una estimación del rendimiento en nuevos sujetos (extraídos de la misma población que sus datos).
  2. Construir una estimación del rendimiento en las nuevas observaciones del mismo sujetos como en su muestra.

El caso más común es el número (1). Por ejemplo, ¿hasta qué punto se pueden predecir los infartos de alguien que llega a urgencias? Y si estás en el caso (1), tú casi con toda seguridad debería hacer (a) una validación cruzada por temas en lugar de (b) una validación cruzada por registros. Hacer una validación por registro en el caso (1) probablemente conducirá a estimaciones falsas e irrazonables del rendimiento en nuevos sujetos.

No entiendo precisamente lo que intentas hacer (y quizás es autodidacta por lo que la pregunta no es del todo realista). No sé en qué caso estás. Si estás en el caso mucho menos común (2), la validación de registros puede estar bien.

Un tema general en estadística es pensar cuidadosamente en lo que es independiente y lo que está correlacionado. En general, una observación independiente tiende a ser una tema diferente. Si quiere predecir el rendimiento en nuevo temas, ¡debes hacer la prueba en temas que no has entrenado!

¿Por qué la validación cruzada por temas en lugar de por registros?

En los escenarios típicos, las observaciones repetidas del mismo individuo están correlacionadas entre sí incluso después de condicionar las características. Por lo tanto, con la validación cruzada de registros, el conjunto de pruebas no es ¡independientemente de su conjunto de entrenamiento! En el caso extremo de una correlación perfecta, tendrías exactamente las mismas observaciones en el conjunto de entrenamiento y en el conjunto de prueba. Estarías entrenando en el conjunto de prueba. El rendimiento medido en la validación cruzada sería no ser predictivo del rendimiento en las nuevas asignaturas.

Por ejemplo, este documento reciente llama a la validación cruzada de registros, ``Voodoo Machine Learning''.

Pero qué hacer con tan pocos sujetos...

Tal vez algunos comentaristas más experimentados que yo con la validación cruzada puedan intervenir, pero para mí, esto parece un posible candidato para $k=n$ (es decir, dejar de lado una validación cruzada)?

Para maximizar los datos para el entrenamiento, algo que podrías hacer es dejar fuera un sujeto para la validación cruzada. En cada iteración, pruebe con un sujeto diferente y entrene con todos los demás.

Si los temas son todos muy diferentes, puede tener efectivamente cerca de $n = 38$ y puede querer poner el mayor número de sujetos independientes en el conjunto de entrenamiento.

0 votos

Sé que el conjunto de datos debe dividirse en 3: entrenamiento, validación y prueba. En la validación cruzada se utilizan "entrenamiento y validación". El conjunto de retención es la "prueba". Entonces, ¿me estás sugiriendo: que para el entrenamiento y la validación utilice 37 sujetos y el test en 1 sujeto? ¿Y que puedo hacer cualquier tipo de validación cruzada: k-fold, estratificada, etc.?

1 votos

OP hizo una edición diciendo que "Es para un sistema biométrico. Así que quiero ser capaz de identificar a los sujetos". Si entiendo correctamente lo que quiere decir, implica que sólo tiene sentido el CV de los registros porque el objetivo es predecir la identificación del sujeto basándose en una muestra.

0 votos

@amoeba Sólo si los nuevos datos provienen de esos mismo 38 temas. Por ejemplo, si el sistema debe decir si las huellas dactilares coinciden o no y se va a desplegar en la puerta de mi casa (es decir, debe identificar a los extraños como extraños), el entrenamiento y las pruebas con los mismos sujetos serían problemáticos (le gustaría saber con qué frecuencia concede la entrada a personas que nunca ha visto antes, con las que nunca se ha entrenado). Sin embargo, estoy de acuerdo en que "es para un sistema biométrico" plantea preguntas...

10voto

Loren Pechtel Puntos 2212

Creo que la respuesta de Matthew Gunn es correcta, pero me parece que "récord" de CV puede abarcar dos conceptos diferentes:

  1. Los registros se dividen aleatoriamente en pliegues, independientemente del tema o del tiempo.

  2. Los registros se dividen en pliegues temporales, sin que se utilice para el entrenamiento ningún pliegue que contenga datos posteriores al 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 anteriores y posteriores a su conjunto de prueba. El principio de entrenar/probar es que los datos de entrenamiento representan datos conocidos en el presente, y los datos de prueba representan datos aún no vistos (quizás literalmente del futuro).

Quizá la autocorrelación de las series temporales comprometa la opción 2. Tal vez el elemento temporal del modelo no sea realmente importante y, por tanto, las observaciones "pasadas" y "futuras" sean probablemente las mismas. En estos casos, ni el nº 1 ni el nº 2 son el camino a seguir.

Si sólo hay estacionalidad y no tendencias, parece que está bien incluir "el futuro" en el entrenamiento de algunos sujetos para predecir nuevos sujetos (que se verán afectados por la misma estacionalidad). Si hay tendencias, el entrenamiento sobre el futuro debería aprender algo sobre el futuro que realmente no se sabría al utilizar el modelo en producción.

En el ejemplo del OP, parece que el tema es bueno. Pero si las tendencias y las series temporales forman parte del modelo, yo trataría de utilizar una partición basada en el sujeto y en el tiempo, de modo que se entrenara en un conjunto de sujetos antes de un punto específico en el tiempo, y luego se probara en los otros sujetos después de ese punto específico en el tiempo.

1 votos

+1 Este es un punto muy importante: si hay una estructura de series temporales, no se debe utilizar el futuro para predecir el pasado. Este es un error común y peligroso en las finanzas, utilizar información no disponible en el momento $t$ (porque no se conoce hasta el futuro) para predecir los rendimientos, los impagos, etc... en el momento $t$ . Con proyectos complicados y toneladas de datos, puede ser muy fácil cometer errores y dejar que su algoritmo de entrenamiento llegue a un pico en el futuro, logrando resultados que no son posibles en la realidad.

1 votos

Yo diría que es la aplicación la que decide cuál es el reparto adecuado. Por ejemplo, incluso en el caso de las series temporales, la tarea puede consistir en predecir la variable dependiente para mediciones posteriores de sujetos desconocidos, lo que significaría que la división debe hacerse tanto por sujetos como por tiempo.

3 votos

@cbeleites: De acuerdo. Esto es lo que hice en un proyecto reciente: dividir los datos en sujetos de entrenamiento y de prueba, y utilizar sólo los datos anteriores a cierta fecha para el entrenamiento y los datos posteriores a esa fecha para las pruebas, por lo que estábamos probando en sujetos que nunca habíamos visto, durante un período de tiempo que aún no habíamos visto. Si quieres saber realmente lo bien que funcionará tu modelo en la práctica, tienes que poner la baraja en tu contra, sin pasarte de la raya.

3voto

guest Puntos 26

En realidad, depende de cómo te imagines el escenario que quieres emular con la división tren/prueba. Para concretar, digamos que cada fila describe la calidad del sueño de un sujeto en una sola noche.

  1. Es posible que, en el futuro, cada sujeto acuda primero a un laboratorio de sueño y le proporcione la calidad del sueño durante unas cuantas noches. A continuación, tendrá que predecir la calidad del sueño de las noches futuras para estos temas . En este caso, utilizaría su opción b). En sklearn , podría utilizar sklearn.model_selection.StratifiedShuffleSplit

  2. Es posible que, en el futuro, algunos sujetos acudan primero a un laboratorio de sueño y le proporcionen la calidad del sueño durante algunas noches. A continuación, tendrá que predecir la calidad del sueño de las futuras noches para otros temas . En este caso, utilizaría su opción a). En sklearn , podría utilizar sklearn.cross_validation.LeavePLabelOut

1 votos

Sin embargo, siendo realistas, es casi seguro que la pregunta es su caso (2) y la opción (a), es decir, la validación cruzada por temas, es la adecuada.

1 votos

@MatthewGunn Tienes razón. El caso 2 es mucho más común. Debo decir que tienen se encuentran con casos de la vida real en los que la 1 fue la opción correcta.

1 votos

Interesante. Podría ver que (1) es correcto para predecir nuevas observaciones para alguna base de clientes grande y establecida. Se ha tomado nota. Tal vez estoy reaccionando tan fuertemente porque recientemente leí este documento sobre el mal uso generalizado de la validación cruzada de registros en el área médica.

3voto

cbeleites Puntos 12461

Para intervenir, supongo que la aplicación es para predecir sujetos desconocidos. Eso significa (independientemente de si tiene series temporales o medidas repetidas intrínsecamente desordenadas) que la división debe hacerse de manera que los sujetos desconocidos se prueben => división a)

Sin embargo, teniendo en cuenta que sólo tiene 38 sujetos, debería reflexionar sobre la validación del remuestreo. Desde mi experiencia trabajando con tamaños de muestra igualmente pequeños (aunque con más características), he aquí algunas recomendaciones en pocas palabras:

  • Opte por la validación cruzada iterada o fuera del tema. Permiten evaluar la estabilidad de sus modelos, lo cual es crucial en problemas de tamaño de muestra pequeño. Los resultados pueden utilizarse incluso para un modelo agregado en caso de que la inestabilidad sea un problema.

  • Haga no hacer una salida de tema. No permite medir la estabilidad del modelo ni reducirla. Además, hay situaciones en las que está sujeto a un gran sesgo pesimista debido al pequeño tamaño de la muestra (frente al mínimo sesgo pesimista que se espera).

  • Si utiliza las típicas cifras de mérito de la clasificación, como la precisión, la sensibilidad, la especificidad, etc., y la tarea consiste en clasificar correctamente a los sujetos: tenga en cuenta que el problema crucial es la medición del rendimiento, porque la incertidumbre de los resultados de la prueba depende del número absoluto de casos de prueba. A modo de ejemplo, observar 17 predicciones correctas de 17 sujetos realmente positivos corresponde a un intervalo de confianza del 95% para la sensibilidad que oscila entre el 80% y el 100% aproximadamente.
    En otras palabras, no podrás hacer una optimización del modelo basada en datos.

  • Esto también significa que no necesita establecer una división de tres conjuntos (validación cruzada anidada), porque aquí desperdiciaría recursos en comparaciones sin sentido estadístico - su optimización está casi garantizada para fallar (aunque puede no notarlo si no comprueba 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 i.c. para todos los correctos, que se extiende hasta el 50% (30%), por lo que, basándose en los resultados perfectos de la prueba, su intervalo de confianza seguiría incluyendo un 50/50 de aciertos.

Algunos trabajos que escribimos sobre estos temas:

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X