Explicación del sobremuestreo y submuestreo: una guía visual con un miniconjunto de datos 2D | de Samy Baladram | octubre de 2024

PREPROCESAMIENTO DE DATOS

Generar y eliminar datos artificialmente por el bien común

Recopilar un conjunto de datos en el que cada clase tenga exactamente el mismo número de clases para predecir puede ser un desafío. En realidad, las cosas rara vez están perfectamente equilibradas y, cuando se crea un modelo de clasificación, esto puede ser un problema. Cuando un modelo se entrena con un conjunto de datos de este tipo, donde una clase tiene más ejemplos que la otra, generalmente mejora en la predicción de los grupos más grandes y peor en la predicción de los más pequeños. Para ayudar con este problema, podemos utilizar tácticas como el sobremuestreo y el submuestreo: crear más ejemplos del grupo más pequeño o eliminar algunos ejemplos del grupo más grande.

Existen muchos métodos diferentes de sobremuestreo y submuestreo (con nombres intimidantes como SMOTE, ADASYN y Tomek Links), pero no parece haber muchos recursos que comparen visualmente cómo funcionan. Entonces, aquí usaremos un conjunto de datos 2D simple para mostrar los cambios que ocurren en los datos después de aplicar esos métodos, de modo que podamos ver qué tan diferente es el resultado de cada método. Verá en las imágenes que estos diversos enfoques brindan diferentes soluciones y, quién sabe, ¡alguno podría ser adecuado para su desafío específico de aprendizaje automático!

Todos los elementos visuales: creados por el autor con Canva Pro. Optimizado para dispositivos móviles; Puede parecer de gran tamaño en el escritorio.

Sobremuestreo

El sobremuestreo hace que un conjunto de datos sea más equilibrado cuando un grupo tiene muchos menos ejemplos que el otro. La forma en que funciona es haciendo más copias de los ejemplos del grupo más pequeño. Esto ayuda a que el conjunto de datos represente a ambos grupos de manera más equitativa.

Submuestreo

Por otro lado, el submuestreo funciona eliminando algunos de los ejemplos del grupo más grande hasta que tengan casi el mismo tamaño que el grupo más pequeño. Al final, el conjunto de datos es más pequeño, claro, pero ambos grupos tendrán una cantidad más similar de ejemplos.

Muestreo híbrido

La combinación de sobremuestreo y submuestreo se puede denominar “muestreo híbrido”. Aumenta el tamaño del grupo más pequeño al hacer más copias de sus ejemplos y también elimina algunos ejemplos del grupo más grande al eliminar algunos de sus ejemplos. Intenta crear un conjunto de datos que sea más equilibrado, ni demasiado grande ni demasiado pequeño.

Utilicemos un conjunto de datos de golf artificial simple para mostrar tanto el sobremuestreo como el submuestreo. Este conjunto de datos muestra qué tipo de actividad de golf realiza una persona en una condición climática particular.

Columnas: Temperatura (0–3), Humedad (0–3), Actividad de golf (A=Campo normal, B=Rango de manejo o C=Golf cubierto). El conjunto de datos de entrenamiento tiene 2 dimensiones y 9 muestras.

⚠️ Tenga en cuenta que, si bien este pequeño conjunto de datos es bueno para comprender los conceptos, en aplicaciones reales querrá conjuntos de datos mucho más grandes antes de aplicar estas técnicas, ya que el muestreo con muy pocos datos puede generar resultados poco confiables.

Sobremuestreo aleatorio

Sobremuestreo aleatorio es una forma sencilla de hacer que el grupo más pequeño sea más grande. Funciona haciendo duplicados de los ejemplos del grupo más pequeño hasta que todas las clases estén equilibradas.

👍 Ideal para conjuntos de datos muy pequeños que deben equilibrarse rápidamente
👎 No recomendado para conjuntos de datos complicados

El sobremuestreo aleatorio simplemente duplica las muestras seleccionadas del grupo más pequeño (A) mientras mantiene todas las muestras de los grupos más grandes (B y C) sin cambios, como lo muestran las marcas A×2 en el gráfico de la derecha.

HERIDO

HERIDO (Técnica de sobremuestreo de minorías sintéticas) es una técnica de sobremuestreo que crea nuevos ejemplos interpolando el grupo más pequeño. A diferencia del sobremuestreo aleatorio, no solo copia lo que hay allí, sino que utiliza los ejemplos del grupo más pequeño para generar algunos ejemplos entre ellos.

👍 Es mejor cuando tienes una cantidad decente de ejemplos con los que trabajar y necesitas variedad en tus datos
👎 No recomendado si tienes muy pocos ejemplos.
👎 No recomendado si los puntos de datos están demasiado dispersos o son ruidosos

SMOTE crea nuevas muestras A seleccionando pares de puntos A y colocando nuevos puntos en algún lugar a lo largo de la línea entre ellos. De manera similar, se coloca un nuevo punto B entre pares de puntos B elegidos al azar.

ADASYN

ADASYN (Adaptive Synthetic) es como SMOTE pero se centra en crear nuevos ejemplos en las partes más difíciles de aprender del grupo más pequeño. Encuentra los ejemplos que son más difíciles de clasificar y presenta más puntos nuevos en torno a ellos. Esto ayuda al modelo a comprender mejor las áreas desafiantes.

👍 Es mejor cuando algunas partes de tus datos son más difíciles de clasificar que otras
👍 Lo mejor para conjuntos de datos complejos con áreas desafiantes
👎 No recomendado si tus datos son bastante simples y directos

ADASYN crea más puntos sintéticos del grupo más pequeño (A) en “áreas difíciles” donde los puntos A están cerca de otros grupos (B y C). También genera nuevos puntos B en áreas similares.

El submuestreo reduce el grupo más grande para acercarlo en tamaño al grupo más pequeño. Hay algunas formas de hacer esto:

Submuestreo aleatorio

Submuestreo aleatorio elimina ejemplos del grupo más grande al azar hasta que tenga el mismo tamaño que el grupo más pequeño. Al igual que el sobremuestreo aleatorio, el método es bastante simple, pero podría eliminar información importante que realmente muestra cuán diferentes son los grupos.

👍 Ideal para conjuntos de datos muy grandes con muchos ejemplos repetitivos
👍 Mejor cuando necesitas una solución rápida y sencilla
👎 No recomendado si todos los ejemplos de tu grupo más grande son importantes
👎 No recomendado si no puedes permitirte perder información

El submuestreo aleatorio elimina los puntos elegidos al azar de los grupos más grandes (B y C) y mantiene todos los puntos del grupo más pequeño (A) sin cambios.

Enlaces de Tomek

Enlaces de Tomek Es un método de submuestreo que aclara las “líneas” entre grupos. Busca pares de ejemplos de diferentes grupos que sean realmente parecidos. Cuando encuentra un par donde los ejemplos son vecinos más cercanos pero pertenecen a grupos diferentes, elimina el ejemplo del grupo más grande.

👍 Mejor cuando tus grupos se superponen demasiado
👍 Lo mejor para limpiar datos desordenados o ruidosos
👍 Mejor cuando necesitas límites claros entre grupos
👎 No recomendado si vuestros grupos ya están bien separados

Tomek Links identifica pares de puntos de diferentes grupos (AB, BC) que son vecinos más cercanos entre sí. Los puntos de los grupos más grandes (B y C) que forman estos pares se eliminan mientras que se mantienen todos los puntos del grupo más pequeño (A).

Casi accidente

Casi accidente es un conjunto de técnicas de submuestreo que funcionan con diferentes reglas:

  • Casi accidente-1: Mantiene los ejemplos del grupo más grande que son más cercanos a los ejemplos del grupo más pequeño.
  • Casi Miss-2: Mantiene ejemplos del grupo más grande que tienen la distancia promedio más pequeña a sus tres vecinos más cercanos en el grupo más pequeño.
  • Casi Miss-3: Mantiene los ejemplos del grupo más grande que están más alejados de otros ejemplos de su propio grupo.

La idea principal aquí es conservar los ejemplos más informativos del grupo más grande y deshacerse de los que no son tan importantes.

👍 Es mejor cuando quieres controlar qué ejemplos conservar
👎 No recomendado si necesita una solución sencilla y rápida

NearMiss-1 mantiene los puntos de los grupos más grandes (B y C) que están más cerca del grupo más pequeño (A), mientras elimina el resto. Aquí, sólo se mantienen los puntos B y C más cercanos a los puntos A.

ENN

Vecinos más cercanos editados (ENN) elimina ejemplos que probablemente sean ruido o valores atípicos. Para cada ejemplo del grupo más grande, comprueba si la mayoría de sus vecinos más cercanos pertenecen al mismo grupo. Si no lo hacen, elimina ese ejemplo. Esto ayuda a crear límites más limpios entre los grupos.

👍 Lo mejor para limpiar datos desordenados
👍 Mejor cuando necesitas eliminar valores atípicos
👍 Lo mejor para crear límites de grupo más limpios
👎 No recomendado si tus datos ya están limpios y bien organizados

ENN elimina puntos de grupos más grandes (B y C) cuya mayoría de vecinos más cercanos pertenecen a un grupo diferente. En el gráfico de la derecha, los puntos tachados se eliminan porque la mayoría de sus vecinos más cercanos pertenecen a otros grupos.

SMOTETomek

SMOTETomek funciona creando primero nuevos ejemplos para el grupo más pequeño usando SMOTE, luego limpiando límites desordenados eliminando ejemplos “confusos” usando Tomek Links. Esto ayuda a crear un conjunto de datos más equilibrado con límites más claros y menos ruido.

👍 Lo mejor para datos desequilibrados que son realmente graves
👍 Mejor cuando necesitas más ejemplos y límites más claros
👍 Es mejor cuando se trata de grupos ruidosos y superpuestos
👎 No recomendado si tus datos ya están limpios y bien organizados
👎 No recomendado para conjuntos de datos pequeños

SMOTETomek combina dos pasos: primero aplicar SMOTE para crear nuevos puntos A a lo largo de las líneas entre los puntos A existentes (que se muestran en el gráfico central), luego eliminar los enlaces Tomek de grupos más grandes (B y C). El resultado final tiene grupos más equilibrados con límites más claros entre ellos.

SUAVE

SUAVE funciona creando primero nuevos ejemplos para el grupo más pequeño usando SMOTE, luego limpiando ambos grupos eliminando ejemplos que no encajan bien con sus vecinos usando ENN. Al igual que SMOTETomek, esto ayuda a crear un conjunto de datos más limpio con límites más claros entre los grupos.

👍 Lo mejor para limpiar ambos grupos a la vez
👍 Mejor cuando necesitas más ejemplos pero datos más limpios
👍 Lo mejor cuando se trata de muchos valores atípicos
👎 No recomendado si tus datos ya están limpios y bien organizados
👎 No recomendado para conjuntos de datos pequeños

SMOTEENN combina dos pasos: primero usar SMOTE para crear nuevos puntos A a lo largo de líneas entre puntos A existentes (gráfico central), luego aplicar ENN para eliminar puntos de grupos más grandes (B y C) cuyos vecinos más cercanos son en su mayoría de diferentes grupos. El gráfico final muestra el conjunto de datos limpio y equilibrado.