Hashing Trick - o que realmente acontece

12

Quando algoritmos ML, por exemplo, Vowpal Wabbit ou algumas das máquinas de fatoração que vencem competições de taxa de cliques ( Kaggle ), mencionam que os recursos são 'hash', o que isso realmente significa para o modelo? Vamos dizer que existe uma variável que representa o ID de um complemento da Internet, que assume valores como '236BG231'. Então eu entendo que esse recurso é hash para um número inteiro aleatório. Mas, minha pergunta é:

  • O número inteiro agora é usado no modelo como um número inteiro (numérico) OU
  • o valor do hash ainda é tratado como uma variável categórica e codificado com um código quente? Assim, o truque de hash é apenas para economizar espaço de alguma forma com grandes dados?
B_Miner
fonte

Respostas:

7

O segundo marcador é o valor no hash do recurso. Hashing e uma codificação quente para dados esparsos economizam espaço. Dependendo do hash algo, você pode ter vários graus de colisão, que funcionam como uma espécie de redução de dimensionalidade.

Além disso, no caso específico do hashing de recursos do Kaggle e uma codificação quente, ajudam na expansão / engenharia do recurso, tomando todas as tuplas possíveis (geralmente apenas de segunda ordem, mas às vezes terceira) de recursos que são então misturados com colisões que criam explicitamente interações que geralmente são preditivas enquanto os recursos individuais não são.

Na maioria dos casos, essa técnica combinada com a seleção de recursos e a regularização da rede elástica na LR atua de maneira muito semelhante a uma camada oculta NN, portanto, ela se sai muito bem em competições.

cwharland
fonte
Portanto, a codificação one-hot ainda é usada, apenas com valores de hash * que, como você diz, economizam espaço e podem causar redução de dimensionalidade (dadas colisões). Isso está correto?
B_Miner
1
A codificação de um host não é uma parte necessária dos recursos de hash, mas é frequentemente usada em conjunto, pois ajuda bastante com o poder de previsão. Uma maneira de pensar em uma codificação a quente é transformar um recurso de um conjunto de N valores discretos em um conjunto de N questões binárias. Talvez não seja importante para mim saber se o recurso J é 2 ou 3, apenas que não é 4. O One Hot faz essa distinção específica. Isso ajuda muito com modelos lineares, enquanto abordagens de conjuntos (como RF) varrem pontos de interrupção no recurso para encontrar essa distinção.
Cwharland # 12/14