Hashing Trick - cosa succede realmente


12

Quando gli algoritmi ML, ad esempio Vowpal Wabbit o alcune delle macchine di fattorizzazione che vincono le competizioni di click through rate ( Kaggle ), menzionano che le funzionalità sono "hash", cosa significa in realtà per il modello? Diciamo che esiste una variabile che rappresenta l'ID di un'aggiunta di Internet, che assume valori come '236BG231'. Quindi capisco che questa funzione è sottoposta a hash su un numero intero casuale. Ma la mia domanda è:

  • È il numero intero ora utilizzato nel modello, come un numero intero (numerico) O
  • il valore di hash in realtà è ancora trattato come una variabile categoriale e con una codifica a caldo? Quindi il trucco di hashing è solo per risparmiare spazio in qualche modo con dati di grandi dimensioni?

Risposte:


7

Il secondo punto è il valore nell'hash delle funzionalità. L'hashing e una codifica a caldo per i dati sparsi consentono di risparmiare spazio. A seconda dell'algoritmo di hash puoi avere vari gradi di collisione che agiscono come una sorta di riduzione della dimensionalità.

Inoltre, nel caso specifico dell'hash delle funzionalità di Kaggle e di una codifica a caldo aiutano l'espansione / l'ingegnerizzazione delle funzionalità prendendo tutte le possibili tuple (di solito solo il secondo ordine ma a volte il terzo) di funzioni che vengono quindi hash con collisioni che creano esplicitamente interazioni che sono spesso predittive mentre le caratteristiche individuali non lo sono.

Nella maggior parte dei casi questa tecnica combinata con la selezione delle caratteristiche e la regolarizzazione della rete elastica in LR agisce in modo molto simile a un NN a strato nascosto, quindi si comporta abbastanza bene nelle competizioni.


Quindi viene ancora utilizzata una codifica a caldo, solo sui valori con hash * che, come dici tu, salva spazio e può causare riduzione della dimensionalità (date collisioni). È corretto?
B_Miner,

1
La codifica di un host non è una parte richiesta delle funzionalità di hashing ma viene spesso utilizzata insieme poiché aiuta molto con la potenza predittiva. Un modo di pensare a una codifica a caldo consiste nel trasformare una funzione da un set di N valori discreti in un set N domande binarie. Forse non è importante per me sapere se la funzione J è solo 2 o 3 che non è 4. One Hot rende specifica questa distinzione. Questo aiuta molto con i modelli lineari, mentre gli approcci degli ensemble (come RF) scansioneranno i punti di interruzione nella funzione per trovare quella distinzione.
cwharland,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.