Suppression d'une des colonnes lors de l'utilisation d'un codage à chaud

22

Ma compréhension est que dans l'apprentissage automatique, cela peut être un problème si votre ensemble de données a des fonctionnalités hautement corrélées, car elles codent efficacement les mêmes informations.

Récemment, quelqu'un a souligné que lorsque vous effectuez un codage à chaud sur une variable catégorielle, vous vous retrouvez avec des fonctionnalités corrélées, vous devez donc en supprimer une comme "référence".

Par exemple, encoder le genre en deux variables is_maleet is_femaleproduit deux caractéristiques qui sont parfaitement corrélées négativement, alors ils ont suggéré d'utiliser simplement l'une d'entre elles, de définir efficacement la ligne de base pour dire masculin, puis de voir si la colonne is_female est importante dans l'algorithme prédictif .

Cela avait du sens pour moi, mais je n'ai rien trouvé en ligne pour suggérer que cela pourrait être le cas, est-ce que c'est faux ou est-ce que je manque quelque chose?

Duplicata possible (sans réponse): la colinéarité des fonctionnalités codées à chaud importe-t-elle pour SVM et LogReg?

dasboth
la source
8
you end up with correlated features, so you should drop one of them as a "reference"Les variables fictives ou variables indicatrices (ce sont les deux noms utilisés en statistique, synonyme de "codage à chaud" dans l'apprentissage automatique) sont de toute façon corrélées de manière paire, qu'il s'agisse de variables k ou k-1. Ainsi, le meilleur mot est "redondant statistiquement / informationnellement" au lieu de "corrélé".
ttnphns
L'ensemble de tous les k nuls est l'ensemble multicollinéaire car si vous connaissez les valeurs des k-1 nuls dans les données, vous connaissez automatiquement les valeurs de ce dernier nuls. Certaines méthodes ou algorithmes d'analyse de données nécessitent que vous supprimiez l'un des k. D'autres sont capables de faire face à tous les k.
ttnphns
@ttnphns: merci, cela a du sens. Le fait de conserver toutes les valeurs de k en fait-il théoriquement des caractéristiques plus faibles qui pourraient / devraient être éliminées avec une réduction de dimensionnalité? L'un des arguments pour utiliser quelque chose comme PCA est souvent de supprimer les fonctionnalités corrélées / redondantes, je me demande si le fait de conserver toutes les k variables tombe dans cette catégorie.
dasboth
Does keeping all k values theoretically make them weaker features. Non (même si je ne suis pas sûr à 100% de ce que vous entendez par "plus faible"). using something like PCANotez, juste au cas où, l'ACP sur un ensemble de variables muettes représentant une même variable catégorielle a peu de point pratique parce que les corrélations à l'intérieur de l'ensemble de variables muettes reflètent simplement les relations entre les fréquences de catégorie (donc si toutes les fréquences sont égales toutes les corrélations sont égales à 1 / (k-1)).
ttnphns
Ce que je veux dire, c'est que lorsque vous utilisez votre modèle pour évaluer l'importance des caractéristiques (par exemple avec une forêt aléatoire), est-ce qu'il sous-estimera l'importance de cette variable si vous incluez toutes les valeurs k? Comme dans, obtenez-vous une estimation «plus vraie» de l'importance du sexe si vous n'utilisez qu'une is_malevariable plutôt que les deux options? Peut-être que cela n'a pas de sens dans ce contexte, et cela pourrait ne poser problème que si deux variables différentes codent réellement les mêmes informations (par exemple, la hauteur en pouces et la hauteur en cm).
dasboth

Réponses:

23

lmglm

Avec d'autres modèles, utilisez les mêmes principes. Si les prédictions obtenues dépendent des colonnes que vous omettez, ne le faites pas. Sinon ça va.

Jusqu'à présent, cette réponse ne mentionne que des modèles linéaires (et certains modèles légèrement non linéaires). Mais qu'en est-il des modèles très non linéaires, comme les arbres et les forêts aléatoires? Les idées sur le codage catégoriel, comme le one-hot, proviennent principalement de modèles linéaires et d'extensions. Il y a peu de raisons de penser que les idées dérivées de ce contexte devraient s'appliquer sans modification aux arbres et aux forêts! pour quelques idées, voir Random Forest Regression avec des données clairsemées en Python .

β,β2,β3β1=0, tandis que les deux autres paramètres changent de signification enβ2-β1,β3-β1. Ces deux différences seront donc réduites. Si vous omettez une autre colonne, les autres contrastes des paramètres d'origine seront réduits. Cela modifie donc la fonction critère en cours d'optimisation, et il n'y a aucune raison de s'attendre à des solutions équivalentes! Si ce n'est pas assez clair, je peux ajouter un exemple simulé (mais pas aujourd'hui).

kjetil b halvorsen
la source
Je peux convenir que le choix de la variable de référence affectera le résultat de la régression régularisée, mais je ne suis pas très sûr s'il est préférable de laisser toutes les variables telles quelles que d'en supprimer une. Avez-vous une raison à cela?
Kota Mori
Eh bien, seulement deux alternatives ... Garder tous les niveaux gardent l'invariance et il n'y a pas d'arbitraire. Si vous avez d'autres raisons de vouloir réduire le nombre de niveaux, comme un trop grand nombre d'entre eux, vous devriez nous en parler
kjetil b halvorsen