Clases desequilibradas: ¿cómo minimizar los falsos negativos?

11

Tengo un conjunto de datos que tiene un atributo de clase binaria. Hay 623 instancias con clase +1 (cáncer positivo) y 101,671 instancias con clase -1 (cáncer negativo).

He probado varios algoritmos (Naive Bayes, Random Forest, AODE, C4.5) y todos ellos tienen relaciones inaceptables de falsos negativos. Random Forest tiene la precisión de predicción general más alta (99.5%) y la relación de falsos negativos más baja, pero aún pierde el 79% de las clases positivas (es decir, no detecta el 79% de los tumores malignos).

¿Alguna idea de cómo puedo mejorar esta situación?

¡Gracias!

usuario798275
fuente
Puedes echar un vistazo a esta pregunta donde obtuve respuestas interesantes para este problema. Saludos cordiales
Michael Hooreman

Respuestas:

9

El desequilibrio de clase es un problema muy común. Puede sobremuestrear la clase positiva (o submuestrear la negativa) o agregar ponderaciones de clase.

Otra cosa para recordar en este caso es que la precisión no es una métrica muy útil aquí. Puede considerar la puntuación AUC o F1 .

Cambiar el umbral de decisión puede parecer atractivo, pero obviamente conducirá (en este caso, probablemente drásticamente) a un aumento de falsos positivos (aunque tal vez los FP no sean tan malos como los FN en el caso del diagnóstico médico, si las pruebas no son prohibitivamente caras).

Aquí se proporciona un análisis más profundo de las opciones en el caso del desequilibrio de clase .

jamesmf
fuente
3

Aunque la respuesta en realidad es siempre trueo false, puede hacer que sus atributos de clase no sean etiquetas sino números de coma flotante, es decir, 1.0 y 0.0 (o 100 y 0). Es decir, puede enmarcarlo es un problema de regresión , no un problema de clasificación.

Entonces, la salida prevista también será números en ese espectro, es decir, probabilidades, no etiquetas. Su implementación actual es esencialmente equivalente a un modelo de regresión con un umbral de 0.5.

Con tal salida, usted o su cliente pueden definir un umbral que sea aceptable (por ejemplo, 0.3). Por supuesto, habrá más falsos positivos, pero para algunas aplicaciones, como la detección del cáncer, eso es óptimo.

El sobremuestreo (los positivos) o el submuestreo (los negativos) también son formas de solucionar esto, pero deben hacerse cuidadosamente, pueden sacrificar la precisión y aún sacrifican el control para mover el umbral después de crear los datos y el entrenamiento.

Adam Bittlingmayer
fuente
0

El submuestreo y el sobremuestreo como técnica ya se han mencionado, pero pensé que señalaría una variante de uso común:

SMOTE : Técnica de sobremuestreo de minorías sintéticas

Fue presentado en este documento en 2002 . Aquí hay un fragmento del resumen:

Este documento muestra que una combinación de nuestro método de sobremuestreo de la clase minoritaria (anormal) y submuestreo de la clase mayoritaria (normal) puede lograr un mejor rendimiento del clasificador (en el espacio ROC) que solo submuestrear la clase mayoritaria.


Puede usarlo fácilmente en Python, usando el imbalanced-learnpaquete , que está contenido en el módulo contrib de Scikit-Learn y debe instalarse por separado.

imbalanced-learn es un paquete de Python que ofrece una serie de técnicas de remuestreo comúnmente utilizadas en conjuntos de datos que muestran un fuerte desequilibrio entre clases.

Ese paquete incluye métodos para combinar sobre / submuestreo, así como un conjunto de utilidades para generar lotes de datos que pueden fluir hacia Keras / Tensorflow.

n1k31t4
fuente