De nombreux algorithmes d'apprentissage automatique, par exemple les réseaux de neurones, s'attendent à traiter les nombres. Ainsi, lorsque vous avez des données catégorielles, vous devez les convertir. Par catégorique, je veux dire, par exemple:
Marques automobiles: Audi, BMW, Chevrolet ... ID utilisateur: 1, 25, 26, 28 ...
Même si les identifiants des utilisateurs sont des nombres, ils ne sont que des étiquettes et ne signifient rien en termes de continuité, comme l'âge ou la somme d'argent.
Ainsi, l'approche de base semble utiliser des vecteurs binaires pour coder les catégories:
Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...
C'est OK quand il y a peu de catégories, mais au-delà, cela semble un peu inefficace. Par exemple, lorsque vous avez 10 000 identifiants utilisateur à encoder, c'est 10 000 fonctionnalités.
La question est, existe-t-il une meilleure façon? Peut-être une impliquant des probabilités?
la source
Réponses:
Vous pouvez toujours traiter vos identifiants utilisateur comme un sac de mots: la plupart des classificateurs de texte peuvent traiter des centaines de milliers de dimensions lorsque les données sont rares (de nombreux zéros que vous n'avez pas besoin de stocker explicitement en mémoire, par exemple si vous utilisez des lignes éparses compressées représentation de votre matrice de données).
Cependant, la question est: est-il judicieux de traiter un problème spécifique pour traiter les identifiants utilisateur comme des fonctionnalités? Ne serait-il pas plus judicieux de dénormaliser vos données de relation et d'utiliser les fonctionnalités utilisateur (âge, emplacement, caractères du surnom en ligne, historique des transactions ...) au lieu de leurs identifiants?
Vous pouvez également effectuer un clustering de vos vecteurs utilisateur bruts et utiliser les N principaux centres les plus proches comme fonctionnalités activées pour au lieu des ID utilisateur.
la source
Le codage équilatéral est probablement ce que vous recherchez lorsque vous essayez de coder des classes dans un réseau neuronal. Il a tendance à mieux fonctionner que le codage "1 sur n" référencé dans d'autres articles. Pour référence je peux suggérer: http://www.heatonresearch.com/wiki/Equilateral
la source