Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Probabilidad y estadística para IA, Unidad 8 — Estadística en evaluación de modelos, 8.3 — Validación de modelos ·

Cross-validation (intuición)

Cross-validation (intuición)

Introducción

La validación cruzada es una técnica fundamental para evaluar la capacidad de un modelo de machine learning de generalizar a nuevos datos. Es particularmente importante en el contexto de inteligencia artificial porque permite ajustar hiperparámetros, seleccionar modelos y evitar overfitting, lo que es crucial para obtener resultados robustos y predecibles.

Explicación principal con ejemplos

La validación cruzada (CV) se divide en dos tipos principales: la validación cruzada simple y la validación cruzada estratificada. En esta sección, exploraremos ambos métodos y cómo pueden aplicarse a diferentes datasets.

Validación Cruzada Simple

La validación cruzada simple es una técnica donde el conjunto de datos se divide en k particiones (o pliegues). Durante cada iteración, se utiliza una partición como conjunto de prueba y las otras k-1 particiones como conjunto de entrenamiento. Este proceso se repite k veces, con cada partición utilizada una vez como conjunto de prueba.

from sklearn.model_selection import cross_val_score

# Ejemplo usando scikit-learn para realizar validación cruzada simple
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

# Cargar dataset iris y definir el modelo logístico
data = load_iris()
X, y = data.data, data.target
model = LogisticRegression()

# Realizar validación cruzada con k=5
scores = cross_val_score(model, X, y, cv=5)

print("Precisión media: {:.2f}".format(scores.mean()))

Validación Cruzada Estratificada

La validación cruzada estratificada se utiliza cuando el conjunto de datos tiene una distribución no uniforme en las etiquetas. En este caso, cada partición debe mantener la misma proporción de clases que el conjunto original.

from sklearn.model_selection import StratifiedKFold

# Ejemplo usando scikit-learn para realizar validación cruzada estratificada
X, y = load_iris(return_X_y=True)
kfold = StratifiedKFold(n_splits=5)

for train_index, test_index in kfold.split(X, y):
    print("Training index:", train_index)
    print("Testing index:", test_index)

Errores típicos / trampas

  1. Invalidación del overfitting: A menudo se confunde la validación cruzada con una forma de regularización o reducción del overfitting. La CV es una técnica de validación, no una técnica de ajuste de modelo.
  1. Omitir el conjunto de prueba final: Es común usar el conjunto de prueba final para evaluar el rendimiento del modelo, pero a menudo se olvida que este conjunto debe ser completamente independiente y no utilizado durante la selección o ajuste del modelo.
  1. No considerar la correlación espacial en datos espaciales: En ciertos tipos de datos (como imágenes, mapas geográficos), las observaciones pueden estar correlacionadas espacialmente. Si se aplica CV sin tener en cuenta estas correlaciones, los resultados podrían ser sesgados.

Checklist accionable

  1. Dividir correctamente el conjunto de datos: Asegúrate de que cada pliegue tenga una representación proporcional de todas las clases.
  2. Elegir un número adecuado de pliegues (k): Generalmente, k=5 o k=10 son buenos valores para datasets grandes y medianos. Para datasets pequeños, k podría ser igual al tamaño del conjunto de datos.
  3. Usar validación cruzada estratificada cuando sea necesario: Si tus datos tienen una distribución imbalanced en las etiquetas, asegúrate de usar validación cruzada estratificada para obtener resultados más precisos.
  4. Evitar la sobreajuste en hiperparámetros: Usa validación cruzada para ajustar los hiperparámetros y evalúa el rendimiento final en un conjunto de prueba completamente independiente.
  5. Usar cross_val_score para simplificar la validación: Utiliza funciones como cross_val_score o GridSearchCV de scikit-learn para automatizar el proceso.

Cierre con "Siguientes pasos"

  1. Implementa validación cruzada en tus proyectos actuales: Aplica validación cruzada a los modelos que estés entrenando y observa cómo cambian los resultados.
  2. Prueba diferentes métricas de evaluación: Asegúrate de usar una variedad de métricas para evaluar la capacidad del modelo de generalizar.
  3. Analiza los errores en el conjunto de prueba final: Una vez que tienes un modelo con buen rendimiento en validación cruzada, analiza las predicciones en el conjunto de prueba final para identificar posibles áreas de mejora.

La validación cruzada es una herramienta poderosa y flexible que permite evaluar la capacidad de un modelo de machine learning de generalizar a nuevos datos. Al usarla correctamente, puedes asegurarte de que tu modelo no está overfitting y que es capaz de realizar predicciones robustas y precisas en datos desconocidos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).