Datos no balanceados. Sobremuestreo, submuestreo y ponderación

Una situación común al enfrentarnos al desarrollo de modelos, ya sean predictivos o de aprendizaje automático, es encontrarnos con datos no balanceados (la probabilidad de ocurrencia de un suceso es muy baja).

Introducción.

En estos casos, un modelo estimado sobre la base de datos completa tiene menos oportunidad de reconocer diferencias que sobre una base de datos balanceada.

Para conseguir nuestro objetivo podemos hacer uso del sobremuestreo (oversampling), submuestreo (undersampling) o ponderación (weighting).

Evitando el sobreajuste.

Debemos poner especial cuidado en evitar el sobreajuste (overfitting), es decir, que nuestro modelo ajuste muy bien los datos con los que se ha entrenado pero no tanto predicciones futuras. Para ello, dividiremos nuestro dataset en tres:

  • Entrenamiento (training set).

Muestra que usaremos para ensayar el modelo.

  • Validación (validation set).

Cuando necesitamos ajustar parámetros (p.ej: en el caso de las redes neuronales, hiperparámetros como el número de capas, el ratio de aprendizaje…), esta muestra nos será de utilidad. Podríamos entrenar varios algoritmos con el training set, compararlos usando los datos del validation set y decidir cuál de ellos se comporta mejor.

  • Test (test set).

Muestra usada para dar una evaluación de la bondad del ajuste del modelo final. A partir de estos datos obtendremos medidas como la sensibilidad, especificidad, precisión…

Según el tipo de modelo encontramos unas recomendaciones u otras a la hora de fijar las proporciones en nuestro dataset original. Parece haber consenso en un 80/20 (75/25) en el caso de modelos que sólo requieren training/test sets. Si nuestro modelo necesita validación, podríamos fijar 70% training – 15% validation –15% test.

Las técnicas que nos ocupan serán aplicadas sólo sobre la muestra de entrenamiento, debiendo validar y testear el modelo sobre datos con la estructura ‘real’ (no balanceada).

Balanceando nuestros datos.

El nivel de sobremuestreo depende del tipo de modelo usado. En regresión logística, una proporción 20-80 funciona (es decir, elevar a un 20% la proporción de individuos que presentan la característica a estudio). En el caso de árboles de decisión, los resultados mejoran con 50-50.

Veamos en qué consiste cada una de las técnicas con un ejemplo.

Pongamos que tenemos interés en predecir, en base a otras variables, si un cliente es miembro de un programa de fidelización determinado. En nuestro dataset encontramos tan sólo un 2% de individuos con esta característica. En este caso entrenaremos un modelo de regresión logística.

Para conseguir balancear nuestros datos podemos aplicar uno de los siguientes métodos:

  • Sobremuestreo (oversampling).

Obtendríamos una muestra mayor, manteniendo los no-fidelizados como 80% de la muestra y replicando el 2% original de fidelizados hasta llegar a un 20%.

  • Submuestreo (undersampling).

Obtendríamos una muestra menor, en la que el 2% original de fidelizados constituye el 20% de la muestra, reduciendo el número de no-fidelizados seleccionados.

  • Ponderación (weighting).

En lugar de desechar individuos (submuestreo) o replicarlos (sobremuestreo), balanceamos el conjunto de datos (20-80) asignando un peso en función de si es fidelizado (w1=1) o no (w0<1) y ponderando por esta variable a la hora de estimar el modelo.

Lourdes Hernández

Lourdes Hernández

Share on facebook
Share on twitter
Share on linkedin
Share on email
2 min
Suscríbete a nuestra newsletter

Los mejores artículos de analítica digital para potenciar tu negocio.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas relacionadas

Cómo integrar KNIME con R

Integrar KNIME con R nos permite construir flujos de análisis de datos fácilmente comprensibles.

2 minutos

Dificultad