Quels algorithmes nécessitent un codage à chaud?

12

Je ne sais jamais quand utiliser l'encodage à chaud pour les variables catégorielles non ordonnées et quand ne pas le faire. Je l'utilise chaque fois que l'algorithme utilise une métrique de distance pour calculer la similitude. Quelqu'un peut-il donner une règle générale concernant les types d'algorithmes qui exigeraient que les fonctionnalités catégorielles non ordonnées soient codées à chaud et lesquelles ne le seraient pas?

cosmosa
la source
2
Vous demandez-vous s'il est nécessaire de coder les données catégorielles en un certain type de "variables de contraste" ou spécifiquement en un type factice (à chaud)?
ttnphns
1
Cette question est assez large, mais une réponse simple qui aborde la nature de l'OHE peut dissiper la confusion du PO. L'existence de telles réponses implique que cette question peut être résolue. Je vote pour laisser ouvert.
gung - Rétablir Monica
@ttnphns honnêtement, je ne sais pas ce que vous entendez par variable de contraste. Je ne connais que le mannequin.
cosmosa
Cosmos, factice (= indicateur = un-chaud) n'est qu'une des nombreuses façons de coder les cariables catégorielles dans les analyses. Ces façons sont appelées de manière unitaire "variables de contraste". Voir stats.meta.stackexchange.com/q/4669/3277 et stats.stackexchange.com/a/221868/3277
ttnphns
1
Je pense que la liste complète que vous demandez sera difficile à produire.
mdewey

Réponses:

6

La plupart des algorithmes (régression linéaire, régression logistique, réseau de neurones, machine à vecteurs de support, etc.) nécessitent une sorte de codage sur les variables catégorielles. En effet, la plupart des algorithmes ne prennent que des valeurs numériques en entrée.

Les algorithmes qui ne nécessitent pas de codage sont des algorithmes qui peuvent traiter directement des distributions discrètes conjointes telles que la chaîne de Markov / Naive Bayes / réseau bayésien, basées sur des arbres, etc.

Commentaires supplémentaires:

Haitao Du
la source
Il n'est toujours pas clair si un encodage à chaud est requis pour la plupart des algorithmes. Vous dites simplement que l'encodage est requis. Mais s'agit-il d'un encodage à chaud?
Prometheus
4

Quelqu'un peut-il donner une liste des algorithmes qui exigeraient que les fonctionnalités catégorielles soient codées à chaud et lesquelles ne le seraient pas?

AFAIU, il doit faire plus avec les données particulières , moins avec l' algorithme particulier . Plus précisément, cela dépend de l'existence ou non d'un ordre significatif dans les catégories.

Prenons deux cas. Dans le premier, vous avez les catégories mauvais, meh, bon , et dans le second, vous avez la pomme, l'orange, la poire . Il y a un ordre naturel dans le premier cas, parce que le meh est probablement entre le mauvais et le bon , mais probablement rien de semblable ne se produit dans la pomme, l'orange, la poire .

Si vous évitez le codage à chaud pour le premier cas, vous "perdez" les informations sur la commande. Si vous utilisez l'encodage à chaud pour le deuxième cas, vous attribuez un ordre aux catégories qui n'est pas naturellement vrai.

Je le fais chaque fois que l'algorithme utilise une métrique de distance pour calculer la similitude.

Pourquoi? Supposons que l'une des fonctionnalités soit catégoriquement mauvaise, meh, bonne et que vous ayez trois instances, 1, 2 et 3, où elles sont identiques, sauf que 1 est mauvais , 2 est meh et 3 est bon. Vous voudrez probablement exprimer à l'algorithme que 1 est plus similaire à 2 qu'à 3.

Ami Tavory
la source
2
Voilà une bonne réponse. J'aurais dû clarifier la question pour inclure également les variables catégorielles non ordonnées. Dans ce cas, il devrait toujours être un codage à chaud?
cosmosa
@ cosmos1990 À mon humble avis, en règle générale, pour les données catégorielles non ordonnées, le codage à chaud est la voie à suivre (par opposition à l'attribution de valeurs numériques).
Ami Tavory
2

Aucun algorithme d'apprentissage automatique ne nécessite un encodage à chaud. C'est une méthode pour traiter les variables catégorielles. Les variables factices en sont une autre. Traditionnellement, les variables factices étaient la solution préférée. Par exemple, la fonction R lm () crée automatiquement des variables fictives pour les données catégorielles. Si vous utilisez python et scikt-learn, je pense que bon nombre de ses algos nécessitent un encodage à chaud des variables catégorielles. Je crois que tensorFlow nécessite également un encodage à chaud. Ce sont des choix de codage de la variable. Il n'y a aucune raison pour que les variables factices ne puissent pas être utilisées à la place dans le code. Tout cela doit traiter de l'implémentation réelle du code de l'algorithme.

Comme le souligne hxd1011, la question de la description de la «distance» entre les variables catégorielles est délicate. En plus des distances mentionnées, il y a aussi la distance Jaccard. Certaines méthodes ML, en particulier les SVM, sont inappropriées pour les données catégorielles et l'ajout de variables catégorielles peut / va (soit, les deux, selon vous) conduire à des modèles avec un très faible pouvoir prédictif. La plupart des modèles d'ensemble traitent les données catégorielles «en l'état» et ne nécessitent aucun prétraitement.

meh
la source