Certaines de vos caractéristiques peuvent être des valeurs discrètes qui ne sont pas dans une relation ordonnée. (par exemple, un chien, un mot ou un code postal). Ces caractéristiques sont appelées catégories et chaque valeur est appelée catégorie. Vous pouvez représenter des valeurs catégorielles sous forme de chaînes, voire de nombres, mais vous ne pourrez pas comparer ces chiffres, ni les soustraire.
Souvent, vous devez représenter des caractéristiques contenant des valeurs entières sous forme de données catégorielles plutôt que numériques. Prenons l'exemple d'une caractéristique de code postal dans laquelle les valeurs sont des entiers. Si vous représentez cette caractéristique sous forme numérique, vous demandez au modèle de trouver une relation numérique entre différents codes postaux. Par exemple, vous vous attendez à ce que le modèle détermine que le code postal 20004 est le double (ou la moitié) du signal en tant que code postal 10002. En représentant les codes postaux comme des données catégorielles, vous permettez au modèle de trouver des signaux distincts pour chaque code postal.
Si le nombre de catégories d'un champ de données est faible, par exemple le jour de la semaine ou une palette limitée de couleurs, vous pouvez créer une caractéristique unique pour chaque catégorie. Exemple :
Figure 1: Fonctionnalité unique pour chaque catégorie
Un modèle peut ensuite apprendre une pondération distincte pour chaque couleur. Par exemple, le modèle pourrait apprendre que les voitures rouges sont plus chères que les voitures vertes.
Les éléments géographiques peuvent ensuite être indexés.
Figure 2: Fonctionnalités indexées.
Ce type de mappage est appelé vocabulaire.
Vocabulaire
Dans un vocabulaire, chaque valeur représente une caractéristique unique.
Index Number | Category |
---|---|
0 | Red |
1 | Orange |
2 | Blue |
... | ... |
Le modèle recherche l'index à partir de la chaîne, en attribuant 1,0 à l'emplacement correspondant dans le vecteur de caractéristiques et 0,0 à tous les autres emplacements dans le vecteur de caractéristiques.
Figure 3: Processus de bout en bout pour mapper des catégories sur des vecteurs de caractéristiques
Remarque sur la représentation creuse
Si vos catégories correspondent aux jours de la semaine, vous pourriez par exemple représenter le vendredi avec le vecteur de caractéristiques [0, 0, 0, 0, 1, 0, 0]. Toutefois, la plupart des implémentations de systèmes de ML représenteront ce vecteur en mémoire avec une représentation creuse. Une représentation courante consiste en une liste de valeurs non vides et leurs index correspondants (par exemple, 1.0 pour la valeur et [4] pour l'index). Cela vous permet de dépenser moins de mémoire pour le stockage d'une quantité considérable de zéros, et ainsi de multiplier plus efficacement la matrice. En termes de mathématiques sous-jacentes, [4] équivaut à [0, 0, 0, 0, 1, 0, 0].
Hors vocabulaire
Tout comme les données numériques, les données catégorielles sont également aberrantes. Prenons l'exemple d'un ensemble de données contenant des descriptions de voitures. La couleur de la voiture est l'une des caractéristiques de cet ensemble de données. Supposons que les couleurs courantes de la voiture (noir, blanc, gris, etc.) soient bien représentées dans cet ensemble de données, et que vous les configuriez chacune dans une catégorie afin que vous puissiez découvrir l'impact de ces différentes couleurs sur la valeur. Supposons toutefois que cet ensemble de données contienne un petit nombre de voitures aux couleurs excentriques (mauve, puce, avocat). Plutôt que de classer chacune de ces couleurs dans une catégorie distincte, vous pouvez les regrouper dans une catégorie générique intitulée Out of Vocab (Hors de Vocabulaire) (OOV). Grâce à la fonction OOV, le système ne perd pas de temps à entraîner chacune de ces couleurs rares.
Hashing
Une autre option consiste à hacher toutes les chaînes (catégorie) dans votre espace d'index disponible. Le hachage provoque souvent des conflits, mais vous devez compter sur l'apprentissage par le modèle d'une représentation partagée des catégories d'un même index qui fonctionne bien pour le problème donné.
Pour les termes importants, le hachage peut être pire que la sélection d'un vocabulaire, en raison de conflits. En revanche, le hachage ne nécessite pas l'assemblage d'un vocabulaire, ce qui est avantageux si la distribution des caractéristiques change beaucoup au fil du temps.
Figure 4: Mise en correspondance d'éléments avec un vocabulaire
Combinaison du hachage et du vocabulaire
Vous pouvez adopter une approche hybride et combiner le hachage à un vocabulaire. Utilisez un vocabulaire pour les catégories les plus importantes de vos données, mais remplacez le bucket OOV par plusieurs buckets OOV et utilisez le hachage pour attribuer des catégories aux buckets.
Les catégories des buckets de hachage doivent partager un index, et le modèle ne fournira probablement pas de bonnes prédictions, mais nous avons alloué une certaine quantité de mémoire pour essayer d'apprendre les catégories en dehors de notre vocabulaire.
Figure 5: Approche hybride combinant le vocabulaire et le hachage.
Remarque sur les représentations vectorielles continues
Comme nous l'avons vu dans le cours d'initiation au machine learning, une représentation vectorielle continue est une caractéristique catégorielle représentée comme une caractéristique à valeur continue. Les modèles profonds convertissent fréquemment les index d'un index en représentation vectorielle continue.
Figure 6: Vecteurs de caractéristiques creuses via une représentation vectorielle continue
Les autres transformations dont nous avons parlé peuvent être stockées sur un disque, mais les représentations vectorielles continues sont différentes. Étant donné que les représentations vectorielles continues sont entraînées, elles ne font pas partie des transformations de données types. Elles font partie du modèle. Ils sont entraînés avec d'autres pondérations du modèle et fonctionnent de manière fonctionnelle comme une couche de pondérations.
Qu'en est-il des représentations vectorielles continues pré-entraînées ? Les représentations vectorielles continues pré-entraînées restent généralement modifiables pendant l'entraînement. Elles font donc toujours partie du concept.