
En Machine Learning, uno de los retos más comunes en problemas de clasificación es el desbalanceo de clases. Este ocurre cuando una de las clases del conjunto de datos tiene muchas más muestras que la otra, lo que puede afectar negativamente al rendimiento del modelo.
Por ejemplo, al entrenar un algoritmo para detectar si un correo es spam o no, es habitual encontrar un conjunto de datos muy desequilibrado: imagina un dataset con 9900 correos legítimos y solo 100 correos spam. Esta distribución desigual hace que el modelo aprenda a predecir siempre la clase mayoritaria (correos legítimos), ignorando la minoritaria (spam), generando falsas predicciones.
Esto puede llevar a un modelo con una alta precisión aparente (99%), pero que falla en detectar los pocos casos importantes, como los correos no deseados. En consecuencia, la clase minoritaria queda subrepresentada, perjudicando su correcta clasificación y afectando la capacidad de generalización del modelo.
¿Cuándo un dataset está desbalanceado?


Desbalanceo de datos
Si tenemos un modelo de 10000 muestras:
En la exactitud: ¿Cuál es la proporción de instancias que ha clasificado correctamente el algoritmo?
exactitud = (verdaderos positivos + verdaderos negativos) / (total de instancias)
exactitud = (9900 + 0) / (10000)= 0.99
En este caso la exactitud del modelo nos da el 99% cuando no hemos logrado identificar ningún correo de spam.
En la precisión: ¿Qué porcentaje de correos legítimos ha clasificado correctamente el algoritmo?
precisión = verdaderos positivos / (verdaderos positivos + falsos positivos)
precisión = 9900 / (9900+ 100)
La precisión del modelo nos da el 99%
En el Recall: ¿Qué porcentaje de correo legitimo el modelo ha clasificado correctamente como positivos?
Recall = verdaderos positivos / (verdaderos positivos + falsos negativos)
Recall = 9900 / (9900+ 100)=100
Para correo legitimo es capaz de identificar el 100%
El desbalanceo de datos es un problema común en machine learning que ocurre cuando las clases dentro de un conjunto de datos están desigualmente representadas. Esto puede llevar a resultados engañosos en las métricas de evaluación del modelo. Por ejemplo, consideremos un modelo entrenado con 10.000 muestras, de las cuales 9.900 pertenecen a la clase “no spam” y solo 100 a la clase “spam”. En este escenario, la exactitud (accuracy) del modelo se calcula como el número de predicciones correctas dividido por el total de instancias:(9900 verdaderos positivos + 0 verdaderos negativos) / 10000 = 0.99, lo que da una exactitud del 99%. Sin embargo, este valor es engañoso, ya que el modelo no ha identificado correctamente ningún correo spam.
Al analizar la precisión (precision), que mide el porcentaje de instancias clasificadas como positivas que realmente lo son, obtenemos:9900 / (9900 + 100) = 0.99, es decir, 99% de precisión para los correos legítimos. Nuevamente, el modelo parece funcionar bien, pero sigue ignorando por completo la clase minoritaria.
Por último, el recall (sensibilidad), que indica el porcentaje de verdaderos positivos correctamente identificados, también resulta ser:9900 / (9900 + 100) = 0.99, lo que representa una tasa de recuperación del 99% para la clase mayoritaria. Sin embargo, el modelo falla completamente al detectar la clase de interés (spam).
Este ejemplo demuestra cómo el desbalanceo de clases puede falsear las métricas de evaluación, creando una falsa sensación de rendimiento. En estos casos, se recomienda utilizar métricas más robustas como F1-score, matriz de confusión o curvas ROC-AUC, además de aplicar técnicas de resampling o algoritmos diseñados específicamente para datos desbalanceados.
¿Cómo sacar el desbalance de las clases desbalanceadas?
Para sacar el desbalance de clases tenemos varias opciones:
- Ponderando las clases: Asignando pesos diferentes a las clases en función de su frecuencia relativa en el conjunto de datos. Los pesos más altos se asignan a las clases minoritarias para aumentar su influencia durante el entrenamiento del modelo.
- Oversampling: Aumentado el número de muestras de las clases minoritarias duplicando, nuevas muestras sintéticas.
- Undersampling: Reduciendo el número de muestras de las clases mayoritarias para equilibrar las clases con menos representación.
- Enfoques de ensamble: Entrenando varios modelos y después combinando sus predicciones.


