Библиотеки LSH на Яве

Я ищу легковесную библиотеку Java, которая поддерживает поиск ближайших соседей с помощью локально-чувствительного хеширования для почти одинаково распределенных данных в многомерном (в моем случае 32) наборе данных с несколькими сотнями тысяч точек данных.

Это достаточно хорошо, чтобы получить все записи в корзине для запроса. Какие из них мне действительно нужны, могут быть обработаны другим способом с учетом некоторых параметров фильтра, к которым относится моя проблема.

Я уже нашел Likelike, но надеюсь, что есть что-то немного меньше и без необходимости каких-либо других инструментов (например, Apache Hadoop в случае Likelike).

4 ответа

Может быть этот:

"TarsosLSH - это библиотека Java, реализующая локально-зависимое хеширование (LSH), практичный алгоритм поиска ближайшего соседа для многомерных векторов, работающий в сублинейном времени. Он поддерживает несколько семейств локально-чувствительного хеширования (LSH): евклидово семейство хешей (L2), город семейство блочных хэшей (L1) и семейство косинусных хэшей. Библиотека пытается найти хорошее место: она достаточно способна выполнять реальные задачи и достаточно компактна, чтобы служить демонстрацией того, как работает LSH ".

Код можно найти здесь

Вот еще один: https://github.com/tdebatty/java-LSH. Похоже, что он недавно обновлен, чем некоторые другие опции здесь.

Эта страница содержит ссылки на другие проекты, а также соответствующие документы и информацию: https://janzhou.org/lsh/.

Вот еще один: https://github.com/allenlsy/knn

Он использует LSH для KNN. Я сейчас изучаю его юзабилити =)

Инфраструктура интеллектуального анализа данных ELKI поставляется с индексом LSH. Он может использоваться с большинством включенных алгоритмов (все, что использует поиск по диапазону или nn) и иногда работает очень хорошо.

В других случаях LSH не кажется хорошим подходом. Может быть довольно сложно получить правильные параметры LSH: если вы выбираете слишком высокие параметры, время выполнения сильно возрастает (вплоть до линейного сканирования). Если вы выбираете их слишком низко, индекс становится слишком приблизительным и проигрывает многим соседям.

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

Вот это: http://code.google.com/p/lsh-clustering/

У меня не было времени, чтобы проверить это, но по крайней мере он компилируется.

Другие вопросы по тегам