Validació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:
- 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.
- 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
.
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()
.
1234567891011import 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())
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.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain how cross-validation improves model evaluation compared to train-test split?
What are some common use cases for cross-validation in machine learning?
How do I choose the number of folds for cross-validation?
Awesome!
Completion rate improved to 3.13
Validació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:
- 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.
- 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
.
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()
.
1234567891011import 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())
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.
¡Gracias por tus comentarios!