web-dev-qa-db-fra.com

Pourquoi un encodage à chaud améliore-t-il les performances d'apprentissage machine?

J'ai remarqué que lorsque le codage One Hot est utilisé sur un ensemble de données particulier (une matrice) et utilisé en tant que données d'apprentissage pour des algorithmes d'apprentissage, il donne des résultats nettement meilleurs en ce qui concerne la précision de la prédiction, par rapport à l'utilisation de la matrice d'origine en tant que données d'apprentissage. Comment cette augmentation de performance se produit-elle?

121
maheshakya

De nombreux algorithmes d'apprentissage apprennent un seul poids par caractéristique ou utilisent des distances entre les échantillons. Le premier est le cas pour les modèles linéaires tels que la régression logistique, qui sont faciles à expliquer.

Supposons qu'un ensemble de données ne comporte qu'une seule caractéristique catégorielle, "nationalité", avec les valeurs "UK", "French" et "US". Supposons, sans perte de généralité, que ceux-ci sont codés 0, 1 et 2. Vous avez alors une pondération w pour cette fonction dans un classificateur linéaire, qui prendra une sorte de décision en fonction de la contrainte w × x + b> 0 , ou de manière équivalente w × x <b.

Le problème est maintenant que le poids w ne peut pas coder un choix à trois voies. Les trois valeurs possibles de w × x sont 0, w et 2 × w. Ces trois décisions mènent toutes à la même décision (elles sont toutes <b ou ≥b) ou "UK" et "Français" à la même décision, ou "Français" et "États-Unis" donnent la même décision. Le modèle n'a aucune possibilité d'apprendre que "UK" et "US" doivent avoir la même étiquette, avec "French" l'intrus.

Grâce à un encodage à chaud, vous agrandissez effectivement l'espace des fonctionnalités à trois, qui obtiendront chacune leur propre poids. La fonction de décision est donc maintenant w [UK] x [UK] + w [FR] x [FR] + w [US] x [US] <b, où tous les x sont des booléens. Dans cet espace, une telle fonction linéaire peut exprimer toute somme/disjonction des possibilités (par exemple, "UK ou US", qui pourrait être un prédicteur pour une personne parlant anglais).

De même, tout apprenant basé sur des métriques de distance standard (telles que les k-voisins les plus proches) entre les échantillons sera confondu sans codage immédiat. Avec le codage naïf et la distance euclidienne, la distance entre le français et les États-Unis est de 1. La distance entre US et le Royaume-Uni est de 2, mais avec le codage à une chaleur, les distances par paires entre [1, 0, 0], [0, 1 , 0] et [0, 0, 1] sont tous égaux à √2.

Ce n'est pas vrai pour tous les algorithmes d'apprentissage; Les arbres de décision et les modèles dérivés tels que les forêts aléatoires, s'ils sont suffisamment profonds, peuvent gérer des variables catégorielles sans codage one-hot.

252
Fred Foo

En ce qui concerne l'augmentation des fonctionnalités en effectuant un encodage à chaud, on peut utiliser le hachage des fonctionnalités. Lorsque vous effectuez un hachage, vous pouvez spécifier que le nombre de compartiments soit bien inférieur au nombre de fonctionnalités nouvellement introduites.

3
user3764384