IOKELU
Nivel: Inteligencia Artificial – Intermedio (Guía 15)

Manejo de desbalanceo en datasets

Muchos datasets reales tienen clases desbalanceadas: una clase aparece mucho más que otra. Esto provoca que los modelos aprendan a predecir siempre la clase mayoritaria. En esta guía aprenderás técnicas para corregir este problema y mejorar el rendimiento del modelo.

Tabla de contenidos

  • Qué es el desbalanceo
  • Problemas que causa
  • Recolección de más datos
  • Submuestreo
  • Sobremuestreo
  • SMOTE
  • Class Weights
  • Ejercicios
  • Mini‑proyecto

1. Qué es el desbalanceo

Un dataset está desbalanceado cuando una clase aparece mucho más que otra.

# Ejemplo
Clase 0: 950 muestras
Clase 1: 50 muestras

2. Problemas que causa

3. Recolección de más datos

La solución más simple: obtener más muestras de la clase minoritaria. No siempre es posible, pero es la opción ideal.

4. Submuestreo

Consiste en reducir la clase mayoritaria.

from imblearn.under_sampling import RandomUnderSampler

rus = RandomUnderSampler()
X_res, y_res = rus.fit_resample(X, y)

5. Sobremuestreo

Consiste en aumentar la clase minoritaria duplicando muestras.

from imblearn.over_sampling import RandomOverSampler

ros = RandomOverSampler()
X_res, y_res = ros.fit_resample(X, y)

6. SMOTE

SMOTE genera nuevas muestras sintéticas de la clase minoritaria. Es una de las técnicas más usadas.

from imblearn.over_sampling import SMOTE

smote = SMOTE()
X_res, y_res = smote.fit_resample(X, y)

7. Class Weights

Algunos modelos permiten ajustar pesos para penalizar más los errores en la clase minoritaria.

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(class_weight="balanced")
model.fit(X_train, y_train)

Muy útil cuando no quieres modificar el dataset.

8. Ejercicios

9. Mini‑proyecto: Desbalanceo completo

Toma un dataset real y realiza:


Siguiente guía

Interpretación de modelos →