Quelles techniques sont disponibles pour regrouper (ou regrouper) plusieurs catégories en un petit nombre, dans le but de les utiliser comme entrée (prédicteur) dans un modèle statistique?
Considérons une variable comme étudiant majeur (discipline choisie par un étudiant de premier cycle). Il est non ordonné et catégorique, mais il peut potentiellement avoir des dizaines de niveaux distincts. Supposons que je souhaite utiliser major comme prédicteur dans un modèle de régression.
L'utilisation de ces niveaux tels quels pour la modélisation soulève de nombreux problèmes, car ils sont nombreux. On utiliserait beaucoup de précision statistique pour les utiliser, et les résultats sont difficiles à interpréter. Nous sommes rarement intéressés par des majors spécifiques - nous sommes beaucoup plus susceptibles de nous intéresser par de grandes catégories (sous-groupes) de majors. Mais il n'est pas toujours clair de savoir comment répartir les niveaux en de telles catégories de niveau supérieur, ni même le nombre de catégories de niveau supérieur à utiliser.
Pour des données typiques, je serais heureux d’utiliser une analyse factorielle, une factorisation matricielle ou une technique de modélisation discrète. Mais les majors sont des catégories qui s’excluent mutuellement, j’hésite donc à exploiter leur covariance pour quoi que ce soit.
De plus, je me fiche des catégories principales. Je tiens à produire des catégories de niveau supérieur cohérentes par rapport au résultat de ma régression . Dans le cas des résultats binaires, cela me suggère quelque chose comme une analyse discriminante linéaire (ADL) pour générer des catégories de niveau supérieur qui maximisent les performances discriminantes. Mais la LDA est une technique limitée et cela me fait penser à du dragage de données sales. De plus, toute solution continue sera difficile à interpréter.
Pendant ce temps, quelque chose basé sur les covariances, comme l'analyse des correspondances multiples (MCA), me semble suspect dans ce cas en raison de la dépendance inhérente à des variables nominales mutuellement exclusives - elles sont mieux adaptées à l'étude de variables catégorielles multiples plutôt qu'à de multiples catégories de la variable. même variable.
edit : pour être clair, il s’agit de réduire les catégories (et non de les sélectionner), et les catégories sont des prédicteurs ou des variables indépendantes. Avec le recul, ce problème semble être un moment opportun pour "tout régulariser et laisser Dieu les régler". Heureux de voir que cette question intéresse beaucoup de gens!
la source
Réponses:
Si j'ai bien compris, vous imaginez un modèle linéaire dans lequel l'un des prédicteurs est catégorique (par exemple, la majeure au collège); et vous vous attendez à ce que pour certains sous-groupes de ses niveaux (sous-groupes de catégories), les coefficients soient exactement les mêmes. Donc, peut-être que les coefficients de régression pour les mathématiques et la physique sont les mêmes, mais différents de ceux de la chimie et de la biologie.
Dans le cas le plus simple, vous auriez un modèle linéaire "à une voie" avec un seul prédicteur catégorique: où code le niveau de la variable catégorique Catégorie). Mais vous pouvez préférer une solution qui réduit certains niveaux (catégories) ensemble, par exemple,
Cela suggère que l'on peut essayer d'utiliser une pénalité de régularisation qui pénaliserait les solutions avec des alphas différents. Un terme de pénalité qui me vient immédiatement à l’esprit estCela ressemble au lasso et devrait imposer une faible densité des différences , ce qui est exactement ce que vous voulez: vous voulez que beaucoup d'entre elles soient nulles. Le paramètre de régularisation doit être sélectionné avec une validation croisée.
Je n'ai jamais eu affaire à de tels modèles et ce qui précède est la première chose qui m'est venue à l'esprit. Ensuite, j'ai décidé de voir s'il y avait quelque chose comme ça implémenté. J'ai fait quelques recherches sur Google et j'ai vite compris qu'il s'agissait d'une fusion de catégories. la recherche de
lasso fusion categorical
vous donnera beaucoup de références à lire. Voici quelques exemples que j'ai brièvement examinés:Gerhard Tutz, Régression des données catégoriques, voir p. 175-175 dans Google Livres . Tutz mentionne les quatre articles suivants:
Land et Friedman, 1997, Fusion variable: une nouvelle méthode de régression de signal adaptative
Bondell et Reich, 2009, Sélection simultanée de facteurs et niveaux de fusion dans ANOVA
Gertheiss et Tutz, 2010, Modélisation clairsemée des variables explicatives catégorielles
Tibshirani et al. 2005, la clarté et la finesse via le lasso fondu sont assez pertinentes même si elles ne sont pas exactement les mêmes (il s’agit de variables ordinales)
Gertheiss et Tutz 2010, publiés dans les Annals of Applied Statistics, semblent être un document récent et très lisible contenant d'autres références. Voici son résumé:
J'aime leurs chemins de solutions, semblables à ceux de Lasso, qui montrent comment les niveaux de deux variables catégorielles sont fusionnés lorsque la force de régularisation augmente:
la source
J'ai lutté contre ce sur un projet que je travaille sur, et à ce moment que je l' ai décidé il n'y a vraiment pas une bonne façon de catégories de fusibles et je suis en train d' une hiérarchie / effets mixtes modèle où mon L'équivalent de votre majeur est un effet aléatoire.
De plus, dans des situations comme celle-ci, il semble y avoir deux décisions de fusion à prendre: 1) comment fusionner les catégories que vous avez lorsque vous vous adaptez au modèle, et 2) quelle catégorie de fusionnée devient "autre", où vous ajouterez par défaut de nouvelles majors que quelqu'un rêve après que vous correspondiez à votre modèle. (Un effet aléatoire peut gérer ce second cas automatiquement.)
Lorsque la fusion implique un jugement quelconque (par opposition à des procédures totalement automatisées), je suis sceptique quant à la catégorie "autre", qui est souvent une panoplie de catégories contenant peu d'éléments, plutôt qu'un groupement fondé sur des principes.
Un effet aléatoire gère un grand nombre de niveaux, regroupe dynamiquement ("tire sa force") différents niveaux, peut prédire des niveaux jamais vus auparavant, etc. Un inconvénient peut être que la distribution des niveaux est presque toujours supposée normale.
la source
Une façon de gérer cette situation consiste à recoder la variable catégorielle en une variable continue, en utilisant ce que l’on appelle le "codage cible" (ou "codage à impact") [1]. Soit une variable d’entrée avec des niveaux , et soit une variable de sortie / cible / réponse. Remplacez par , oùZ z1,...,zK Y Z Impact(Z)
pour un valeur continue . Pour la valeur binaire , utilisez au lieu de .Y Y logit∘E E
Il existe une implémentation Python dans la bibliothèque category_encoders [2].
Une variante appelée "impact coding" a été implémentée dans le paquet R Vtreat [3] [4]. Le paquetage (et le code d’impact lui-même) est décrit dans un article de ces auteurs de 2016 [5] et dans plusieurs articles de blog [6]. Notez que l'implémentation R actuelle ne gère pas les réponses multinomiales (catégorielles avec plus de 2 catégories) ni multivariées (à valeurs vectorielles).
la source
Si vous avez une variable indépendante auxiliaire logique à utiliser comme point d'ancrage pour le prédicteur catégorique, envisagez d'utiliser l'algorithme de notation optimal de Fisher, qui est lié à son analyse discriminante linéaire. Supposons que vous souhaitiez mapper la majeure du collège en une seule métrique continue et supposons qu'une ancre appropriée soit un score de test quantitatif pré-admission au test SAT. Calculez le score quantitatif moyen pour chaque majeure et remplacez la majeure par cette moyenne. Vous pouvez facilement étendre cela à plusieurs ancres, en créant plus d'un degré de liberté pour résumer majeur.
Notez que, contrairement à certaines des suggestions précédentes, la notation optimale représente une approche d’apprentissage non supervisée, de sorte que les degrés de liberté (nombre de paramètres estimés par rapport à Y) sont peu nombreux et bien définis. Ils permettent une inférence statistique correcte (compatibilité) intervalles et valeurs p).
J'aime beaucoup la suggestion de pénalisation de https://stats.stackexchange.com/users/28666/amoeba @amoeba.
la source
Le document " Un schéma de prétraitement pour les attributs catégoriels de haute cardinalité dans les problèmes de classification et de prédiction " exploite la structure hiérarchique des attributs de catégorie dans un schéma "bayésien" empirique imbriqué à chaque pool / niveau pour mapper la variable catégorielle en une probabilité de classe postérieure, qui peut être utilisé directement ou comme entrée dans d'autres modèles.
la source
Il y a plusieurs questions ici, et certaines d'entre elles sont posées et ont reçu une réponse plus tôt. Si le problème prend beaucoup de temps: les méthodes sont multiples, voir Régression à grande échelle avec matrice de fonctions éparses et document de Maechler et Bates .
Mais il se peut que le problème vienne de la modélisation. Je ne suis pas sûr que les méthodes habituelles de traitement des variables prédictives catégorielles fournissent des indications suffisantes pour disposer de variables catégorielles à très nombreux niveaux. Pour ce tag, consultez ce site
[many-categories]
. Il y a certainement beaucoup de façons d'essayer, on pourrait (si c'est une bonne idée pour votre exemple, je ne peux pas savoir, vous ne nous avez pas dit votre application spécifique) une sorte de variable hiérarchique catégorique, c'est-à-dire inspirée par le système utilisé dans la classification biologique, voir https://en.wikipedia.org/wiki/Taxonomy_(biology). Là-bas, un individu (plante ou animal) est classé d'abord dans le domaine, puis dans le royaume, le phylum, la classe, l'ordre, la famille, le genre et enfin l'espèce. Ainsi, pour chaque niveau de la classification, vous pouvez créer une variable factorielle. Si vos niveaux, par exemple, sont des produits vendus dans un supermarché, vous pouvez créer une classification hiérarchique commençant par [produit alimentaire, ustensiles de cuisine, autre], puis un produit alimentaire classé dans [viande, poisson, légumes, céréales, ...] et bientôt. Juste une possibilité, qui donne une hiérarchie antérieure, pas spécifiquement liée au résultat.Mais vous avez dit:
Ensuite, vous pouvez essayer le lasso fusionné , voir d’autres réponses dans ce fil, ce qui pourrait être perçu comme un moyen de réduire les niveaux en groupes plus importants, entièrement basés sur les données, et non pas une organisation préalable des niveaux comme le suggère ma proposition de hiérarchie. organisation des niveaux.
la source