Dans une question récente et bien reçue, Tim demande quand les données non équilibrées sont-elles vraiment un problème dans le Machine Learning ? La prémisse de la question est qu'il y a beaucoup de littérature d'apprentissage automatique discutant de l'équilibre des classes et du problème des classes déséquilibrées . L'idée est que les ensembles de données avec un déséquilibre entre la classe positive et négative causent des problèmes pour certains algorithmes de classification d'apprentissage automatique (j'inclus ici des modèles probabilistes), et des méthodes doivent être recherchées pour "équilibrer" l'ensemble de données, en restaurant le parfait 50/50 répartie entre les classes positives et négatives.
Le sens général des réponses votées est que "ce n'est pas le cas, du moins si vous êtes réfléchi dans votre modélisation". M. Henry L., dans un commentaire positif à une réponse acceptée, déclare
[...] il n'y a pas de problème de bas niveau avec l'utilisation de données asymétriques. D'après mon expérience, le conseil «d'éviter les données déséquilibrées» est soit spécifique à l'algorithme, soit hérité de la sagesse. Je suis d'accord avec AdamO qu'en général, les données déséquilibrées ne posent aucun problème conceptuel à un modèle bien spécifié.
AdamO soutient que le "problème" avec l'équilibre des classes est vraiment un problème de rareté des classes
Par conséquent, au moins en régression (mais je soupçonne en toutes circonstances), le seul problème avec les données déséquilibrées est que vous avez effectivement un petit échantillon. Si une méthode convient au nombre de personnes dans la classe la plus rare, il ne devrait pas y avoir de problème si leur proportion de membres est déséquilibrée.
Si tel est le vrai problème, il laisse une question ouverte: quel est le but de toutes les méthodes de rééchantillonnage destinées à équilibrer l'ensemble de données: suréchantillonnage, sous-échantillonnage, SMOTE, etc.? De toute évidence, ils ne résolvent pas le problème d'avoir implicitement un petit échantillon, vous ne pouvez pas créer des informations à partir de rien!
Réponses:
Certaines techniques d'échantillonnage consistent à ajuster le biais (si le taux de population est connu et différent), mais je suis d'accord avec l'idée que la classe déséquilibrée n'est pas le problème en soi. Une des principales raisons réside dans les performances de traitement. Si notre classe cible, par exemple, est un cas extrêmement rare à 1: 100000, notre ensemble de données de modélisation serait massif et le calcul serait difficile. L'échantillonnage, quelle que soit la stratégie, jette toujours des données afin de réduire la taille totale de l'ensemble de données. Je suppose que la différence entre toutes les différentes stratégies d'échantillonnage est simplement l'intelligence autour de laquelle nous jetons les données sans sacrifier une perte de possibilités prédictives.
la source
Le problème que ces méthodes tentent de résoudre est d'augmenter l'impact de la classe minoritaire sur la fonction de coût. En effet, les algos essaient de bien adapter l'ensemble de données, puis de s'adapter à la majorité. Une autre approche consisterait à utiliser des pondérations de classe, et cet aporoach donne dans la plupart des cas de meilleurs résultats, car il n'y a pas de perte d'information par sous-échantillonnage ou de perte de performance et d'introduction de bruit par suréchantillonnage.
la source
Je vais vous donner un exemple plus extrême. Considérez le cas où vous avez un ensemble de données avec 99 points de données étiquetés comme positifs et un seul étiqueté comme négatifs. Pendant l'entraînement, votre modèle se rendra compte que s'il classe tout comme positif, il finira par s'en tirer. Une façon de résoudre ce problème est de suréchantillonner la classe sous-représentée et une autre est de sous-échantillonner la classe surreprésentée. Par exemple, dans un ensemble de données de 70 étiquettes positives et 30 étiquettes négatives, je pourrais échantillonner les étiquettes négatives avec remplacement et les étiquettes positives sans remplacement, ce qui entraînera mon modèle à rencontrer plus d'étiquettes négatives pendant la formation. De cette façon, si mon modèle essaie de tout classer comme positif, il encourra une perte plus importante qu'il ne l'aurait fait autrement.
Une autre approche qui ne concerne pas l'échantillonnage est d'ajuster la fonction de coût pour donner des poids plus élevés aux points de données avec l'étiquette minoritaire. Par exemple, si vous utilisez la perte NLL dans un ensemble de données où les 1 sont surreprésentés par rapport aux 0 parmi les étiquettes, vous pouvez ajuster votre fonction de perte pour qu'elle soit:
oùβ> α . L'ampleur de la différence β- α dépend de l'étendue de la surreprésentation / sous-représentation.
la source
Je ne suis pas d'accord avec l'hypothèse selon laquelle les données déséquilibrées ne sont pas un problème dans l'apprentissage automatique. Peut-être moins en régression, mais c'est certainement en classification.
Les données déséquilibrées sont pertinentes dans les applications d'apprentissage automatique en raison de la baisse des performances des algorithmes (la recherche à laquelle je pense concerne spécifiquement les classificateurs) dans le cadre du déséquilibre de classe.
Prenez un problème de classification binaire simple avec un ratio de 25: 1 d'exemples de formation de classe A 'contre' classe B '. La recherche a montré que la précision relative à la classification de la classe B est un succès simplement en raison de la diminution du ratio des données d'entraînement. Il est logique, car moins vous avez d'exemples de formation, plus votre classificateur sera pauvre sur ces données. Comme l'a déclaré l'un des commentateurs, vous ne pouvez pas faire quelque chose à partir de rien. D'après les articles que j'ai vus, dans les problèmes de classification multiclasse, il semble que vous devez atteindre un rapport de 10: 1 pour commencer à avoir un impact significatif sur la précision de la classe minoritaire. Peut-être que les gens qui lisent une littérature différente de celle que j'ai vue ont des opinions différentes.
Les solutions proposées sont donc les suivantes: suréchantillonnage de la classe minoritaire, sous-échantillonnage de la classe majoritaire ou utilisation de SMOTE sur la classe minoritaire. Oui, vous ne pouvez pas vraiment créer de données à partir de nulle part (le type SMOTE le fait, mais pas exactement) à moins que vous n'entrez dans la création de données synthétiques pour la classe minoritaire (pas de méthode simple). D'autres techniques comme MixUp et similaires entrent potentiellement dans ce concept, mais je pense qu'elles sont plus des régularisateurs que des solutions de déséquilibre de classe. Dans les articles que j'ai lus, Suréchantillonnage> SMOTE> Sous-échantillonnage.
Quelle que soit votre technique, vous modifiez la relation entre les classes majoritaires et minoritaires qui peut affecter l'incidence. En d'autres termes, si vous créez un classificateur pour détecter une maladie cérébrale super rare X qui a une incidence de 1 sur 100 000 et que votre classificateur est à 1: 1, vous pourriez être plus sensible et moins spécifique avec un plus grand nombre de faux positifs . S'il est important que vous détectiez ces cas et l'arbitre plus tard, vous êtes d'accord. Sinon, vous avez perdu beaucoup de temps et d'argent d'autres personnes. Ce problème devra éventuellement être résolu.
Donc pour répondre à la question:
tl / dr: Des opérations d'équilibrage de classe comme le sur / sous-échantillonnage et SMOTE (et les données synthétiques) existent pour améliorer les performances de l'algorithme d'apprentissage automatique (classificateur) en résolvant les performances inhérentes atteintes dans un algorithme causées par le déséquilibre lui-même .
la source