Suréchantillonnage avec des variables catégorielles

9

Je voudrais effectuer une combinaison de suréchantillonnage et de sous-échantillonnage afin d'équilibrer mon ensemble de données avec environ 4000 clients divisés en deux groupes, où l'un des groupes a une proportion d'environ 15%.

J'ai examiné SMOTE ( http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE ) et ROSE ( http://cran.r-project.org/web/packages/ROSE/ ROSE.pdf ), mais les deux créent de nouveaux échantillons synthétiques en utilisant les observations existantes et par exemple kNN.

Cependant, comme bon nombre des attributs associés aux clients sont catégoriques, je ne pense pas que ce soit la bonne façon de procéder. Par exemple, beaucoup de mes variables telles que Region_A et Region_B s'excluent mutuellement, mais en utilisant kNN, les nouvelles observations peuvent être placées à la fois dans Region_A et Region_B. Êtes-vous d'accord que c'est un problème?

Dans ce cas - comment effectuer un suréchantillonnage dans R en dupliquant simplement les observations existantes? Ou est-ce la mauvaise façon de procéder?

pir
la source
Pourquoi avez-vous besoin d'un sous-échantillonnage si vous n'avez que 4000 observations?
kjetil b halvorsen
Je veux équilibrer mon ensemble de données pour avoir une part à peu près égale de classes. Si j'utilise mes données telles qu'elles sont maintenant, les modèles prédiront simplement toutes les observations comme la classe majoritaire.
pir

Réponses:

8

ROSE et SMOTE sont conçus pour gérer des variables catégorielles, donc, à moins que vos variables catégorielles ne soient exprimées dans un format binaire, vous ne devriez normalement pas avoir à vous soucier que des observations synthétiques se voient attribuer des caractéristiques catégorielles mutuellement exclusives. S'ils le sont, vous pouvez toujours les restructurer en tant que facteurs.

Dans votre exemple à deux régions, vous créeriez une nouvelle variable de région avec deux niveaux, "A" et "B". Vos enregistrements prendraient les valeurs appropriées en référençant vos colonnes d'origine.

Maintenant, si vous êtes dans une situation où vos nouvelles observations synthétiques pourraient générer des catégories conflictuelles car elles sont réparties sur plusieurs variables, autrement sans rapport (par exemple, synthétiqueObservation.isPig = 1 et synthétiqueObservation.hasWings = 1), vous pouvez toujours effectuer des liaisons de données supplémentaires avant de faire votre estimation de modèle afin de nettoyer ces aberrations.

De plus, comme vous avez environ 600 observations d'événements dans votre ensemble de données, envisagez peut-être les avantages potentiels de l'utilisation d'observations synthétiques dérivées du sous - échantillonnage de la classe majoritaire?

habu
la source