Saltar al contenido

Cómo configurar la validación cruzada de k-Fold

31 de julio de 2020

El procedimiento de validación cruzada de pliegue k es un método estándar para estimar el rendimiento de un algoritmo de aprendizaje automático en un conjunto de datos.

Un valor común para k es 10, aunque ¿cómo sabemos que esta configuración es apropiada para nuestro conjunto de datos y nuestros algoritmos?

Un enfoque es explorar el efecto de diferentes k en la estimación del rendimiento del modelo y compararlo con una condición de prueba ideal. Esto puede ayudar a elegir un valor apropiado para k.

Una vez que un k-se elige el valor, puede utilizarse para evaluar un conjunto de diferentes algoritmos en el conjunto de datos y la distribución de los resultados puede compararse con una evaluación de los mismos algoritmos utilizando una condición de prueba ideal para ver si están altamente correlacionados o no. Si están correlacionados, confirma que la configuración elegida es una aproximación robusta para la condición de prueba ideal.

En este tutorial, descubrirá cómo configurar y evaluar configuraciones de validación cruzada de pliegue k.

Después de completar este tutorial, lo sabrás:

  • Cómo evaluar un algoritmo de aprendizaje de una máquina usando la validación cruzada de k-fold en un conjunto de datos.
  • Cómo realizar un análisis de sensibilidad de los valores k para la validación cruzada de k.
  • Cómo calcular la correlación entre un arnés de prueba de validación cruzada y una condición de prueba ideal.

Empecemos.

Cómo configurar la validación cruzada de k-Fold

Cómo configurar la validación cruzada de k-Fold

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  1. Validación cruzada de k-Fold
  2. Análisis de sensibilidad para k
  3. Correlación del arnés de prueba con el objetivo

Validación cruzada de k-Fold

Es común evaluar los modelos de aprendizaje de las máquinas en un conjunto de datos utilizando la validación cruzada del pliegue k.

El procedimiento de validación cruzada de pliegues k divide un conjunto limitado de datos en pliegues k no superpuestos. Cada uno de los pliegues k tiene la oportunidad de ser utilizado como un conjunto de pruebas de retención, mientras que todos los demás pliegues colectivamente se utilizan como un conjunto de datos de entrenamiento. Un total de k modelos son ajustados y evaluados en los conjuntos de pruebas de retención k y se informa del rendimiento medio.

Para más información sobre el procedimiento de validación cruzada de k-fold, vea el tutorial:

El procedimiento de validación cruzada de k-fold puede ser implementado fácilmente usando la biblioteca de aprendizaje de la máquina scikit-learn.

Primero, definamos un conjunto de datos de clasificación sintética que podamos usar como base de este tutorial.

La función make_classification() puede utilizarse para crear un conjunto de datos de clasificación binaria sintética. La configuraremos para generar 100 muestras cada una con 20 características de entrada, 15 de las cuales contribuyen a la variable objetivo.

El ejemplo que figura a continuación crea y resume el conjunto de datos.

Ejecutando el ejemplo se crea el conjunto de datos y se confirma que contiene 100 muestras y 10 variables de entrada.

La semilla fija para el generador de números pseudoaleatorios asegura que obtengamos las mismas muestras cada vez que se genera el conjunto de datos.

A continuación, podemos evaluar un modelo en este conjunto de datos utilizando la validación cruzada del pliegue k.

Evaluaremos un modelo de LogisticRegression y usaremos la clase KFold para realizar la validación cruzada, configurada para barajar el conjunto de datos y establecer k=10, un valor predeterminado popular.

La función cross_val_score() se utilizará para realizar la evaluación, tomando la configuración del conjunto de datos y la validación cruzada y devolviendo una lista de las puntuaciones calculadas para cada pliegue.

El ejemplo completo figura a continuación.

Ejecutando el ejemplo se crea el conjunto de datos, y luego se evalúa un modelo de regresión logística en él usando una validación cruzada de 10 veces. La precisión de la clasificación media en el conjunto de datos es entonces reportada.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el modelo alcanzó una precisión de clasificación estimada de alrededor del 85,0 por ciento.

Ahora que estamos familiarizados con la validación cruzada del pliegue K, veamos cómo podríamos configurar el procedimiento.

Análisis de sensibilidad para k

El parámetro clave de configuración para la validación cruzada de pliegues k es k, que define el número de pliegues en el que se puede dividir un conjunto de datos determinado.

Los valores comunes son k=3, k=5 y k=10, y con mucho el valor más popular usado en el aprendizaje aplicado de la máquina para evaluar los modelos es k=10. La razón de esto es que se realizaron estudios y se encontró que k=10 proporciona un buen equilibrio entre el bajo costo computacional y el bajo sesgo en una estimación del rendimiento del modelo.

¿Cómo sabemos qué valor de k usar cuando evaluamos modelos en nuestro propio conjunto de datos?

Puedes elegir k=10, pero ¿cómo sabes que esto tiene sentido para tu conjunto de datos?

Una forma de responder a esta pregunta es realizar un análisis de sensibilidad para diferentes valores de k. Es decir, evaluar el rendimiento del mismo modelo en el mismo conjunto de datos con diferentes valores de k y ver cómo se comparan.

Se espera que los valores bajos de k den como resultado una estimación ruidosa del rendimiento del modelo y que los valores grandes de k den como resultado una estimación menos ruidosa del rendimiento del modelo.

¿Pero ruidoso comparado con qué?

No conocemos el verdadero rendimiento del modelo al hacer predicciones sobre datos nuevos/no vistos, ya que no tenemos acceso a los datos nuevos/no vistos. Si lo supiéramos, lo utilizaríamos en la evaluación del modelo.

Sin embargo, podemos elegir una condición de prueba que represente un «ideal«o como mejor podamos conseguir»ideal» estimación del rendimiento del modelo.

Un enfoque sería entrenar el modelo con todos los datos disponibles y estimar el rendimiento en un conjunto de datos separado, grande y representativo. El rendimiento en este conjunto de datos de reserva representaría el «modelo de la vida».verdadero«El rendimiento del modelo y cualquier rendimiento de validación cruzada en el conjunto de datos de entrenamiento representaría una estimación de este resultado.

Esto es raramente posible ya que a menudo no tenemos suficientes datos para retener algunos y utilizarlos como un conjunto de pruebas. Las competiciones de aprendizaje de máquinas de kaggle son una excepción a esto, donde tenemos un conjunto de pruebas de retención, una muestra de las cuales se evalúa a través de presentaciones.

En su lugar, podemos simular este caso usando la validación cruzada de no hacer nada (LOOCV), una versión computacionalmente costosa de la validación cruzada en la que k=N…y… N es el número total de ejemplos en el conjunto de datos de entrenamiento. Es decir, cada muestra del conjunto de capacitación recibe un ejemplo para ser utilizado solo como el conjunto de datos de evaluación de la prueba. Rara vez se utiliza para conjuntos de datos grandes, ya que es costoso desde el punto de vista computacional, aunque puede proporcionar una buena estimación del rendimiento del modelo, dados los datos disponibles.

Recomendado:  Descenso de gradiente con impulso desde cero

Podemos entonces comparar la precisión de la clasificación media para diferentes valores k con la precisión de la clasificación media de LOOCV en el mismo conjunto de datos. La diferencia entre las puntuaciones proporciona una aproximación aproximada de lo bien que un valor k se aproxima a la condición ideal de la prueba de evaluación del modelo.

Exploremos cómo implementar un análisis de sensibilidad de validación cruzada de pliegue k.

Primero, definamos una función para crear el conjunto de datos. Esto te permite cambiar el conjunto de datos a tu propio conjunto si lo deseas.

A continuación, podemos definir un conjunto de datos para crear el modelo a evaluar.

Una vez más, esta separación le permite cambiar el modelo a su propio modelo si lo desea.

A continuación, puede definir una función para evaluar el modelo en el conjunto de datos dada una condición de prueba. La condición de prueba podría ser una instancia del KFold configurada con un valor k dado, o podría ser una instancia del LeaveOneOut que representa nuestra condición de prueba ideal.

La función devuelve la precisión de la clasificación media así como la precisión mínima y máxima de los pliegues. Podemos usar el mínimo y el máximo para resumir la distribución de las puntuaciones.

A continuación, podemos calcular el rendimiento del modelo usando el procedimiento LOOCV.

Podemos entonces definir los valores k a evaluar. En este caso, probaremos valores entre 2 y 30.

Podemos entonces evaluar cada valor a su vez y almacenar los resultados a medida que avanzamos.

Finalmente, podemos trazar los resultados para su interpretación.

A continuación se muestra el ejemplo completo.

Recomendado:  Los científicos descubren un posible predictor sorprendente de la demencia

Ejecutando el ejemplo primero se reporta el LOOCV, luego la media, min, y máxima precisión para cada valor k que fue evaluado.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el resultado del LOOCV fue de alrededor del 84 por ciento, ligeramente inferior al resultado k=10 del 85 por ciento.

Se crea un gráfico de líneas que compara las puntuaciones medias de precisión con el resultado de la LOOCV con el mínimo y el máximo de cada distribución de resultados indicada mediante barras de error.

Los resultados sugieren que para este modelo en este conjunto de datos, la mayoría de los valores k subestiman el rendimiento del modelo en comparación con el caso ideal. Los resultados sugieren que quizás k=10 por sí solo es ligeramente optimista y quizás k=13 podría ser una estimación más precisa.

Trazado de líneas de precisión media para la validación cruzada de los valores k con barras de error (azul) contra el caso ideal (rojo)

Trazado de líneas de precisión media para la validación cruzada de los valores k con barras de error (azul) contra el caso ideal (rojo)

Esto proporciona una plantilla que puede utilizarse para realizar un análisis de sensibilidad de los valores k de su modelo elegido en su conjunto de datos contra una condición de prueba ideal dada.

Correlación del arnés de prueba con el objetivo

Una vez que se elige un arnés de prueba, otra consideración es cuán bien se ajusta a la condición de prueba ideal a través de los diferentes algoritmos.

Es posible que para algunos algoritmos y algunas configuraciones, la validación cruzada del pliegue k sea una mejor aproximación de la condición de prueba ideal en comparación con otros algoritmos y configuraciones de algoritmos.

Podemos evaluar e informar sobre esta relación explícitamente. Esto puede lograrse calculando cuán bien los resultados de la validación cruzada de k en un rango de algoritmos coinciden con la evaluación de los mismos algoritmos en la condición de prueba ideal.

El coeficiente de correlación de Pearson puede calcularse entre los dos grupos de puntuaciones para medir cuán cerca están. Es decir, ¿cambian juntos de la misma manera: cuando un algoritmo se ve mejor que otro a través de la validación cruzada de pliegues k, ¿se mantiene la condición ideal de la prueba?

Esperamos ver una fuerte correlación positiva entre las puntuaciones, como 0,5 o más. Una baja correlación sugiere la necesidad de cambiar el arnés de pruebas de validación cruzada de k para que se ajuste mejor a la condición de prueba ideal.

Primero, podemos definir una función que creará una lista de modelos estándar de aprendizaje de máquinas para evaluar a través de cada arnés de prueba.

Usaremos k=10 para el arnés de prueba elegido.

Podemos enumerar cada modelo y evaluarlo usando una validación cruzada de 10 veces y nuestra condición de prueba ideal, en este caso, LOOCV.

Podemos entonces calcular la correlación entre la precisión de la clasificación media del arnés de prueba de validación cruzada de 10 veces y el arnés de prueba de LOOCV.

Finalmente, podemos crear un gráfico de dispersión de los dos conjuntos de resultados y dibujar una línea de mejor ajuste para ver visualmente lo bien que cambian juntos.

A continuación se muestra el ejemplo completo de todo esto.

La ejecución del ejemplo informa de la precisión de la clasificación media de cada algoritmo calculado mediante cada arnés de prueba.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

Puede que vea algunas advertencias que puede ignorar con seguridad, como:

Podemos ver que para algunos algoritmos, el arnés de prueba sobreestima la precisión en comparación con el LOOCV, y en otros casos, subestima la precisión. Esto es de esperar.

Al final del recorrido, podemos ver que se informa de la correlación entre los dos conjuntos de resultados. En este caso, podemos ver que se informa de una correlación de 0,746, que es una buena correlación positiva fuerte. Los resultados sugieren que la validación cruzada de 10 veces proporciona una buena aproximación para el arnés de pruebas de LOOCV en este conjunto de datos, calculado con 18 algoritmos populares de aprendizaje de máquinas.

Finalmente, se crea un gráfico de dispersión que compara la distribución de las puntuaciones medias de precisión para el arnés de pruebas (eje x) con las puntuaciones de precisión a través de LOOCV (eje y).

Se dibuja una línea roja de mejor ajuste a través de los resultados que muestra la fuerte correlación lineal.

El diagrama de dispersión de la validación cruzada contra la prueba ideal significa la precisión con la línea de mejor ajuste

El diagrama de dispersión de la validación cruzada contra la prueba ideal significa la precisión con la línea de mejor ajuste

Esto proporciona un arnés para comparar el arnés de prueba elegido con una condición de prueba ideal en su propio conjunto de datos.