MinHashing vs SimHashing


12

Giả sử tôi có năm bộ tôi muốn phân cụm. Tôi hiểu rằng kỹ thuật SimHashing được mô tả ở đây:

https://moultano.wordpress.com/2010/01/21/simple-simhashing-3kbzhsxyg4467-6/

có thể mang lại ba cụm ( {A}, {B,C,D}{E}), ví dụ, nếu kết quả của nó là:

A -> h01
B -> h02
C -> h02
D -> h02
E -> h03

Tương tự, kỹ thuật MinHashing được mô tả trong Chương 3 của sách MMDS:

http://infolab.stanford.edu/~ullman/mmds/ch3.pdf

cũng có thể mang lại ba cụm giống nhau nếu kết quả của nó là:

A -> h01 - h02 - h03

B -> h04 - h05 - h06
      |
C -> h04 - h07 - h08
                  |
D -> h09 - h10 - h08

E -> h11 - h12 - h13

(Mỗi bộ tương ứng với chữ ký MH gồm ba "dải" và hai bộ được nhóm nếu ít nhất một trong các dải chữ ký của chúng khớp với nhau. Nhiều băng tần hơn có nghĩa là có nhiều cơ hội khớp hơn.)

Tuy nhiên tôi có một số câu hỏi liên quan đến những điều này:

(1) SH có thể được hiểu là một phiên bản ban nhạc duy nhất của MH không?

(2) MH có nhất thiết ngụ ý việc sử dụng cấu trúc dữ liệu như Union-Find để xây dựng các cụm không?

(3) Tôi có đúng không khi nghĩ rằng các cụm, trong cả hai kỹ thuật, thực sự là "cụm trước", theo nghĩa là chúng chỉ là tập hợp của "cặp ứng cử viên"?

Ôi(n2)

Câu trả lời:


3

Như đã chỉ ra một cách chính xác ở trên MinHash và SimHash đều thuộc về Băm nhạy cảm cục bộ. Tham khảo: https://en.wikipedia.org/wiki/Locality-sensitive_hashing

Sự khác biệt chính giữa hai là cách xử lý va chạm,

  1. SimHash, sử dụng tương tự cosine
  2. MinHash, sử dụng Chỉ số Jaccard.

Trả lời cho những câu hỏi của bạn:

  1. Không. Họ sử dụng các kỹ thuật xử lý va chạm khác nhau để xác nhận tính tương tự. Ngoài ra, có một biến thể trên Hàm Hash đơn cho Min Hash nhưng nó hoạt động khác nhau. Để biết thêm chi tiết, hãy xem tham khảo sau, https://en.wikipedia.org/wiki/MinHash (Biến thể với một hàm băm duy nhất)
  2. Có, https://github.com/chrisjmccormick/MinHash/blob/master/runMinHashExample.py
  3. Ôi(nđăng nhậpn)

SimHash và MinHash không sử dụng các chức năng tương tự này. Tôi nghĩ rằng một cách tốt hơn để nói rằng họ sẽ tạo ra các bản tóm tắt gần đúng các chức năng này.
Alexey Grigorev

@AlexeyGrigorev Mình hơi bối rối. Tôi đã xem xét cách triển khai sau đây cho liên kết @ computeSimilarityFromSignatures '@ của minHash . Nó sử dụng một | HashingArray (A) & HashingArray (B) | / (tổng số mục)
Pramit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.