2 votos

Validación cruzada - comparación de erros estimados - resultado inesperado

Me gustaría hacer un experimento que demuestre que la validación cruzada es mejor método para evaluar el modelo que el método habitual. Tengo la siguiente idea:

  1. Crear un gran conjunto artificial con fines de clasificación (digamos 100 000 ejemplos).
  2. Tome una pequeña muestra de todo el conjunto. Digamos 5000.
  3. Intente estimar el error utilizando el método hold out con 5000 y utilizando la validación cruzada.
  4. Comparar los errores teniendo en cuenta el error en todo el conjunto, que es el error real si fuera todo nuestro espacio de muestras.

Enlace al código:

https://github.com/pawelpeksa/msCV (rama maestra)

Estoy comprobando esta idea utilizando SVM. En primer lugar he encontrado hyperparameter C para SVM utilizando hyperopt paquete (pero no debería importar de todos modos ya que es sólo una herramienta para evaluar el modelo, yup?). Hice 100 ejecuciones para obtener algunas estadísticas. Mis resultados:

A). 5000 muestra de prueba de retención: 0,9338 +- 0,00434869073528 - precisión en la muestra de retención tras el entrenamiento.

B). cv en conjunto holdout: 93.4009034436 +- 2.22044604925e-14 - precisión calculada con cv con 10 pliegues

C). conjunto de datos completo 0,9370653 +- 0,000283225899239 - precisión utilizando el conjunto de datos completo (que considero un error real teniendo en cuenta el tamaño del conjunto de datos).

D) conjunto de datos de entrenamiento: 0,934448571429 +- 0,00195385751366 - precisión del modelo en los datos que se utilizaron para entrenar

Lo inesperado para mí. La precisión de CV (B) está más lejos del error real que A. Se supone que CV es el mejor método para evaluar el modelo porque utilizamos más datos para la evaluación y, por tanto, debería estar más cerca del error real. Además, la precisión del modelo comprobada con los datos de entrenamiento es menor que la precisión comprobada con todo el conjunto de datos, lo que me parece ridículo. Lo que también he notado es el hecho de que std de estimación cv es mucho menor que en otros casos. ¿Quizás por eso CV es mejor para nosotros?

Puedo oler el error lógico aquí desde la distancia. ¿Alguna pista?

¡Muchas gracias!

0voto

suraj jain Puntos 637

Creo que lo he descubierto.

Método clásico:

Probamos diferentes parámetros y evaluamos el modelo utilizando datos de prueba (los datos de prueba se obtienen dividiendo todos los datos en dos partes: 0,7 y 0,3) - el llamado método holdout.

Al probar los mejores parámetros basándonos en nuestros resultados utilizando datos de prueba, la información de los datos de prueba se filtra en el modelo y, debido a ello, nuestra evaluación deja de ser objetiva.

Podemos utilizar la validación cruzada para evaluar mejor el modelo.

Entonces, ¿por qué el planteamiento del primer post era erróneo? Todo estaba automatizado y no nos preocupábamos de los datos de prueba durante la evaluación del modelo en el método holdout. Así que probar con datos de prueba era probar con datos no vistos para el modelo. Los resultados eran totalmente aleatorios. A veces parecía estar bien con mis predicciones, otras veces no, ninguna regla.

He cambiado un poco el código. Ahora utilizo hyperopt para optimizar los hiperparámetros del modelo, pero lo compruebo en los datos de entrenamiento (como en el enfoque clásico). Dejo que la información de los datos de entrenamiento se filtre en el modelo. Después evalúo el modelo con validación cruzada para comparar ambos enfoques.

Espero no haberme perdido nada esta vez, pero el resultado parece más razonable ahora.

Código disponible aquí: https://github.com/pawelpeksa/msCV/tree/experimental3 (necesita una fuerte refactorización)

Los resultados (la diferencia entre el error real y el error estimado es algo menor en el caso del cv):

enter image description here

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