Le terme dimension est un synonyme du nombre d'éléments dans une vecteur de caractéristiques. Certaines caractéristiques catégorielles ont une dimension faible. Exemple :
Nom de la fonctionnalité | Nbre de catégories | Exemples de catégories |
---|---|---|
snowed_today | 2 | Vrai, faux |
skill_level | 3 | Débutant, Professionnel, Expert |
season | 4 | Hiver, printemps, été, automne |
day_of_week | 7 | Lundi, mardi, mercredi |
planète | 8 | Mercure, Vénus, Terre |
Lorsqu'une caractéristique catégorielle a un faible nombre de catégories possibles, vous pouvez l'encoder sous forme de vocabulaire. Avec un encodage de vocabulaire, le modèle traite chaque valeur catégorielle possible en tant que caractéristique distincte. Pendant l'entraînement, apprend différentes pondérations pour chaque catégorie.
Par exemple, supposons que vous créez un modèle
pour prédire le prix d'une voiture,
en partie, sur une caractéristique catégorielle nommée car_color
.
Peut-être que les voitures rouges valent plus que les voitures vertes.
Étant donné que les fabricants proposent un nombre limité de couleurs d'extérieur, car_color
est
une caractéristique catégorielle de faible dimension.
L'illustration suivante suggère un vocabulaire (valeurs possibles) pour
car_color
:
Exercice: testez votre intuition
"Red"
n'est pas un nombre à virgule flottante. Toi
doit convertir des chaînes telles que "Red"
en nombres à virgule flottante.
Indexer des nombres
Les modèles de machine learning ne peuvent manipuler que les nombres à virgule flottante. Vous devez donc convertir chaque chaîne en un numéro d'index unique, comme dans l'illustration suivante:
Testez votre intuition
"Black"
(index numéro 5) est cinq fois plus significative.
au modèle que "Orange"
(index numéro 1).
"Black"
(index numéro 5) est
5 fois plus significatif pour le modèle que "Orange"
(index numéro 1).
Encodage one-hot
L'étape suivante de la création d'un vocabulaire consiste à convertir chaque numéro d'index en son encodage one-hot. Dans un encodage one-hot:
- Chaque catégorie est représentée par un vecteur (tableau) de N éléments, où N
correspond au nombre de catégories. Par exemple, si
car_color
a huit valeurs possibles le vecteur one-hot représentant aura huit éléments. - Un des éléments d'un vecteur one-hot a la valeur 1,0. tous les éléments restants ont la valeur 0.0.
Par exemple, le tableau suivant montre l'encodage one-hot de chaque valeur
car_color
:
Fonctionnalité | Rouge | Orange | Bleu | Jaune | Vert | Noir | Violet | Brown |
---|---|---|---|---|---|---|---|---|
"Rouge" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Orange" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"Bleu" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
"Jaune" | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
"Vert" | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
"Noir" | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"Violet" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
"Marron" | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
C'est le vecteur one-hot (et non la chaîne ou le numéro d'index) qui est transmis. au vecteur de caractéristiques. Le modèle apprend une pondération distincte pour chaque élément de le vecteur de caractéristiques.
L'illustration suivante suggère les différentes transformations du représentation du vocabulaire:
Représentation creuse
Une caractéristique dont les valeurs sont pour la plupart nulles (ou vides) est appelée
caractéristique creuse. Beaucoup
les caractéristiques catégorielles, comme car_color
, ont tendance à être des caractéristiques creuses.
Représentation creuse
consiste à stocker la position de la valeur 1,0
dans un vecteur creux. Par exemple, le vecteur one-hot pour "Blue"
est le suivant:
[0, 0, 1, 0, 0, 0, 0, 0]
Étant donné que 1
est en position 2 (lorsque le décompte commence à 0), la
La représentation creuse du vecteur one-hot précédent est:
2
Notez que la représentation creuse utilise beaucoup moins de mémoire que la un vecteur one-hot à huit éléments. Il est important de noter que le modèle doit être entraîné un vecteur one-hot, et non la représentation creuse.
Anomalies dans les données catégorielles
Tout comme les données numériques, les données catégorielles contiennent également des anomalies. Supposons
car_color
contient non seulement les couleurs populaires, mais aussi certaines rarement utilisées.
les couleurs aberrantes, telles que "Mauve"
ou "Avocado"
.
Plutôt que de donner à chacune de ces couleurs
aberrantes une catégorie distincte, vous
vous pouvez les regrouper en un seul une catégorie appelée "hors vocabulaire"
hors champ. En d'autres termes, toutes les couleurs aberrantes sont réparties dans une seule
un bucket aberrant. Le système apprend une seule pondération pour ce bucket d'anomalies.
Encodage des caractéristiques catégorielles de grande dimension
Certaines caractéristiques catégorielles ont un grand nombre de dimensions, comme du tableau suivant:
Nom de la fonctionnalité | Nbre de catégories | Exemples de catégories |
---|---|---|
words_in_english | ~500 000 | "heureux", "marche" |
US_postal_codes | ~42 000 | "02114", "90301" |
last_names_in_Germany | ~850 000 | "Schmidt", "Schneider" |
Lorsque le nombre de catégories est élevé, l'encodage one-hot est généralement un mauvais choix. Représentations vectorielles continues, détaillées dans un dans le module de représentations vectorielles continues, un bien meilleur choix. Les représentations vectorielles continues réduisent considérablement le nombre de dimensions, ce qui profite aux modèles de deux manières:
- En général, l'entraînement du modèle est plus rapide.
- En général, le modèle compilé déduit les prédictions plus rapidement. En d'autres termes, a une latence plus faible.
Le hachage (également appelé hachage) truc) est un moyen moins courant de réduire le nombre de dimensions.