66 votos

Clasificación binaria con clases fuertemente desequilibradas

Tengo un conjunto de datos en forma de (características, salidad binaria 0 o 1), pero 1 ocurre muy raramente, por lo que simplemente al predecir siempre 0, obtengo una precisión entre el 70% y el 90% (dependiendo de los datos específicos que examine). Los métodos de ML me dan aproximadamente la misma precisión, y siento que debería haber algunos métodos estándar para aplicar en esta situación, que mejorarían la precisión sobre la regla de predicción obvia.

4 votos

He encontrado este artículo muy útil sobre el tema: svds.com/learning-imbalanced-classes

0 votos

@J.O'BrienAntognini ¡Ese es un artículo realmente bueno!

0 votos

39voto

usεr11852 Puntos 5514

Both hxd1011 y Frank tienen razón (+1). Básicamente el remuestreo o el aprendizaje sensible al costo son las dos principales formas de resolver el problema de datos desequilibrados; la tercera es utilizar métodos de kernel que a veces pueden verse menos afectados por el desequilibrio de clases. Permítanme destacar que no hay una solución milagrosa. Por definición, tienes una clase que está representada de manera inadecuada en tus muestras.

Habiendo dicho lo anterior, creo que encontrarás los algoritmos SMOTE y ROSE muy útiles. SMOTE utiliza efectivamente un enfoque de $k$ vecinos más cercanos para excluir miembros de la clase mayoritaria y de manera similar crear ejemplos sintéticos de una clase minoritaria. ROSE intenta crear estimaciones de las distribuciones subyacentes de las dos clases utilizando un enfoque de bootstrap suavizado y muestrearlos para obtener ejemplos sintéticos. Ambos están disponibles en R, SMOTE en el paquete DMwR y ROSE en el paquete con el mismo nombre. Tanto SMOTE como ROSE resultan en un conjunto de datos de entrenamiento que es más pequeño que el original.

Probablemente argumentaría que una métrica mejor (o menos mala) para el caso de datos desequilibrados es usar la kappa de Cohen ($k$) y/o el Área bajo la curva de la característica de operación del receptor (AUC). La kappa de Cohen controla directamente la precisión esperada, AUC es una función de sensibilidad y especificidad, la curva es insensible a las disparidades en las proporciones de clases. Nuevamente, ten en cuenta que estas son solo métricas que deberían utilizarse con precaución. Idealmente deberías adaptarlas a tu problema específico teniendo en cuenta las ganancias y costos que las clasificaciones correctas e incorrectas conllevan en tu caso. He descubierto que mirar las curvas de lift es realmente informativo para este asunto. Independientemente de tu métrica, debes intentar usar una prueba independiente para evaluar el rendimiento de tu algoritmo; precisamente debido al desequilibrio de clases, el sobreajuste es aún más probable, por lo que las pruebas fuera de muestra son cruciales.

Probablemente el artículo más popular reciente sobre el tema es Aprendizaje a partir de datos desequilibrados de He y García. Ofrece una muy buena descripción general de los puntos planteados por mí y en otras respuestas. Además, creo que la guía de Submuestreo para desequilibrios de clases, presentada por Max Kuhn como parte del paquete caret, es un excelente recurso para obtener un ejemplo estructurado de cómo el submuestreo/sobremuestreo, así como la creación de datos sintéticos, pueden compararse entre sí.

0 votos

Una tercera métrica algo popular (y nuevamente no demasiado apropiada) es el Área Bajo la Curva de Precisión-Recall. El artículo de Davis & James, 2006 se considera un clásico sobre el tema; CV tiene un buen hilo también. Recientemente vi un artículo con el título algo teatral "El Gráfico de Precisión-Recall Es Más Informativo que el Gráfico ROC al Evaluar Clasificadores Binarios en Conjuntos de Datos Desbalanceados", así que tal vez también quieras revisarlo.

1 votos

Para una implementación en Python de una variedad de técnicas de re-muestreo de datos, recomiendo el paquete imbalance-learn: github.com/scikit-learn-contrib/imbalanced-learn

0 votos

Para distribuciones de clases altamente desbalanceadas, el AUPRC es más informativo que el AUROC. Detalles no incluidos aquí, ya que este es un comentario. Entre muchas fuentes, una es aquí.

25voto

David Puntos 41

Primero, la métrica de evaluación para datos desequilibrados no sería la exactitud. Supongamos que estás haciendo detección de fraude, que el 99.9% de tus datos no son fraude. Podemos fácilmente hacer un modelo falso que tenga un 99.9% de exactitud. (simplemente predice todos los datos como no fraude).

Quieres cambiar tu métrica de evaluación de exactitud a algo diferente, como puntuación F1 o precisión y exhaustividad. En el segundo enlace que proporcioné, hay detalles e intuiciones sobre por qué la precisión y la exhaustividad funcionarán.

Para datos altamente desequilibrados, construir un modelo puede ser muy desafiante. Puedes experimentar con una función de pérdida ponderada o modelar solo una clase, como SVM de una sola clase o ajustar una gaussiana multivariante (como el enlace que proporcioné anteriormente).

2 votos

+1. Buen ejemplo y buena mención en el one-class SVM. Aunque creo que el $F_1$-score es un poco excesivo al ignorar por completo los verdaderos negativos.

0 votos

¿El enlace a "precisión y exhaustividad" está roto?

18voto

Franck Dernoncourt Puntos 2128

Los problemas de desequilibrio de clase pueden abordarse tanto con aprendizaje sensible al costo como con remuestreo. Vea ventajas y desventajas del aprendizaje sensible al costo frente al muestreo, copiado a continuación:


{1} da una lista de ventajas y desventajas del aprendizaje sensible al costo frente al muestreo:

2.2 Muestreo

El sobremuestreo y el submuestreo se pueden utilizar para alterar la distribución de clases de los datos de entrenamiento y ambos métodos se han utilizado para lidiar con el desequilibrio de clases [1, 2, 3, 6, 10, 11]. La razón por la que alterar la distribución de clases de los datos de entrenamiento ayuda al aprendizaje con conjuntos de datos altamente desequilibrados es que efectivamente impone costos de clasificación errónea no uniformes. Por ejemplo, si uno altera la distribución de clases del conjunto de entrenamiento para que la proporción de ejemplos positivos a negativos pase de 1:1 a 2:1, entonces efectivamente se ha asignado una proporción de costo de clasificación errónea de 2:1. Esta equivalencia entre alterar la distribución de clases de los datos de entrenamiento y alterar la proporción de costo de clasificación errónea es bien conocida y fue descrita formalmente por Elkan [9].

Existen desventajas conocidas asociadas con el uso de muestreo para implementar el aprendizaje sensible al costo. La desventaja del submuestreo es que descarta potencialmente datos útiles. La principal desventaja del sobremuestreo, desde nuestra perspectiva, es que al hacer copias exactas de ejemplos existentes, aumenta la probabilidad de sobreajuste. De hecho, con el sobremuestreo es bastante común que un modelo genere una regla de clasificación para cubrir un ejemplo único replicado. Una segunda desventaja del sobremuestreo es que aumenta el número de ejemplos de entrenamiento, aumentando así el tiempo de aprendizaje.

2.3 ¿Por Qué Usar Muestreo?

Dadas las desventajas del muestreo, vale la pena preguntarse por qué alguien lo usaría en lugar de un algoritmo de aprendizaje sensible al costo para lidiar con datos con una distribución de clases desequilibrada y costos de clasificación errónea no uniformes. Hay varias razones para esto. La razón más obvia es que no existen implementaciones sensibles al costo de todos los algoritmos de aprendizaje y, por lo tanto, un enfoque basado en envoltura utilizando muestreo es la única opción. Aunque esto es ciertamente menos cierto hoy que en el pasado, muchos algoritmos de aprendizaje (por ejemplo, C4.5) aún no manejan directamente los costos en el proceso de aprendizaje.

Una segunda razón para usar muestreo es que muchos conjuntos de datos altamente desequilibrados son enormes y el tamaño del conjunto de entrenamiento debe reducirse para que el aprendizaje sea factible. En este caso, el submuestreo parece ser una estrategia razonable y válida. En este artículo no consideramos la necesidad de reducir el tamaño del conjunto de entrenamiento. Sin embargo, señalaríamos que si se necesita descartar algunos datos de entrenamiento, aún podría ser beneficioso descartar algunos de los ejemplos de la clase mayoritaria para reducir el tamaño del conjunto de entrenamiento al tamaño requerido y luego también emplear un algoritmo de aprendizaje sensible al costo, de modo que la cantidad de datos de entrenamiento descartados se minimice.

Una razón final que puede haber contribuido al uso de muestreo en lugar de un algoritmo de aprendizaje sensible al costo es que los costos de clasificación errónea a menudo son desconocidos. Sin embargo, esta no es una razón válida para usar el muestreo en lugar de un algoritmo de aprendizaje sensible al costo, ya que el problema análogo surge con el muestreo: ¿cuál debería ser la distribución de clases de los datos de entrenamiento finales? Si esta información de costo no se conoce, se podría utilizar una medida como el área bajo la curva ROC para medir el rendimiento del clasificador y ambas enfoques podrían determinar empíricamente la proporción de costo/distribución de clases adecuada.

También realizaron una serie de experimentos, que fue inconclusa:

Según los resultados de todos los conjuntos de datos, no hay un ganador definitivo entre el aprendizaje sensible al costo, el sobremuestreo y el submuestreo

Luego intentan entender qué criterios en los conjuntos de datos podrían indicar qué técnica se adapta mejor.

También señalan que SMOTE puede aportar algunas mejoras:

Existen una variedad de mejoras que las personas han realizado para mejorar la efectividad del muestreo. Algunas de estas mejoras incluyen la introducción de nuevos ejemplos "sintéticos" al sobremuestreo [5 -> SMOTE], eliminar ejemplos de la clase mayoritaria menos útiles al submuestreo [11] y utilizar múltiples submuestras al submuestrear, de modo que cada ejemplo se utilice en al menos una submuestra [3]. Si bien estas técnicas han sido comparadas con el sobremuestreo y el submuestreo, generalmente no se han comparado con algoritmos de aprendizaje sensibles al costo. Sería interesante estudiar esto en el futuro.


{1} Weiss, Gary M., Kate McCarthy, y Bibi Zabar. "Aprendizaje sensible al costo frente al muestreo: ¿cuál es mejor para manejar clases desbalanceadas con costos de error desiguales?." DMIN 7 (2007): 35-41. https://scholar.google.com/scholar?cluster=10779872536070567255&hl=en&as_sdt=0,22 ; https://pdfs.semanticscholar.org/9908/404807bf6b63e05e5345f02bcb23cc739ebd.pdf

1 votos

Entonces, para resumir el enlace: los resultados sobre cuál método es mejor son inconclusos, y es más fácil usar el submuestreo/sobremuestreo. ¿Verdad?

1 votos

@LazyCat derecha.

0 votos

Sí, la plataforma tiene limitaciones. Pero muchas de ellas también son características. Por ejemplo, supondría que si una respuesta larga y detallada como esta pudiera responder adecuadamente a dos preguntas, entonces esas preguntas deben ser duplicadas. Y si no son duplicadas, entonces debería ser posible variar las respuestas de manera significativa para que no sean simplemente copiadas y pegadas. ¿Qué acción se debe tomar en este caso? (cc @gung)

7voto

DJohnson Puntos 1347

Varias respuestas a esta consulta ya han proporcionado varios enfoques diferentes, todos válidos. Esta sugerencia proviene de un artículo y un software asociado de Gary King, eminente científico político de Harvard. Ha coescrito un artículo titulado Regresión Logística en Datos de Eventos Raros que proporciona algunas soluciones bastante sólidas.

Aquí está el resumen:

Estudiamos datos de eventos raros, variables dependientes binarias con decenas a miles de veces menos unos (eventos, como guerras, vetos, casos de activismo político o infecciones epidemiológicas) que ceros ("no eventos"). En muchas literaturas, estas variables han resultado difíciles de explicar y predecir, un problema que parece tener al menos dos fuentes. Primero, los procedimientos estadísticos populares, como la regresión logística, pueden subestimar marcadamente la probabilidad de eventos raros. Recomendamos correcciones que superan a los métodos existentes y cambian las estimaciones de riesgos absolutos y relativos en la misma medida que algunos efectos estimados reportados en la literatura. En segundo lugar, las estrategias de recolección de datos comúnmente utilizadas son groseramente ineficientes para datos de eventos raros. El temor a recopilar datos con muy pocos eventos ha llevado a colecciones de datos con un gran número de observaciones pero relativamente pocos y mal medidos, variables explicativas, como en datos de conflictos internacionales con más de un cuarto de millón de diadas, solo unos pocos de los cuales están en guerra. Resulta que existen diseños de muestreo más eficientes para hacer inferencias válidas, como muestrear todos los eventos variables (por ejemplo, guerras) y una fracción muy pequeña de no eventos (paz). Esto permite a los académicos ahorrar hasta un 99% de sus costos de recolección de datos (no fijos) o recopilar variables explicativas mucho más significativas. Proporcionamos métodos que vinculan estos dos resultados, permitiendo que ambos tipos de correcciones funcionen simultáneamente, y software que implementa los métodos desarrollados.

Aquí hay un enlace al artículo ... http://gking.harvard.edu/files/abs/0s-abs.shtml

0 votos

Gracias, - si lees el artículo, ¿sugieren algo importante más allá de la submuestra sugerida arriba?

4 votos

Este es un buen artículo, ¡lo he leído más de una vez! (+1) Sin embargo, creo que deberías señalar que el artículo también está interesado en la inferencia. Por esta razón, un GBM sería menos útil para un científico político en comparación con un GLM. Por ejemplo, si se utilizan metodologías basadas en árboles: "... dos algoritmos de partición recursiva pueden alcanzar la misma precisión de predicción pero, al mismo tiempo, representan relaciones de regresión estructuralmente diferentes, es decir, modelos diferentes y pueden llevar a conclusiones diferentes sobre la influencia de ciertos covariables en la respuesta." (Hothorn et al. 2006)

3voto

user79709 Puntos 133

El desarrollo de clasificadores para conjuntos de datos con clases desequilibradas es un problema común en el aprendizaje automático. Los métodos basados en densidad pueden tener méritos significativos sobre los "clasificadores tradicionales" en tal situación.

Un método basado en densidad estima la densidad desconocida $\hat{p}(x|y \in C)$, donde $C$ es la clase más dominante (En tu ejemplo, $C = \{x: y_i = 0\}$).

Una vez que se entrena una estimación de densidad, puedes predecir la probabilidad de que un registro de prueba no visto $x^*$ pertenezca a esta estimación de densidad o no. Si la probabilidad es suficientemente pequeña, menor que un umbral especificado (usualmente obtenido a través de una fase de validación), entonces $\hat{y}(x^*) \notin C$, de lo contrario $\hat{y}(x^*) \in C$

Puedes consultar el siguiente artículo:

"Un estimador Plug-in computable de conjuntos de volumen mínimo para detección de novedades," C. Park, J. Huang y Y. Ding, Investigación Operativa, 58(5), 2013.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X