Problèmes avec l'encodage à chaud par rapport à l'encodage factice


11

Je suis conscient du fait que les variables catégorielles avec k niveaux doivent être codées avec k-1 variables dans le codage factice (de même pour les variables catégorielles à valeurs multiples). Je me demandais combien de problème un codage à chaud (c'est-à-dire en utilisant k variables à la place) sur un codage factice pour différentes méthodes de régression, principalement la régression linéaire, la régression linéaire pénalisée (Lasso, Ridge, ElasticNet), basé sur les arbres (forêts aléatoires , amplificateurs de gradient).

Je sais que dans la régression linéaire, des problèmes de multi-colinéarité se produisent (même si dans la pratique j'ai ajusté la régression linéaire en utilisant OHE sans aucun problème).

Cependant, le codage factice doit-il être utilisé dans chacun d'eux et à quel point les résultats seraient-ils incorrects si l'on utilise un codage à chaud?

Je me concentre sur la prédiction dans les modèles de régression avec plusieurs variables catégorielles (à cardinalité élevée), donc je ne suis pas intéressé par les intervalles de confiance.


10
Je prétends qu'il est incorrect de distinguer les deux. Les variables fictives et les variables uniques sont des synonymes complets. Le premier terme est plus ancien et provient de statistiques, tandis que le second est plus jeune et provient de l'apprentissage automatique. Le troisième synonyme, plus formel, est celui des variables de contraste de type indicateur . La question de savoir s'il faut utiliser toutes les variables non redondantes k ou k-1 dans l'ensemble de ces variables élémentaires n'a rien à voir avec cette terminologie et dépend du type d'analyse et de l'algorithme ou du programme concret.
ttnphns

2
(suite) Par exemple, un logiciel de régression ne permet généralement pas de saisir tous les k en raison de la singularité, mais un logiciel de modélisation linéaire général équivalent peut le permettre car il utilise une approche pseudo-inverse.
ttnphns

1
Je suis avec @ttnphns, ce ne sont que des noms horribles. Je préfère complète codant et encodage leave-one-out .
Matthew Drury

2
Toutes mes excuses pour la terminologie, ce sont les termes standard que j'ai vus utilisés par les praticiens (et les livres orientés de façon similaire). La question de la colinéarité n'apparaît que dans les linéaires (modèles non pénalisés)? Tous les logiciels ne s'arrêtent pas pour entrer tous les k (par exemple, scikit-learn de Python, corrigez-moi si je me trompe)
user90772

@MatthewDrury Une de mes bêtes noires sont des termes / phrases en double qui se glissent dans le domaine de l'analyse statistique, comme "l'encodage à chaud" et "les tests A / B". Tout le monde devrait s'en tenir à l'ancien «codage factice» et aux «tests d'hypothèse» pour éviter toute confusion.
RobertF

Réponses:


7

kkX 2 = 1 - X 1 ( β 0 , β 1 , β 2 ) ( β 0 + β 2 ,μ=a0+a1X1+a2X2X2=1X1(β0,β1,β2)(β0+β2,β1β2,0)

La pénalisation rendra le modèle identifiable, mais le codage redondant affectera toujours les valeurs des paramètres de manière étrange, étant donné ce qui précède.

L'effet d'un codage redondant sur un arbre de décision (ou un ensemble d'arbres) sera probablement de surpondérer l'entité en question par rapport aux autres, car il est représenté avec une variable redondante supplémentaire et sera donc choisi plus souvent qu'il ne le serait autrement pour se divise.


1
Je ne pense pas qu'il y ait de raison d'inclure une interception dans un arbre ou un ensemble d'arbres. Je crois que c'est une chose particulière aux modèles de type linéaire. Donc, pour les modèles arborescents, je pense que la bonne idée n'est pas l'interception, le codage complet.
Matthew Drury

@MatthewDrury Je pense que vous avez raison sur l'interception, mais même dans ce cas, pour un arbre, le codage redondant semble d'une utilité limitée. Par exemple, si une fonctionnalité est binaire, quelle est la différence entre le fractionnement sur la première classe et le fractionnement sur la deuxième classe? Rien, autant que je sache.
Kodiologist

C'est vrai, mais je pense que garder la symétrie complète est le moyen le plus simple de garder tout ce qui est évidemment juste et interprétable.
Matthew Drury

1

Le kodiologue a eu une excellente réponse (+1). Les méthodes de codage à chaud et à codage factice sont les mêmes, en termes de matrice de conception dans le même espace, avec des bases différentes. (bien que l'encodage à chaud ait plus de colonnes)

Par conséquent, si vous vous concentrez sur la précision plutôt que sur l'interprétabilité. Deux méthodes de codage ne font aucune différence.


1
Pour être pédant, la version one-hot n'est pas une base (car elle dépend linéairement); il couvre simplement le même espace. Mais êtes-vous sûr que l'encodage ne fait aucune différence pour la précision? En particulier dans le cas d'une régression pénalisée, je pense que le modèle final sélectionné fera des prédictions différentes.
Kodiologist

@ Kodiologist merci de me corriger sur le problème de base.
Haitao Du

@ Kodiologist pourquoi la précision sera différente dans la méthode linéaire régularisée?
Haitao Du

4
En régression régularisée, vous devez toujours utiliser un encodage complet (c'est-à-dire ne pas laisser de côté, je ne peux pas garder les noms que vous avez utilisés directement, et je préfère ne pas les utiliser moi-même). C'est parce que l'interception n'est pas pénalisée, donc si vous inférez l'effet d'un niveau comme ne faisant pas partie de l'interception, il est difficile de dire que vous pénalisez tous les niveaux également. Au lieu de cela, incluez toujours tous les niveaux, de sorte que chacun soit symétrique par rapport à la pénalité.
Matthew Drury

1
@Matthew Drury, merci pour ce dernier commentaire. Pourriez-vous le développer dans une réponse? Ce n'est donc que pour une régression linéaire simple où un codage fictif est nécessaire?
user90772

1

Je me sens la meilleure réponse à cette question est enterré dans les commentaires par @MatthewDrury, qui stipule qu'il est une différence et que vous devez utiliser la colonne apparemment redondante dans une approche régularisée. @ Le raisonnement de MatthewDrury est

[Dans la régression régularisée], l'interception n'est pas pénalisée, donc si vous inférez l'effet d'un niveau comme ne faisant pas partie de l'interception, il est difficile de dire que vous pénalisez tous les niveaux également. Au lieu de cela, incluez toujours tous les niveaux, de sorte que chacun soit symétrique par rapport à la pénalité.

Je pense qu'il a raison.


Vous devez donc une variable d'encodage à chaud avec des kniveaux ou avec des k-1niveaux selon la situation. En plus de votre déclaration (régularisée / non régularisée), y aurait-il des directives sur quoi faire dans tous les cas?
Dan Chaltiel

Ma règle est qu'il n'y a pas de régularisation, comme dans l'ANOVA classique, utilisez les niveaux k-1. S'il y a régularisation, comme dans les méthodes bayésiennes ou régression avec régularisation L2, utilisez k niveaux.
Ben Ogorek
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.