Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Validación Cruzada | Modelado
Introducción al ML con Scikit-learn

bookValidación Cruzada

En el capítulo anterior, se utilizó la división entrenamiento-prueba para la evaluación del modelo. Este método presenta dos inconvenientes principales:

  1. Datos de entrenamiento limitados: solo una parte del conjunto de datos se utiliza para el entrenamiento, mientras que generalmente más datos mejoran el rendimiento.
  2. Dependencia de la división: debido a que la división es aleatoria, los resultados pueden variar notablemente entre ejecuciones.

Para abordar estos problemas, se utiliza un método alternativo de evaluación llamado validación cruzada.

Primero, dividir todo el conjunto de datos en 5 partes iguales, conocidas como folds (pliegues).

Luego, utilizar un fold como conjunto de prueba y combinar los folds restantes para formar el conjunto de entrenamiento.

Como en cualquier proceso de evaluación, el conjunto de entrenamiento se utiliza para entrenar el modelo, mientras que el conjunto de prueba se emplea para medir su rendimiento.

El proceso se repite de modo que cada partición actúe como conjunto de prueba una vez, mientras que las particiones restantes conforman el conjunto de entrenamiento.

Este proceso genera cinco puntuaciones de exactitud, una por cada división. Calcular la media de estas puntuaciones proporciona el rendimiento promedio del modelo.

En Python, la puntuación de validación cruzada puede calcularse con cross_val_score() del módulo sklearn.model_selection.

Note
Nota

Aunque el ejemplo utiliza 5 particiones, se puede elegir cualquier número de particiones para la validación cruzada. Por ejemplo, se pueden usar 10 particiones, asignando 9 al conjunto de entrenamiento y 1 al conjunto de prueba. Esto se ajusta mediante el parámetro cv en la función cross_val_score().

1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
copy

Proporciona resultados más estables y fiables que el método de división entrenamiento-prueba; sin embargo, es considerablemente más lento porque requiere entrenar y evaluar el modelo cinco veces (o n veces si se establece n número de particiones), en comparación con una sola vez usando la división entrenamiento-prueba.

La validación cruzada se utiliza típicamente en la optimización de hiperparámetros, donde se ejecuta todo el proceso de validación cruzada para cada valor potencial de hiperparámetro.

Por ejemplo, al determinar el número óptimo de vecinos en un algoritmo de vecinos más cercanos, se realiza una ronda completa de validación cruzada para cada valor candidato. Este método garantiza una evaluación exhaustiva de cada configuración de hiperparámetro en todo el conjunto de datos, permitiendo seleccionar el valor que proporcione de manera consistente el mejor rendimiento.

question mark

¿Por qué puede preferirse la validación cruzada sobre la división entrenamiento-prueba para evaluar el rendimiento de un modelo de aprendizaje automático?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.13

bookValidación Cruzada

Desliza para mostrar el menú

En el capítulo anterior, se utilizó la división entrenamiento-prueba para la evaluación del modelo. Este método presenta dos inconvenientes principales:

  1. Datos de entrenamiento limitados: solo una parte del conjunto de datos se utiliza para el entrenamiento, mientras que generalmente más datos mejoran el rendimiento.
  2. Dependencia de la división: debido a que la división es aleatoria, los resultados pueden variar notablemente entre ejecuciones.

Para abordar estos problemas, se utiliza un método alternativo de evaluación llamado validación cruzada.

Primero, dividir todo el conjunto de datos en 5 partes iguales, conocidas como folds (pliegues).

Luego, utilizar un fold como conjunto de prueba y combinar los folds restantes para formar el conjunto de entrenamiento.

Como en cualquier proceso de evaluación, el conjunto de entrenamiento se utiliza para entrenar el modelo, mientras que el conjunto de prueba se emplea para medir su rendimiento.

El proceso se repite de modo que cada partición actúe como conjunto de prueba una vez, mientras que las particiones restantes conforman el conjunto de entrenamiento.

Este proceso genera cinco puntuaciones de exactitud, una por cada división. Calcular la media de estas puntuaciones proporciona el rendimiento promedio del modelo.

En Python, la puntuación de validación cruzada puede calcularse con cross_val_score() del módulo sklearn.model_selection.

Note
Nota

Aunque el ejemplo utiliza 5 particiones, se puede elegir cualquier número de particiones para la validación cruzada. Por ejemplo, se pueden usar 10 particiones, asignando 9 al conjunto de entrenamiento y 1 al conjunto de prueba. Esto se ajusta mediante el parámetro cv en la función cross_val_score().

1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
copy

Proporciona resultados más estables y fiables que el método de división entrenamiento-prueba; sin embargo, es considerablemente más lento porque requiere entrenar y evaluar el modelo cinco veces (o n veces si se establece n número de particiones), en comparación con una sola vez usando la división entrenamiento-prueba.

La validación cruzada se utiliza típicamente en la optimización de hiperparámetros, donde se ejecuta todo el proceso de validación cruzada para cada valor potencial de hiperparámetro.

Por ejemplo, al determinar el número óptimo de vecinos en un algoritmo de vecinos más cercanos, se realiza una ronda completa de validación cruzada para cada valor candidato. Este método garantiza una evaluación exhaustiva de cada configuración de hiperparámetro en todo el conjunto de datos, permitiendo seleccionar el valor que proporcione de manera consistente el mejor rendimiento.

question mark

¿Por qué puede preferirse la validación cruzada sobre la división entrenamiento-prueba para evaluar el rendimiento de un modelo de aprendizaje automático?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 4
some-alt