Locality-sensitive hashing
Locality-sensitive hashing (LSH<ref>Шаблон:Статья</ref>) — вероятностный метод понижения размерности многомерных данных. Основная идея состоит в таком подборе хеш-функций для некоторых измерений, чтобы похожие объекты с высокой степенью вероятности попадали в одну корзину<ref>Шаблон:Cite web</ref>. Один из способов борьбы с «проклятием размерности» при поиске и анализе многомерных данных, которое заключается в том, что при росте размерности исходных данных поиск по индексу ведёт себя хуже, чем последовательный просмотр. Метод позволяет строить структуру для быстрого приближённого (вероятностного) поиска n-мерных векторов, «похожих» на искомый шаблон.
LSH является одним из наиболее популярных на сегодняшний день приближённых алгоритмов поиска ближайших соседей (Approximate Nearest Neighbor, ANN). LSH в этом подходе отображает множество точек в высокоразмерном пространстве в множество ячеек, т. е. в хеш-таблицу. В отличие от традиционных хешей, LSH обладает свойством чувствительности к местоположению (locality-sensitive hash), благодаря чему способен помещать соседние точки в одну и ту же ячейку.
Преимуществами LSH являются: 1) простота использования; 2) строгая теория, подтверждающая хорошую производительность алгоритма; 3) LSH совместим с любой нормой [math]\displaystyle{ L_p }[/math] при [math]\displaystyle{ 0 \lt p \leq 2 }[/math]. LSH можно использовать с евклидовой метрикой и с манхэттенским расстоянием. Существуют также варианты для расстояния Хэмминга и косинусного коэффициента<ref>Шаблон:Статья</ref>.
Примечания
Ссылки
- Mining of Massive Datasets. Anand Rajaraman and Jeff Ullman п.3.4
- Alex Andoni’s LSH homepage
- LSHKIT: A C++ Locality Sensitive Hashing Library
- Caltech Large Scale Image Search Toolbox: a Matlab toolbox implementing several LSH hash functions, in addition to Kd-Trees, Hierarchical K-Means, and Inverted File search algorithms.
- Simhash at Google
- Slash: A C++ LSH library, implementing Spherical LSH by Terasawa, K., Tanaka, Y
- LSH Forest: Locality Sensitive Hashing forest implementation - SciKitLearn
- Deduplicating Massive Datasets With Locality Sensitive Hashing - Dataconomy