Pour un problème de classification si la variable de classe a une distribution inégale, quelle technique utiliser?


10

par exemple. si j'ai une cote de crédit variable de classe avec deux classes bonnes et mauvaises, où # (bon) = 700 et # (mauvais) = 300. Je ne veux pas raccourcir mes données. quelle technique dois-je utiliser? J'utilisais SVM mais cela donne des résultats aussi mauvais que bons dans les prévisions.


Cette asymétrie n'est pas si mauvaise; êtes-vous sûr de ne pas avoir d'erreur ailleurs? Pouvez-vous également donner plus de détails sur les données? Il n'y a pas de solution générale à cela.

mon ensemble de données a 17 prédicteurs (3 continus et 14 catégoriques), évidemment 1 variable de classe, et un total de 1000 obsrvations. La fréquence dist. pour la classe var. avec train et test est train (mauvais) = 197, test (mauvais) = 103, trian (bon) = 446, test (bon) = 254
asad.taj

Réponses:


6

La taille des échantillons de votre classe ne semble pas si déséquilibrée puisque vous avez 30% d'observations dans votre classe minoritaire. La régression logistique devrait être performante dans votre cas. Selon le nombre de prédicteurs qui entrent dans votre modèle, vous pouvez envisager une sorte de pénalisation pour l'estimation des paramètres, comme l'arête (L2) ou le lasso (L1). Pour un aperçu des problèmes avec une classe très déséquilibrée, voir Cramer (1999), The Statistician, 48: 85-94 ( PDF ).

Je ne connais pas les techniques d'évaluation du crédit, mais j'ai trouvé des articles qui suggèrent que vous pouvez utiliser SVM avec des classes pondérées, par exemple, prendre en charge les machines à vecteurs pour l'évaluation du crédit: extension aux cas non standard . Comme alternative, vous pouvez envisager des méthodes de renforcement avec CART ou Random Forests (dans ce dernier cas, il est possible d'adapter la stratégie d'échantillonnage de sorte que chaque classe soit représentée lors de la construction des arbres de classification). L'article de Novak et LaDue traite des avantages et des inconvénients du partitionnement GLM vs Recursive . J'ai également trouvé cet article, la construction Scorecard avec des tailles de classe déséquilibrées par Hand et Vinciotti.


Le lien pour Cramer (1999) a changé pour papers.tinbergen.nl/98085.pdf
germcd

10

Une approche populaire pour résoudre les problèmes de déséquilibre de classe consiste à biaiser le classificateur afin qu'il accorde plus d'attention aux cas positifs. Cela peut être fait, par exemple, en augmentant la pénalité associée à une mauvaise classification de la classe positive par rapport à la classe négative. Une autre approche consiste à prétraiter les données en suréchantillonnant la classe majoritaire ou en sous-échantillonnant la classe minoritaire afin de créer un ensemble de données équilibré.

Cependant, dans votre cas, le déséquilibre des classes ne semble pas être un problème. C'est peut-être une question de réglage des paramètres, car trouver les paramètres optimaux pour un classificateur SVM peut être un processus assez fastidieux. Il y a par exemple deux paramètres dans un noyau RBF: et . On ne sait pas à l'avance quels et sont les meilleurs pour un problème donné; par conséquent, une sorte de sélection de modèle (recherche de paramètres) doit être effectuée.γ C γCγCγ

Dans la phase de prétraitement des données, n'oubliez pas que SVM nécessite que chaque instance de données soit représentée comme un vecteur de nombres réels. Par conséquent, s'il existe des attributs catégoriels, il est recommandé de les convertir en données numériques, en utilisant m nombres pour représenter un attribut de catégorie m (ou en le remplaçant par m nouvelles variables binaires).

De plus, la mise à l'échelle des variables avant d'appliquer SVM est cruciale, afin d'éviter que les attributs dans les plages numériques plus grandes ne dominent ceux dans les plages numériques plus petites.

Consultez cet article .

Si vous travaillez dans R, consultez la fonction tune (package e1071) pour régler les hyperparamètres à l'aide d'une recherche de grille sur les plages de paramètres fournies. Ensuite, en utilisant plot.tune , vous pouvez voir visuellement quel ensemble de valeurs donne le taux d'erreur le plus faible.

Il existe un raccourci autour de la recherche de paramètres fastidieuse. Il existe un package R appelé "svmpath" qui calcule le chemin de régularisation complet pour un classificateur SVM à 2 classes en une seule fois. Voici un lien vers l'article qui décrit ce qu'il fait.

PS Vous pouvez également trouver cet article intéressant: Obtenir des estimations de probabilité calibrées


2
+1; ksvm de kernlab semble toujours être l'implémentation R SVM préférée. Par exemple, il met à l'échelle les variables par lui-même et a une belle procédure heuristique (= très bien) pour choisir un bon pour RBF. γ

1

Je conseillerais d'utiliser une valeur différente du paramètre de régularisation C pour des exemples de la classe positive et des exemples de la classe négative (de nombreux packages SVM le supportent, et en tout cas il est facilement implémenté). Utilisez ensuite par exemple la validation croisée pour trouver les bonnes valeurs des deux paramètres de régularisation.

On peut montrer qu'il s'agit d'un rééchantillonnage asypmtotiquement équivalent dans un rapport déterminé par C + et C- (il n'y a donc aucun avantage à rééchantillonner plutôt qu'à repondérer, ils aboutissent à la même chose à la fin et aux pondérations peut être continue, plutôt que discrète, ce qui donne un contrôle plus fin).

Ne choisissez pas simplement C + et C- pour donner une pondération 50-50 aux modèles positifs et négatifs, car la force de l'effet du problème des "classes de déséquilibres" variera d'un ensemble de données à l'autre, donc la force de l'optimisation re -la pondération ne peut être déterminée a priori.

N'oubliez pas non plus que les coûts faussement positifs et faux négatifs peuvent être différents et que le problème peut se résoudre s'il est inclus dans la détermination de C + et C-.

Il convient également de garder à l'esprit que, pour certains problèmes, la règle de décision optimale de Bayes affectera tous les modèles à une seule classe et ignorera l'autre, donc ce n'est pas nécessairement une mauvaise chose - cela peut simplement signifier que la densité des modèles de une classe est partout en dessous de la densité des motifs de l'autre classe.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.