Validación Cruzada en Python
Cuando ajustamos modelos, nuestro objetivo es mejorar su rendimiento en datos no vistos. El ajuste de hiperparámetros puede mejorar el rendimiento en los conjuntos de prueba, pero si se hace incorrectamente, puede resultar en sobreajuste. Para evitar esto, utilizamos la validación cruzada .
En Validación Cruzada en Python verás el concepto explicado en lenguaje claro y un ejemplo que puedes ejecutar en el editor de The Data Schools.
Modifica el código del ejemplo antes de pasar a la siguiente lección: la experimentación fija mejor el aprendizaje que leer pasivamente.
Método K-Fold
Un método común de validación cruzada es K-Fold. Dividimos nuestros datos de entrenamiento en K pliegues o conjuntos más pequeños. Luego, entrenamos el modelo K veces, utilizando un pliegue diferente como conjunto de validación en cada iteración y los otros K-1 pliegues como conjunto de entrenamiento.
Ejemplo
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Método K-Fold Estratificado
Cuando tenemos clases desequilibradas en nuestros datos, es importante considerar esto durante la validación cruzada. El método K-Fold Estratificado asegura que cada pliegue tenga una proporción igual de todas las clases.
Ejemplo
clf = DecisionTreeClassifier(random_state=25)
stratclf = DecisionTreeClassifier(random_state=25)
stratified_k_folds = StratifiedKFold(n_splits=6)
scores = cross_val_score(clf, X, y, cv=stratified_k_folds)
print("Puntuaciones de Validación Cruzada: ", scores)
print("Puntuaciones de Validación Cruzada: ", scores)
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Método Leave-One-Out (LOO)
El método Leave-One-Out implica usar una sola observación como conjunto de validación y las demás como conjunto de entrenamiento, repitiendo esto para cada observación.
Ejemplo
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Método Leave-P-Out (LPO)
El método Leave-P-Out es similar al Leave-One-Out, pero permite especificar cuántas observaciones dejar fuera para la validación.
Ejemplo
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Método Shuffle Split
Shuffle Split divide los datos en conjuntos de entrenamiento y prueba de manera aleatoria, lo que es útil cuando no se necesita una división determinista.
Ejemplo
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Estos son algunos de los métodos de validación cruzada que puedes aplicar en Python para evaluar tus modelos. La elección del método adecuado depende de la naturaleza de tus datos y tus objetivos de modelado. La validación cruzada es una técnica esencial para garantizar que tus modelos funcionen bien en datos no vistos.
Practica Validación Cruzada en Python en el editor
Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.
Ejercicio: Un método común de validación cruzada es K-Fold
Un método común de validación cruzada es K-Fold. Dividimos nuestros datos de entrenamiento en K pliegues o conjuntos más pequeños. Luego, entrenamos el modelo K veces, utilizando u.
Ejemplo
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Ejercicio: Árbol de decisión
Cuando tenemos clases desequilibradas en nuestros datos, es importante considerar esto durante la validación cruzada. El método K-Fold Estratificado asegura que cada pliegue tenga.
Ejemplo
clf = DecisionTreeClassifier(random_state=25)
stratclf = DecisionTreeClassifier(random_state=25)
stratified_k_folds = StratifiedKFold(n_splits=6)
scores = cross_val_score(clf, X, y, cv=stratified_k_folds)
print("Puntuaciones de Validación Cruzada: ", scores)
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
Ejercicio: Usar print()
El método Leave-One-Out implica usar una sola observación como conjunto de validación y las demás como conjunto de entrenamiento, repitiendo esto para cada observación.
Ejercicio: Usar print() (2)
El método Leave-P-Out es similar al Leave-One-Out, pero permite especificar cuántas observaciones dejar fuera para la validación.
Ejercicio: Usar print() (3)
Shuffle Split divide los datos en conjuntos de entrenamiento y prueba de manera aleatoria, lo que es útil cuando no se necesita una división determinista.