Obecnie studiuję, jak znaleźć najbliższego sąsiada za pomocą mieszania wrażliwego na lokalizację. Podczas gdy czytam papiery i przeszukuję internet, znalazłem dwa algorytmy:Dwa algorytmy znalezienia najbliższego sąsiada z mieszaniem wrażliwym na lokalizację, który?
1- Używaj L liczby tabel mieszania z L liczbą losowych funkcji LSH, zwiększając w ten sposób szansę, że dwa dokumenty, które są podobne do uzyskać ten sam podpis. Na przykład, jeśli dwa dokumenty są w 80% podobne, wówczas istnieje 80% szans, że otrzymają tę samą sygnaturę z jednej funkcji LSH. Jeśli jednak użyjemy wielu funkcji LSH, wówczas istnieje większa szansa na uzyskanie tego samego podpisu dla dokumentów z jednej z funkcji LSH. Sposób ten wyjaśniono w Wikipedia i nadzieję mi się, były:
http://en.wikipedia.org/wiki/Locality-sensitive_hashing#LSH_algorithm_for_nearest_neighbor_search
2- Inny algorytm wykorzystuje sposób z papieru (fragment 5) o nazwie: podobieństwo Techniki estymacji z zaokrągleń algorytmów Moses S. Charikar. Opiera się on na użyciu jednej funkcji LSH do wygenerowania sygnatury, a następnie zastosowania na nią permutacji P, a następnie posortowania listy. Właściwie nie rozumiem tej metody bardzo dobrze i mam nadzieję, że ktoś mógłby to wyjaśnić.
Moje główne pytanie brzmi: dlaczego ktoś miałby używać drugiej metody zamiast pierwszej metody? Jak uważam, jest to łatwiejsze i szybsze.
Naprawdę mam nadzieję, że ktoś może pomóc !!!
EDYTOWANIE: Właściwie nie jestem pewien, czy @ Raff.Edward miesza się między "pierwszym" a "drugim". Ponieważ tylko druga metoda używa promienia, a pierwsza po prostu używa nowej rodziny hash składającej się z rodziny mieszającej F. Sprawdź link wikipedia. Użyli po prostu wielu funkcji g do generowania różnych sygnatur, a następnie dla każdej funkcji g miała odpowiednią tablicę haszującą. Aby znaleźć najbliższego sąsiada punktu, po prostu pozwól mu przejść przez funkcje g i sprawdź odpowiednie tabele mieszania dla kolizji. W ten sposób zrozumiałem, że to więcej funkcji ... więcej szans na kolizje.
Nie znalazłem żadnej wzmianki o promieniu pierwszej metody.
Dla drugiej metody generują tylko jeden podpis dla każdego wektora cech, a następnie stosują na nich permutacje P. Teraz mamy listę permutacji P, z których każda zawiera n podpisów. Teraz następnie sortują każdą listę od P. Po tym, jak dany punkt zapytania q, generują podpis dla niego, a następnie stosują na nim permutacje P, a następnie używają wyszukiwania binarnego na każdej permutowanej i posortowanej liście P, aby znaleźć najbardziej podobny podpis do zapytanie q. Zakończyłem to po przeczytaniu wielu artykułów na ten temat, ale nadal nie rozumiem, dlaczego ktokolwiek użyłby takiej metody, ponieważ nie wydaje się, że szybko znajduje odległość Hamminga !!!!
Dla mnie wystarczy wykonać następujące czynności, aby znaleźć najbliższego sąsiada dla punktu zapytania q. Biorąc pod uwagę listę sygnatur N, wygenerowałbym podpis dla punktu zapytania q, a następnie zeskanowałem listę N i obliczyłem odległość Hamminga pomiędzy każdym elementem w N a podpisem q. W ten sposób skończę z najbliższym sąsiadem dla q. I zajmuje O (N) !!!
Czy możesz przeczytać zmienioną wersję wpisu? –
Odpowiedziałem na Twoją zmianę. Nie myliłem się, artykuł wiki nie jest dobrze zorganizowany, żeby wyjaśnić, co się dzieje. –
@ Raff.Edward Czy znasz jakieś otwarte wdrożenie metody 2 src? Czy możesz również rzucić okiem na to pytanie (http://stackoverflow.com/questions/37377042/search-in-locality-sensitive-hashing), które opublikowałem? – justHelloWorld