Hay básicamente dos posibles razones por las que puede querer submuestrear: para la formación o para la prueba.
En primer lugar, al entrenar su clasificador, si una clase domina los datos, entonces la función de coste estará dominada por lo bien que el clasificador predice esa clase en particular. Por tanto, los parámetros del clasificador se optimizarán en mayor medida para detectar esa clase, y no se "preocupará" tanto por rechazar correctamente esa clase porque hay menos casos en los datos en los que eso sea un problema. En otras palabras, si consideramos que la clase más frecuente es la "positiva", el clasificador se está inclinando hacia una clase más alta. tasa de aciertos y falsas alarmas, lo que puede permitirse porque el número de posibles falsas alarmas es baja dada la prevalencia de la clase negativa.
Sin embargo, este problema tiene una solución alternativa que no requiere tirar ningún dato de entrenamiento: ajustar la función de coste. El problema sólo se produce si se ponderan todos los errores por igual, es decir, si se le dice al clasificador que intente obtener el menor número de errores posible en todos los datos. Así que en lugar de intentar minimizar el número de errores, puede decirle al clasificador que minimice la frecuencia de errores, promediados en las dos clases. Esto significa que el peso total de los errores en la clase rara es igual al peso total de los errores en la clase común, por lo que ya no hay ninguna ventaja para que el clasificador responda siempre (o mayoritariamente) a la clase más frecuente. Esto debe eliminar cualquier sesgo en el aprendizaje, es decir, el clasificador ya no debería aprender estrategias triviales basadas en la frecuencia de las clases y no en los patrones reales de los datos.
Al probar el clasificador, el problema es que no estás seguro de cuál es el nivel de azar de los errores, porque hay clasificadores triviales "tramposos" que podrían obtener tasas de error muy bajas simplemente respondiendo siempre (o mayoritariamente) a la clase más prevalente. La solución en este caso es esencialmente la misma: no echar todos los errores en el mismo saco, sino mirarlos por separado para cada clase. Un clasificador tonto que siempre da la misma respuesta predecirá la clase más frecuente correctamente el 100% de las veces, pero acertará el 0% de la otra clase, lo que equivale al conocido nivel de azar binario del 50%. Cualquier clasificador que obtenga una puntuación (significativamente) superior a esa cifra debe recuperar alguna información real de los datos. Hay formas más sofisticadas de ver esto, pero esa es esencialmente la intuición.
Así que, en cualquier caso, no creo que el submuestreo sea la mejor respuesta, porque es tirar los datos, y hay otras formas de restablecer el equilibrio de clases en su análisis que utilizan todos los datos.