Je suis novice dans l'exploration de données et j'essaie de former un arbre de décision par rapport à un ensemble de données extrêmement déséquilibré. Cependant, j'ai des problèmes avec une faible précision prédictive.
Les données comprennent les étudiants qui étudient les cours, et la variable de classe est le statut du cours qui a deux valeurs - Retiré ou Actuel.
- Âge
- Ethnicité
- Le genre
- Cours
... - Statut du cours
Dans le jeu de données, il y a beaucoup plus d'instances qui sont actuelles que retirées. Les instances retirées ne représentent que 2% du nombre total d'instances.
Je veux être capable de construire un modèle capable de prédire la probabilité qu'une personne se désiste à l'avenir. Cependant, lors du test du modèle avec les données d'entraînement, la précision du modèle est terrible.
J'ai eu des problèmes similaires avec les arbres de décision où les données sont dominées par une ou deux classes.
Quelle approche puis-je utiliser pour résoudre ce problème et créer un classificateur plus précis?
Réponses:
C'est un problème intéressant et très fréquent en matière de classification - pas seulement dans les arbres de décision, mais dans pratiquement tous les algorithmes de classification.
Comme vous l'avez constaté de manière empirique, un ensemble de formations comprenant un nombre différent de représentants de l'une ou l'autre classe peut aboutir à un classificateur biaisé en faveur de la classe majoritaire. Appliqué à un ensemble de tests qui présente un déséquilibre similaire, ce classifieur génère une estimation de précision optimiste. Dans un cas extrême, le classificateur pourrait affecter chaque cas de test unique à la classe majoritaire, obtenant ainsi une précision égale à la proportion de cas de test appartenant à la classe majoritaire. C'est un phénomène bien connu en classification binaire (et il s'étend naturellement aux paramètres multi-classes).
Il s'agit d'un problème important, car un jeu de données déséquilibré peut conduire à des estimations de performances gonflées. Cela peut conduire à de fausses conclusions sur la signification avec laquelle l'algorithme a fonctionné mieux que le hasard.
La littérature sur l’apprentissage automatique sur ce sujet a essentiellement développé trois stratégies de solution.
Vous pouvez rétablir l’équilibre sur le jeu d’entraînement en sous - échantillonnant la grande classe ou en sur- échantillonnant la petite classe, afin d’éviter tout biais de formation.
Vous pouvez également modifier les coûts de la classification erronée, comme indiqué dans une réponse précédente, afin d'éviter tout biais.
Je recommanderais d’examiner au moins deux des approches ci-dessus conjointement. Par exemple, vous pouvez suréchantillonner votre classe minoritaire pour empêcher votre classificateur d’acquérir un biais en faveur de la classe majoritaire. Ensuite, lors de l’évaluation des performances de votre classificateur, vous pouvez remplacer la précision par la précision équilibrée. Les deux approches sont complémentaires. Lorsqu'ils sont appliqués ensemble, ils devraient vous aider à prévenir votre problème initial et à éviter de fausses conclusions.
Je serais heureux de publier quelques références supplémentaires à la littérature si vous souhaitez poursuivre sur ce sujet.
la source
Les quatre idées suivantes peuvent vous aider à résoudre ce problème.
Utilisez le paramètre 'prior' dans les arbres de décision pour informer l'algorithme de la fréquence antérieure des classes de l'ensemble de données, c'est-à-dire s'il y a 1 000 positifs dans un ensemble de 1 000 000 de données
prior = c(0.001, 0.999)
(en R).Utilisez l'argument 'pondération' dans la fonction de classification que vous utilisez pour pénaliser sévèrement l'algorithme en cas de classification erronée des rares cas positifs.
Utilisez l'argument 'coût' dans certains algorithmes de classification - par exemple,
rpart
dans R - pour définir les coûts relatifs des erreurs de classification de vrais positifs et de vrais négatifs. Naturellement, vous devriez définir un coût élevé pour la classification erronée de la classe rare.Je ne suis pas en faveur du suréchantillonnage, car il introduit des observations dépendantes dans l'ensemble de données, ce qui va à l'encontre des hypothèses d'indépendance formulées à la fois dans les statistiques et dans l'apprentissage automatique.
la source
J'ai donné une réponse dans le sujet récent :
Non seulement donne cette approche plus stable, mais les modèles sont généralement meilleurs, en ce qui concerne les mesures d'élévation.
la source
Ajout de la réponse de @Kay à la première stratégie de solution: le suréchantillonnage minoritaire synthétique ( SMOTE ) fait généralement mieux que le sous-échantillonnage ou le sur-échantillonnage de mon expérience, car je pense que cela crée en quelque sorte un compromis entre les deux. Il crée des échantillons synthétiques de la classe minoritaire à l'aide des points de données tracés sur l'espace de prédicteurs multivariés et prend plus ou moins les points médians entre les points adjacents de cet espace pour créer de nouveaux points synthétiques et par conséquent équilibrer les deux tailles de classe. (pas sûr des points médians, détails de l'algorithme ici
la source