Il semble que vous compreniez que vous pouvez avoir des n
niveaux, par opposition à n-1
, car contrairement à la régression linéaire, vous n'avez pas à vous soucier de la colinéarité parfaite.
(J'y arrive dans une perspective R, mais je suppose que c'est la même chose en Python.) Cela dépend de deux choses, telles que 1) quel package vous utilisez et 2) combien de niveaux de facteur vous avez.
1) Si vous utilisez le randomForest
package de R , alors si vous avez <33 niveaux de facteur, vous pouvez continuer et les laisser dans une fonction si vous le souhaitez. En effet, dans la mise en œuvre aléatoire de la forêt de R, il vérifiera quels niveaux de facteurs doivent être d'un côté de la division et lesquels de l'autre (par exemple, 5 de vos niveaux peuvent être regroupés sur le côté gauche et 7 peuvent être groupés ensemble à droite). Si vous divisez la caractéristique catégorielle en n
variables muettes, l'algorithme n'aurait pas cette option à sa disposition.
Évidemment, si le package que vous utilisez en particulier ne peut pas gérer les fonctionnalités catégorielles, il vous suffit de créer n
des variables factices.
2) Comme je l'ai mentionné ci-dessus, l'implémentation de forêt aléatoire de R ne peut gérer que 32 niveaux de facteurs - si vous en avez plus, vous devez soit diviser vos facteurs en sous-ensembles plus petits, soit créer une variable fictive pour chaque niveau.
randomForest
sont codées automatiquement, je devrais aller avec desn
nuls car la colinéarité n'est pas un problème pour RF?sklearn
... Pratiquement parlant, existe-t-il des preuves (expérience pratique, recherche, etc.) que les variables "factices" fonctionneront moins bien que les variables catégorielles "groupées" [dans R]Il existe une autre approche pour traiter les variables catégorielles qui est appelée codage cible / impact.
Dans ce schéma, l'idée est de coder l'entité à l'aide d'une seule colonne flottante dans laquelle la valeur est la moyenne de la variable cible sur toutes les lignes qui partagent la catégorie. Ceci est particulièrement utile pour les modèles arborescents car il impose une relation d'ordre au sein de l'entité (c'est-à-dire que les valeurs à droite de la catégorie ont une réponse moyenne plus élevée que les valeurs à gauche) et il facilite la division de l'espace du prédicteur.
Voici une belle explication du sujet:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0
Et voici un lien vers l'article qui a initialement proposé l'encodage: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf
Il y a plus de détails pour éviter d'estimer la moyenne dans les catégories à faible nombre et il y a aussi un autre modèle, CatBoost, proposant une solution au biais introduit par cet encodage, mais d'après mon expérience, c'est un moyen simple et très utile pour encoder des variables catégorielles à cardinalité élevée .
la source