Importance des caractéristiques avec des caractéristiques catégorielles à cardinalité élevée pour la régression (variable dépendante numérique)

12

J'essayais d'utiliser les importances de fonctionnalités de Random Forests pour effectuer une sélection de fonctionnalités empiriques pour un problème de régression où toutes les fonctionnalités sont catégoriques et beaucoup d'entre elles ont de nombreux niveaux (de l'ordre de 100-1000). Étant donné que l'encodage à chaud crée une variable fictive pour chaque niveau, l'importance des fonctionnalités est pour chaque niveau et non pour chaque fonctionnalité (colonne). Quelle est la bonne façon d'agréger ces importances de fonctionnalités?

J'ai pensé à additionner ou à obtenir l'importance moyenne pour tous les niveaux d'une fonctionnalité (probablement la première sera orientée vers les fonctionnalités avec plus de niveaux). Y a-t-il des références sur cette question?

Que peut-on faire d'autre pour diminuer le nombre de fonctionnalités? Je connais le lasso de groupe, je n'ai rien trouvé de facile à utiliser pour scikit-learn.

user90772
la source
Quelqu'un peut-il répondre à la question de savoir si additionner l'importance variable de chaque niveau de la variable catégorielle est logique?
see24
@ see24 Non, vous ne pouvez pas simplement les additionner: stats.stackexchange.com/questions/314567/…
Dan

Réponses:

5

Cela dépend de la façon dont vous les codez à chaud. De nombreuses solutions automatisées pour cela nommeront tous les booléens convertis avec un modèle de sorte qu'une variable catégorielle appelée "lettre" avec des valeurs AZ finirait comme:

lettre_A, lettre_B, lettre_C, lettre_D, ....

Si après avoir déterminé l'importance des fonctionnalités, vous disposez d'un tableau de fonctionnalités et du poids / importance associé, j'analyserais le tableau et résumerais peut-être les poids d'importance des fonctionnalités pour tout ce qui commence par "lettre%".

CalZ
la source
3
La somme ne donne-t-elle pas un avantage à ces fonctionnalités avec plus de niveaux?
user90772
Hmm, bon point. Peut-être le résumer puis diviser par le nombre de niveaux / variables codées à chaud pour obtenir une importance "moyenne".
CalZ
2
J'y ai réfléchi un peu plus et cela dépend de la façon dont l'importance est notée. Dans certains cas, la valeur de chaque fonctionnalité est un poids relatif où l'ensemble total s'élève à 1. Dans ce cas, je pense qu'il serait logique de résumer les fonctionnalités uniques. Si le score de la caractéristique ressemblait davantage à un coefficient de régression et n'était pas pondéré par rapport à l'effet net, alors la moyenne serait probablement meilleure.
CalZ
Merci pour la réponse. Étant donné que je suis assez nouveau dans le domaine, je pensais que c'était une chose standard pour les gens de la science des données, mais ce n'est pas ce que je devrais faire pour évaluer l'importance des fonctionnalités d'une colonne ou ce poste n'a pas obtenu suffisamment de vues. En tout cas, merci!
user90772
1
Beaucoup de gens préconisent de regarder les internes du modèle comme une boîte noire et d'évaluer la performance à la place. Dans certains cas (par exemple les réseaux de neurones), c'est parce que vous ne pouvez pas vraiment l'examiner en profondeur. Pour certains où vous pouvez facilement obtenir une vue des fonctionnalités importantes (par exemple la régression linéaire), vous pouvez facilement être trompé (voir: stats.stackexchange.com/questions/105114/… ). Je pense que c'est pourquoi les gens hésitent parfois à regarder l'importance des fonctionnalités individuelles.
CalZ