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, exploramos el enfoque de división en conjuntos de entrenamiento y prueba para evaluar el modelo. Este enfoque presenta algunas desventajas:

  1. Solo utilizamos una parte del conjunto de datos para el entrenamiento: naturalmente, cuanto más datos proporcionamos al modelo, más información tiene para aprender y mejor será su rendimiento;
  2. El resultado puede depender en gran medida de la división: como se observó en el capítulo anterior, dado que el conjunto de datos se divide aleatoriamente, ejecutar el código varias veces puede arrojar resultados razonablemente diferentes.

Por lo tanto, existe un enfoque diferente para evaluar un modelo, conocido como validación cruzada.

Primero, dividimos todo el conjunto de datos en 5 partes iguales, llamadas folds.

Luego, tomamos un fold como conjunto de prueba y los demás folds como conjunto de entrenamiento.

Como siempre, utilizamos el conjunto de entrenamiento para entrenar el modelo y el conjunto de prueba para evaluarlo.

Ahora, repita el proceso utilizando cada partición como conjunto de prueba de forma alterna.

Como resultado, obtenemos cinco puntuaciones de precisión, una de cada partición. Luego, podemos calcular la media de estas puntuaciones para medir el rendimiento promedio del modelo.

Para calcular la puntuación de validación cruzada en Python, podemos utilizar cross_val_score() del módulo sklearn.model_selection.

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 train-test; sin embargo, es significativamente más lento porque requiere entrenar y evaluar el modelo cinco veces (o n veces si se establece n como número de particiones), en comparación con una sola vez usando la división train-test.

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 k-vecinos más cercanos, se realizaría 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 constantemente ofrece el mejor rendimiento.

question mark

¿Por qué puede preferirse la validación cruzada sobre la división train-test 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, exploramos el enfoque de división en conjuntos de entrenamiento y prueba para evaluar el modelo. Este enfoque presenta algunas desventajas:

  1. Solo utilizamos una parte del conjunto de datos para el entrenamiento: naturalmente, cuanto más datos proporcionamos al modelo, más información tiene para aprender y mejor será su rendimiento;
  2. El resultado puede depender en gran medida de la división: como se observó en el capítulo anterior, dado que el conjunto de datos se divide aleatoriamente, ejecutar el código varias veces puede arrojar resultados razonablemente diferentes.

Por lo tanto, existe un enfoque diferente para evaluar un modelo, conocido como validación cruzada.

Primero, dividimos todo el conjunto de datos en 5 partes iguales, llamadas folds.

Luego, tomamos un fold como conjunto de prueba y los demás folds como conjunto de entrenamiento.

Como siempre, utilizamos el conjunto de entrenamiento para entrenar el modelo y el conjunto de prueba para evaluarlo.

Ahora, repita el proceso utilizando cada partición como conjunto de prueba de forma alterna.

Como resultado, obtenemos cinco puntuaciones de precisión, una de cada partición. Luego, podemos calcular la media de estas puntuaciones para medir el rendimiento promedio del modelo.

Para calcular la puntuación de validación cruzada en Python, podemos utilizar cross_val_score() del módulo sklearn.model_selection.

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 train-test; sin embargo, es significativamente más lento porque requiere entrenar y evaluar el modelo cinco veces (o n veces si se establece n como número de particiones), en comparación con una sola vez usando la división train-test.

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 k-vecinos más cercanos, se realizaría 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 constantemente ofrece el mejor rendimiento.

question mark

¿Por qué puede preferirse la validación cruzada sobre la división train-test 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