2012-03-28 12 views
21

Poszukuję lekkiej biblioteki Java obsługującej najbliżej sąsiadujące wyszukiwania według szumu lokalnego w prawie równomiernie rozproszonych danych w wysokiej jakości (w moim przypadku 32) zbiorze danych z setkami tysięcy punktów danych.Biblioteki LSH w Javie

Jest wystarczająco dobrze, aby uzyskać wszystkie wpisy w wiadrze dla zapytania. Które z nich naprawdę potrzebuję, mogą być przetworzone w inny sposób, biorąc pod uwagę niektóre parametry filtru, które obejmuje mój problem.

Znalazłem już likelike, ale mam nadzieję, że istnieje coś nieco mniejszego i bez potrzeby stosowania jakichkolwiek innych narzędzi (takich jak Apache Hadoop w przypadku).

+0

Znalazłeś coś? Szukałem tego samego z odległością euklidesową jako moją miarą dla kNN. –

+0

Niezupełnie. Ale myślę, że będę musiał sam wymyślić implementację. Pozostaje jednak pytanie, jak wybrać dobre funkcje mieszania ... – s1lence

+1

Możesz rozpocząć od funkcji mieszania w implementacji MATLAB pod adresem http://ttic.uchicago.edu/~gregory/download.html –

Odpowiedz

6

Może to jedno:

„TarsosLSH jest biblioteką Java realizacji Miejscowość wrażliwego mieszaja (LSH), praktyczny najbliższy algorytm wyszukiwania sąsiad dla wielowymiarowych wektorów, które prowadzi działalność w sublinear czasie Obsługuje kilka rodzin Hashing lokalnych (LSH): rodzina mieszania euklidesowego (L2), rodzina mieszania bloków miejskich (L1) i rodzina mieszania cosinus. Biblioteka stara się trafić w słodkie miejsce pomiędzy zdolnością wystarczającą do wykonania prawdziwych zadań, i wystarczająco zwięzłe, aby pokazać, jak działa LSH. "

Kod można znaleźć here

1

Ramy wydobycie ELKI dane pochodzą z indeksem LSH. Może być używany z większością algorytmów (wszystko, co używa zakresu lub nn wyszukiwania), a czasami działa bardzo dobrze.

W innych przypadkach LSH nie wydaje się dobrym podejściem. Poprawne parametry LSH mogą być dość trudne: jeśli wybierzesz niektóre parametry za wysoko, środowisko uruchomieniowe będzie rosło (aż do skanowania liniowego). Jeśli wybierzesz je zbyt niskie, indeks stanie się zbyt przybliżony i straci wielu sąsiadów.

To chyba największe wyzwanie z LSH: znalezienie dobrych parametrów, które otrzymano żądany przyspieszenie i dostaniem dość dobrą dokładność z indeksu ...