Hiện tại tôi đang nghiên cứu cách tìm một người hàng xóm gần nhất bằng cách sử dụng băm nhạy cảm theo địa phương. Tuy nhiên trong khi tôi đang đọc các bài báo và tìm kiếm trên web, tôi tìm thấy hai thuật toán để thực hiện việc này:Hai thuật toán để tìm hàng xóm gần nhất với băm nhạy cảm về địa phương, cái nào?
1- Sử dụng L số bảng băm với L số ngẫu nhiên các chức năng LSH, do đó tăng cơ hội hai tài liệu tương tự có cùng chữ ký. Ví dụ: nếu hai tài liệu tương tự 80%, thì có 80% cơ hội là chúng sẽ có cùng chữ ký từ một hàm LSH. Tuy nhiên, nếu chúng ta sử dụng nhiều hàm LSH, thì có cơ hội cao hơn để nhận được cùng một chữ ký cho các tài liệu từ một trong các hàm LSH. Phương pháp này được giải thích trong wikipedia và tôi hy vọng hiểu biết của tôi là chính xác:
http://en.wikipedia.org/wiki/Locality-sensitive_hashing#LSH_algorithm_for_nearest_neighbor_search
2- Các thuật toán khác sử dụng một phương pháp từ một bài báo (phần 5) gọi là: Sự tương đồng Estimation Techniques từ vị trí còn thuật toán bởi Moses S. Charikar. Nó dựa trên việc sử dụng một hàm LSH để tạo chữ ký và sau đó áp dụng các hoán vị P trên nó và sau đó sắp xếp danh sách. Trên thực tế tôi không hiểu phương pháp rất tốt và tôi hy vọng nếu ai đó có thể làm rõ nó.
Câu hỏi chính của tôi là: tại sao mọi người lại sử dụng phương pháp thứ hai thay vì phương pháp đầu tiên? Như tôi thấy nó dễ dàng hơn và nhanh hơn.
Tôi thực sự hy vọng ai đó có thể trợ giúp !!!
EDIT: Thực ra tôi không chắc chắn nếu @ Raff.Edward được trộn giữa "đầu tiên" và "giây". Bởi vì chỉ có phương pháp thứ hai sử dụng một bán kính và đầu tiên chỉ sử dụng một gia đình băm mới g bao gồm các gia đình băm F. Vui lòng kiểm tra các liên kết wikipedia. Họ chỉ sử dụng nhiều hàm g để tạo ra các chữ ký khác nhau và sau đó cho mỗi hàm g nó có một bảng băm tương ứng. Để tìm người hàng xóm gần nhất của một điểm, bạn chỉ cần để cho điểm này đi qua các hàm g và kiểm tra các bảng băm tương ứng cho các xung đột. Vì vậy, làm thế nào tôi hiểu nó như là chức năng nhiều hơn ... nhiều cơ hội cho va chạm.
Tôi không tìm thấy bất kỳ đề cập nào về bán kính cho phương pháp đầu tiên.
Đối với phương pháp thứ hai, chúng chỉ tạo một chữ ký cho mỗi vectơ đặc trưng và sau đó áp dụng các hoán vị P trên chúng. Bây giờ chúng ta có P danh sách hoán vị trong đó mỗi ho chứa n chữ ký. Bây giờ họ sắp xếp mỗi danh sách từ P. Sau khi cho điểm truy vấn q, chúng tạo chữ ký cho nó và sau đó áp dụng các hoán vị P trên nó và sau đó sử dụng tìm kiếm nhị phân trên mỗi danh sách P được hoán vị và sắp xếp để tìm chữ ký tương tự nhất truy vấn q. Tôi đã kết luận điều này sau khi đọc nhiều bài báo về nó, nhưng tôi vẫn không hiểu tại sao bất cứ ai sử dụng một phương pháp như vậy bởi vì nó không có vẻ nhanh chóng trong việc tìm kiếm khoảng cách ham mê!
Đối với tôi, tôi chỉ cần làm như sau để tìm người hàng xóm gần nhất cho một điểm truy vấn q. Với một danh sách chữ ký N, tôi sẽ tạo chữ ký cho điểm truy vấn q và sau đó quét danh sách N và tính toán khoảng cách hamming giữa mỗi phần tử trong N và chữ ký của q. Vì vậy, tôi sẽ kết thúc với hàng xóm gần nhất cho q. Và phải mất O (N) !!!
bạn có thể vui lòng đọc phiên bản đã chỉnh sửa của bài đăng không? –
Tôi đã trả lời chỉnh sửa của bạn. Tôi không bối rối, bài viết trên wiki không được tổ chức tốt để giải thích những gì đang xảy ra. –
@ Raff.Edward Bạn có biết thực hiện src mở nào của phương pháp 2 không? Bạn có thể vui lòng đưa ra một cái nhìn về câu hỏi [this] (http://stackoverflow.com/questions/37377042/search-in-locality-sensitive-hashing) mà tôi đã đăng không? – justHelloWorld