Pourquoi sous-échantillonner?

42

Supposons que je veuille apprendre un classificateur qui prédit si un courrier électronique est un spam. Et supposons que seulement 1% des emails sont du spam.

La chose la plus simple à faire serait d'apprendre le classificateur trivial qui dit qu'aucun des courriels n'est du spam. Ce classificateur nous donnerait une précision de 99%, mais n'apprendrait rien d'intéressant et aurait un taux de faux négatifs de 100%.

Pour résoudre ce problème, les gens m'ont dit de "sous-échantillonner" ou d'apprendre sur un sous-ensemble de données où 50% des exemples sont du spam et 50% ne sont pas du spam.

Mais je suis inquiet à propos de cette approche, puisqu’une fois que nous aurons construit ce classificateur et commencé à l’utiliser sur un véritable corpus d’e-mails (par opposition à un ensemble de tests 50/50), il se peut qu’ils prédisent que de nombreux e-mails sont du spam quand ils " re vraiment pas. Juste parce qu'il est habitué à voir beaucoup plus de spam qu'il n'y en a réellement dans l'ensemble de données.

Alors, comment pouvons-nous résoudre ce problème?

("Upsampling" ou répétition répétée des exemples positifs d’entraînement pour que 50% des données soient des exemples positifs d’entraînement, semble souffrir de problèmes similaires.)

Jessica
la source

Réponses:

37

En fait, la plupart des modèles de classification ne donnent pas une décision binaire, mais plutôt une valeur de décision continue (par exemple, les modèles de régression logistique génèrent une probabilité, les SVM émettent une distance signée vers l'hyperplan, ...). En utilisant les valeurs de décision, nous pouvons classer les échantillons de test de «presque certainement positif» à «presque certainement négatif».

En fonction de la valeur de décision, vous pouvez toujours affecter une limite qui configure le classificateur de manière à ce qu'une certaine fraction de données soit étiquetée comme positive. La détermination d'un seuil approprié peut être effectuée via les courbes ROC ou PR du modèle . Vous pouvez jouer avec le seuil de décision quel que soit le solde utilisé dans l’entraînement. En d'autres termes, des techniques comme le sous-échantillonnage ou le sous-échantillonnage sont orthogonaux à cela.

En supposant que le modèle soit meilleur que le hasard, vous pouvez voir intuitivement que l'augmentation du seuil de classification positive (ce qui conduit à des prédictions moins positives) augmente la précision du modèle au prix d'un rappel plus faible et inversement.

Considérez SVM comme un exemple intuitif: le principal défi consiste à apprendre l’ orientation de l’hyperplan séparateur. Un sous-échantillonnage peut aider à cela (je recommande de préférer l'échantillonnage majoré au sous-échantillonnage). Lorsque l'orientation de l'hyperplan est bonne, nous pouvons jouer avec le seuil de décision (par exemple, la distance signée par rapport à l'hyperplan) pour obtenir une fraction souhaitée de prédictions positives.

Marc Claesen
la source
Merci, c'était très utile. Comment savez-vous ce que le seuil devrait être? Voulez-vous définir le seuil afin que la proportion de prédictions positives soit égale à la proportion d'exemples positifs dans la population?
Jessica
2
@ Jessica Comme je l'ai mentionné, un moyen pratique de choisir le seuil consiste à utiliser les courbes de caractéristiques de fonctionnement du récepteur. Chaque seuil correspond à un point de l’espace ROC. Lorsque vous tracez la courbe, vous pouvez choisir un seuil en fonction de vos besoins spécifiques. (Vous pouvez également utiliser des courbes de rappel de précision comme alternative)
Marc Claesen
Je ne suis pas d'accord pour dire que la distance d'un point de test à l'hyperplan appris par un SVM est une mesure de la confiance de la prédiction. Des efforts ont été déployés pour confondre les prédictions de sortie SVM. Recherchez la mise à l'échelle Platt par exemple. Mais il ne fait pas aussi bien que la classification de processus gaussienne (confiance prédictive).
Seeda
1
La mise à l'échelle @Seeda Platt concerne les probabilités de prendre des décisions. La mise à l'échelle Platt est aussi simple que d'exécuter des valeurs de décision (mises à l'échelle) via la fonction logistique, qui augmente de façon monotone et n'affecte donc en aucune manière le classement (= confiance). Tout ce qu'il fait est de mapper la sortie de sur [ 0 , 1 ] . R[0,1]
Marc Claesen
@MarcClaesen Je ne suggère pas d'utiliser la mise à l'échelle Platt; c'est une "tentative" de générer des confidences de prédiction, mais il existe de meilleures alternatives. Tout ce que je dis, c'est que l'utilisation de la distance par rapport à l'hyperplan n'est pas significative et que je ne passe jamais en revue la littérature, même si c'est la première chose qui nous vient à l'esprit en essayant de générer des confidences à partir d'un SVM.
Seeda
14

Le vrai problème ici réside dans le choix de votre métrique: le pourcentage de précision est une mauvaise mesure du succès d’un modèle sur un ensemble de données non équilibré (pour la raison précise que vous mentionnez: c’est trivial d’atteindre une précision de 99% dans ce cas).

Équilibrer votre jeu de données avant d'ajuster le modèle est une mauvaise solution car cela polarise votre modèle et (pire encore) jette des données potentiellement utiles.

Vous feriez bien mieux d’équilibrer votre mesure de précision plutôt que d’équilibrer vos données. Par exemple , vous pouvez utiliser une précision équilibrée lorsque vous évaluer le modèle: (error for the positive class + error for the negative class)/2. Si vous prédisez tout positif ou tout négatif, cette métrique sera 50%une propriété intéressante.

À mon avis, la seule raison pour sous-échantillonner est lorsque vous avez trop de données et que vous ne pouvez pas adapter votre modèle. De nombreux classificateurs (régression logistique, par exemple) conviendront parfaitement aux données non équilibrées.

Zach
la source
Puis-je demander comment les classificateurs peuvent bien fonctionner sur des données déséquilibrées? Peut-être que ce ne sont que mes données mais j’ai essayé la régression logistique de la formation, des forêts aléatoires et des modèles C5.0 sur mes données de formation, à la fois déséquilibrés et équilibrés en utilisant un mélange / suréchantillonnage. Les modèles formés sur les données déséquilibrées fonctionnent beaucoup moins bien sur mon ensemble de tests que ceux formés sur les données équilibrées.
Seanosapien
13

Comme toujours @Marc Claesencomme une excellente réponse.

J'ajouterais simplement que le concept clé qui semble manquer est celui d'une fonction de coût . Quel que soit le modèle, le coût implicite ou explicite des faux négatifs en faux positifs (FN / FP) est implicite ou explicite. Pour les données déséquilibrées décrites, on est souvent prêt à avoir un rapport de 5: 1 ou 10: 1. Il existe de nombreuses façons d’introduire des fonctions de coût dans les modèles. Une méthode traditionnelle consiste à imposer un seuil de probabilité aux probabilités générées par un modèle - cela fonctionne bien pour la régression logistique.

Une méthode utilisée pour les classificateurs stricts qui ne génèrent pas naturellement les estimations de probabilité consiste à sous-échantillonner la classe majoritaire selon un ratio qui induira la fonction de coût qui vous intéresse. Notez que si vous échantillonnez à 50/50, vous induisez une fonction de coût arbitraire. La fonction de coût est différente mais tout aussi arbitraire que si vous échantillonniez au taux de prévalence. Vous pouvez souvent prédire un ratio d'échantillonnage approprié correspondant à votre fonction de coût (ce n'est généralement pas 50/50), mais la plupart des praticiens auxquels j'ai parlé se contentent d'essayer quelques ratios et de choisir celui qui est le plus proche de leur fonction de coût.

Charles
la source
2
Merci d'avoir soulevé cette question, c'est une idée intéressante à laquelle je n'avais pas pensé. Comment pouvez-vous savoir quel taux d'échantillonnage correspond à votre fonction de coût?
Jessica
8

Répondez directement à la question de Jessica - une des raisons pour le sous-échantillonnage est lorsque vous travaillez avec un jeu de données volumineux et que vous faites face à des limites de mémoire sur votre ordinateur ou souhaitez simplement réduire le temps de traitement. Le sous-échantillonnage (c’est-à-dire le prélèvement d’un échantillon aléatoire sans remplacement) à partir des observations négatives réduit l’ensemble de données à une taille plus gérable.

Vous avez mentionné l'utilisation d'un "classificateur" dans votre question mais vous n'avez pas précisé lequel. Les classificateurs que vous voudrez peut-être éviter sont les arbres de décision. Lorsque j'exécute un arbre de décision simple sur des données d'événements rares, je trouve souvent que l'arbre ne construit qu'une seule racine, car il a des difficultés à scinder si peu de cas positifs en catégories. Il peut y avoir des méthodes plus sophistiquées pour améliorer les performances des arbres lors d'événements rares - je n'en connais aucune de manière inattendue.

Par conséquent, l’utilisation d’une régression logistique renvoyant une valeur de probabilité prédite continue, comme le suggère Marc Claesen, constitue une meilleure approche. Si vous effectuez une régression logistique sur les données, les coefficients restent non biaisés malgré le nombre réduit d'enregistrements. Vous devrez ajuster l'interception,β0

βc=β0-bûche(p+1-p+)

p+ est la fraction des cas positifs dans votre population avant échantillonnage.

nnnNn

RobertF
la source
3

Bien sûr, tout classer comme "non spam" vous permet de dire que, pour 100 courriers, 100 d'entre eux sont correctement classés, mais également comme "non spam" le seul étiqueté comme spam (100% faux positif). Il s'avère que la métrique choisie pour évaluer l'algorithme n'est pas adaptée. Cette vidéo illustre le concept.

En gros, l’équilibrage du jeu de données vous permet de pondérer les erreurs de classification. Un algorithme qui utilise un ensemble d’entraînement déséquilibré n’apprendra vraisemblablement pas à discriminer les caractéristiques, car il n’accorderait pas beaucoup d’importance au fait que les données de la classe maigre sont mal classées.

Giuseppe
la source
0

Je ne choisirais ni le sous-échantillonnage ni le rééchantillonnage car les deux astuces de l'algorithme d'apprentissage. Cependant, si les données sont déséquilibrées, la mesure de la précision devient invalide ou manque d'information, il est donc préférable d'utiliser des mesures de précision et de rappel, les deux dépendant principalement du TP ( les spams correctement classés dans votre cas), cela donne une bonne idée de la performance réelle de votre système en termes de détection des spams quel que soit le nombre d'exemples négatifs.

Ahmad Hassanat
la source