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?
12
Réponses:
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:
Un encodage à chaud est l'une des méthodes d'encodage. Voici une bonne ressource pour l'encodage de variables catégorielles (non limité à R). SYSTÈMES DE CODAGE DE CONTRASTE DE BIBLIOTHÈQUE R POUR VARIABLES CATÉGORIQUES
Même sans codage, la distance entre les points de données avec des variables discrètes peut être définie, comme la distance de brouillage ou la distance de Levenshtein
la source
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.
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.
la source
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.
la source