Хеширование - что на самом деле происходит

12

Когда алгоритмы ML, например, Vowpal Wabbit или некоторые из машин факторизации, побеждающих в конкурсе кликов ( Kaggle ), упоминают, что функции «хэшированы», что это на самом деле означает для модели? Допустим, есть переменная, которая представляет идентификатор интернет-добавления, который принимает значения, такие как «236BG231». Тогда я понимаю, что эта функция хэшируется в случайное целое число. Но мой вопрос:

  • Используется ли в модели целое число в качестве целого (числового) ИЛИ
  • действительно ли хэшированное значение все еще обрабатывается как категориальная переменная с горячим кодированием? Таким образом, хитрость заключается в том, чтобы как-то сэкономить пространство с большими данными?
B_Miner
источник

Ответы:

7

Второй пункт - это значение в хешировании объектов. Хеширование и одно горячее кодирование для разреженных данных экономят место. В зависимости от алгоритма хеширования вы можете иметь различные степени столкновений, которые действуют как уменьшение размерности.

Кроме того, в конкретном случае хеширование объектов Kaggle и одно горячее кодирование помогают в расширении / разработке функций, принимая все возможные кортежи (обычно только второго порядка, а иногда и третьего) функций, которые затем хэшируются со столкновениями, которые явно создают взаимодействия, которые часто являются прогнозирующими. тогда как индивидуальных особенностей нет.

В большинстве случаев этот метод в сочетании с выбором признаков и упорядоченной упругой сеткой в ​​LR действует очень похоже на NN с одним скрытым слоем, поэтому он довольно хорошо работает в соревнованиях.

cwharland
источник
Таким образом, горячее кодирование все еще используется, только для хэшированных значений *, что, как вы говорите, экономит пространство и может привести к уменьшению размерности (учитывая коллизии). Это верно?
B_Miner
1
Кодирование одного хоста не является обязательной частью функций хеширования, но часто используется вместе с ним, так как оно помогает с предсказательной силой. Один из способов думать об одном «горячем» кодировании - преобразовать функцию из набора из N дискретных значений в набор из N двоичных вопросов. Возможно, мне не важно знать, если функция J равна 2 или 3, а не 4. One Hot делает это различие специфичным. Это очень помогает с линейными моделями, тогда как ансамблевые подходы (такие как RF) будут сканировать точки останова в функции, чтобы найти это различие.
cwharland