Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El desafío de trabajar con conjuntos de datos desequilibrados es que la mayoría de las técnicas de
aprendizaje automático ignorarán y, a su vez, tendrán un bajo rendimiento en la clase minoritaria,
aunque lo más importante es el rendimiento en la clase minoritaria.
Cómo usar extensiones de SMOTE que generan ejemplos sintéticos a lo largo del límite de decisión
de clase.
Descubra SMOTE, clasificación de una clase, aprendizaje sensible a los costos, movimiento de
umbral y mucho más en mi nuevo libro, con 30 tutoriales paso a paso y código fuente completo de
Python.
Empecemos.
Resumen del tutorial
Un problema con la clasificación desequilibrada es que hay muy pocos ejemplos de la clase
minoritaria para que un modelo aprenda efectivamente el límite de decisión.
Una forma de resolver este problema es sobremuestrear los ejemplos en la clase minoritaria. Esto
se puede lograr simplemente duplicando ejemplos de la clase minoritaria en el conjunto de datos
de capacitación antes de ajustar un modelo. Esto puede equilibrar la distribución de la clase, pero
no proporciona ninguna información adicional al modelo.
Quizás el enfoque más utilizado para sintetizar nuevos ejemplos se llama Técnica de
sobremuestreo de minorías sintéticas, o SMOTE para abreviar. Esta técnica fue descrita por Nitesh
Chawla, et al. en su artículo de 2002 llamado así por la técnica titulada "SMOTE: Técnica de
sobremuestreo de minorías sintéticas".
… SMOTE primero selecciona una instancia de clase minoritaria a al azar y encuentra sus k vecinos
de clase minoritaria más cercanos. La instancia sintética se crea eligiendo uno de los k vecinos más
cercanos b al azar y conectando ayb para formar un segmento de línea en el espacio de
características. Las instancias sintéticas se generan como una combinación convexa de las dos
instancias elegidas ay b.
Este procedimiento se puede utilizar para crear tantos ejemplos sintéticos para la clase minoritaria
como sea necesario. Como se describe en el documento, sugiere primero usar un muestreo
aleatorio para recortar el número de ejemplos en la clase mayoritaria, luego usar SMOTE para
sobremuestrear la clase minoritaria para equilibrar la distribución de la clase.
El enfoque es efectivo porque se crean nuevos ejemplos sintéticos de la clase minoritaria que son
plausibles, es decir, son relativamente cercanos en el espacio de características a los ejemplos
existentes de la clase minoritaria.
Nuestro método de sobremuestreo sintético funciona para hacer que el clasificador construya
regiones de decisión más grandes que contienen puntos de clase minoritarios cercanos.
Una desventaja general del enfoque es que los ejemplos sintéticos se crean sin considerar la clase
mayoritaria, posiblemente resultando en ejemplos ambiguos si hay una superposición fuerte para
las clases.
Ahora que estamos familiarizados con la técnica, veamos un ejemplo trabajado para un problema
de clasificación desequilibrado.
import imblearn
print(imblearn.__version__)
La ejecución del ejemplo imprimirá el número de versión de la biblioteca instalada; por ejemplo:
# define dataset
Podemos usar el objeto Counter para resumir el número de ejemplos en cada clase para confirmar
que el conjunto de datos se creó correctamente.
...
# summarize class distribution
counter = Counter(y)
print(counter)