Hashing Trick - ce qui se passe réellement


12

Lorsque les algorithmes ML, par exemple Vowpal Wabbit ou certaines des machines de factorisation remportant des concours de taux de clics ( Kaggle ), mentionnent que les fonctionnalités sont «hachées», qu'est-ce que cela signifie réellement pour le modèle? Disons qu'il existe une variable qui représente l'ID d'une annonce Internet, qui prend des valeurs telles que «236BG231». Ensuite, je comprends que cette fonctionnalité est hachée en un entier aléatoire. Mais ma question est:

  • L'entier est-il maintenant utilisé dans le modèle, sous forme d'entier (numérique) OU
  • la valeur hachée est-elle toujours traitée comme une variable catégorielle et codée à chaud? Ainsi, l'astuce de hachage consiste simplement à économiser de l'espace en quelque sorte avec des données volumineuses?

Réponses:


7

La deuxième puce est la valeur du hachage de fonctionnalité. Le hachage et un encodage à chaud pour des données éparses économisent de l'espace. Selon l'algo de hachage, vous pouvez avoir différents degrés de collisions, ce qui agit comme une sorte de réduction de la dimensionnalité.

De plus, dans le cas spécifique du hachage des fonctionnalités Kaggle et d'une aide à l'encodage à chaud pour l'expansion / l'ingénierie des fonctionnalités en prenant tous les tuples possibles (généralement juste de deuxième ordre mais parfois troisième) des fonctionnalités qui sont ensuite hachées avec des collisions qui créent explicitement des interactions souvent prédictives tandis que les caractéristiques individuelles ne le sont pas.

Dans la plupart des cas, cette technique combinée à la sélection des caractéristiques et à la régularisation du filet élastique en LR agit très similaire à une couche cachée NN, donc elle fonctionne assez bien en compétition.


Ainsi, un codage à chaud est toujours utilisé, uniquement sur les valeurs hachées * qui, comme vous le dites, économise de l'espace et peut entraîner une réduction de la dimensionnalité (en cas de collisions). Est-ce exact?
B_Miner

1
Un codage d'hôte n'est pas une partie obligatoire des fonctionnalités de hachage, mais il est souvent utilisé en parallèle, car il aide beaucoup avec la puissance prédictive. Une façon de penser à un codage à chaud consiste à transformer une caractéristique d'un ensemble de N valeurs discrètes en un ensemble de N questions binaires. Peut-être que ce n'est pas important pour moi de savoir si la fonction J est 2 ou 3 seulement, ce n'est pas 4. One Hot rend cette distinction spécifique. Cela aide beaucoup avec les modèles linéaires tandis que les approches d'ensemble (comme RF) balaient les points de rupture dans la fonction pour trouver cette distinction.
cwharland
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.