
¿Cómo aproximamos el rendimiento de los datos ocultos?
Todos los datos
Train (70%)
Prueba (30%)
Train (70%)
Test (20%)
Retención (10%)
Se usa para que el modelo aprenda patrones a partir de los datos.
Se usa para comparar modelos o ajustar decisiones.
Se guarda aparte hasta el final, para evaluar de forma más honesta.
¿Cómo usamos mejor todos los datos disponibles?
Todos los datos
Todos los datos
Fold 1
Fold 2
Fold 3
Fold 4
Fold 5
Test
Train
Train
Train
Train
Train
Test
Train
Train
Train
Train
Test
Train
Train
Train
Train
Train
Test
Train
Train
Train
Train
Train
Test
Train
Train
Train
Train
Train
Test
Fold 1
Fold 2
Fold 3
Fold 4
Fold 5
Score final = promedio de las evaluaciones
\[ \text{Score final} = \frac{Score_1 + Score_2 + Score_3 + Score_4 + Score_5}{5} \]
Cada observación fue usada:
Esto produce una estimación más estable del desempeño del modelo.
¿Y si las clases están desbalanceadas?
Train
Fold 1
Fold 2
Fold 3
Fold 4
Algunos folds pueden quedar desbalanceados.
Un fold podría tener casi todos los datos de una sola clase.
Fold 1
Fold 2
Fold 3
Fold 4
Cada fold mantiene la proporción de clases.
Si el dataset tiene 60% / 40%, cada fold también.
En problemas de clasificación.
Especialmente cuando hay desbalance de clases.
# Importar la herramienta
from sklearn.model_selection import StratifiedKFold
# Crear el objeto de validación cruzada
str_kf = StratifiedKFold(
n_splits=5,
shuffle=True,
random_state=123
)
# Iterar sobre los folds
for train_index, test_index in str_kf.split(train, train['target']):
cv_train = train.iloc[train_index]
cv_test = train.iloc[test_index]