Classes déséquilibrées - Comment minimiser les faux négatifs?

11

J'ai un ensemble de données qui a un attribut de classe binaire. Il y a 623 instances de classe +1 (cancer positif) et 101 671 instances de classe -1 (cancer négatif).

J'ai essayé divers algorithmes (Naive Bayes, Random Forest, AODE, C4.5) et tous ont des taux de faux négatifs inacceptables. Random Forest a la précision globale de prédiction la plus élevée (99,5%) et le taux de faux négatifs le plus bas, mais il manque encore 79% des classes positives (c'est-à-dire qu'il ne parvient pas à détecter 79% des tumeurs malignes).

Des idées pour améliorer cette situation?

Merci!

user798275
la source
Vous pouvez jeter un oeil à cette question où j'ai obtenu des réponses intéressantes pour ce problème. Meilleures salutations
Michael Hooreman

Réponses:

9

Le déséquilibre des classes est un problème très courant. Vous pouvez soit suréchantillonner la classe positive (ou sous-échantillonner la négative) ou ajouter des pondérations de classe.

Une autre chose à retenir dans ce cas est que la précision n'est pas une mesure très utile ici. Vous pourriez considérer le score AUC ou F1 .

La modification de votre seuil de décision peut sembler attrayante, mais entraînera évidemment (dans ce cas, de manière drastique) une augmentation des faux positifs (bien que les MF ne soient peut-être pas aussi mauvais que les FN dans le cas d'un diagnostic médical, si les tests ne sont pas trop chers).

Une analyse plus approfondie des options en cas de déséquilibre de classe est fournie ici .

jamesmf
la source
3

Même si la réponse est en réalité toujours trueou false, vous pouvez faire en sorte que vos attributs de classe ne soient pas des étiquettes mais des nombres à virgule flottante, c'est-à-dire 1.0 et 0.0 (ou 100 et 0). Autrement dit, vous pouvez encadrer qu'il s'agit d'un problème de régression , pas d'un problème de classification.

Ensuite, la sortie prévue sera également des nombres sur ce spectre, c'est-à-dire des probabilités et non des étiquettes. Votre implémentation actuelle est essentiellement équivalente à un modèle de régression avec un seuil de 0,5.

Avec une telle sortie, vous ou votre client pouvez définir un seuil acceptable (par exemple 0,3). Bien sûr, il y aura alors plus de faux positifs, mais pour certaines applications, comme la détection du cancer, c'est optimal.

Le suréchantillonnage (les positifs) ou le sous-échantillonnage (les négatifs) sont également des moyens de résoudre ce problème, mais cela doit être fait de manière réfléchie, peut sacrifier la précision et sacrifie toujours le contrôle pour déplacer le seuil après la création des données et la formation.

Adam Bittlingmayer
la source
0

Le sous-échantillonnage et le suréchantillonnage en tant que technique ont déjà été mentionnés, mais je pensais pointer vers une variante couramment utilisée:

SMOTE : Technique de suréchantillonnage des minorités synthétiques

Il a été présenté dans cet article en 2002 . Voici un extrait du résumé:

Cet article montre qu'une combinaison de notre méthode de sur-échantillonnage de la classe minoritaire (anormale) et de sous-échantillonnage de la classe majoritaire (normale) peut obtenir de meilleures performances du classificateur (dans l'espace ROC) que de sous-échantillonner uniquement la classe majoritaire.


Vous pouvez l'utiliser facilement en Python, en utilisant le imbalanced-learnpackage , qui est contenu dans le module contrib de Scikit-Learn et doit être installé séparément.

imbalanced-learn est un package python offrant un certain nombre de techniques de rééchantillonnage couramment utilisées dans les ensembles de données montrant un fort déséquilibre entre les classes.

Ce package comprend des méthodes pour combiner le sur- / sous-échantillonnage ainsi qu'un ensemble d'utilitaires pour générer des lots de données pouvant circuler dans Keras / Tensorflow.

n1k31t4
la source