MinHashing 및 SimHashing


12

클러스터링하려는 5 개 세트가 있다고 가정합니다. SimHashing 기술이 여기에 설명되어 있음을 이해합니다.

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

예를 들어 결과가 다음과 같은 경우 세 개의 클러스터 ( {A}, {B,C,D}{E})를 생성 할 수 있습니다 .

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

마찬가지로 MMDS 책의 3 장에서 설명한 MinHashing 기술은 다음과 같습니다.

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

결과가 다음과 같은 경우 동일한 세 개의 클러스터를 생성 할 수도 있습니다.

A -> h01 - h02 - h03

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

E -> h11 - h12 - h13

(각 세트는 3 개의 "밴드"로 구성된 MH 서명에 해당하며, 서명 밴드 중 하나 이상이 일치하면 두 세트가 그룹화됩니다. 밴드가 많을수록 일치 가능성이 높아집니다.)

그러나 나는 이것과 관련된 몇 가지 질문이 있습니다.

(1) SH 는 MH 의 단일 대역 버전 으로 이해 될 수 있습니까?

(2) MH는 반드시 Union-Find와 같은 데이터 구조를 사용하여 클러스터를 구축해야합니까?

(3) 두 기술 모두에서 클러스터가 단지 "후보 쌍"이라는 의미에서 실제로 "사전 클러스터 (pre-clusters)"라고 생각 하는가?

(4) (3)이 참인 경우, 각 "사전 클러스터"내 에서 검색 을 수행하여 "실제"클러스터로 더 분할해야 한다는 것을 의미 합니까? (작고 균형 잡힌 사전 클러스터가 많으면 합리적 일 수 있습니다)영형(2)

답변:


3

위에서 정확하게 지적했듯이 MinHash와 SimHash는 모두 Locality Sensitive Hashing에 속합니다. 참조 : https://en.wikipedia.org/wiki/Locality-sensitive_hashing

이 둘의 주요 차이점은 충돌 처리 방식입니다.

  1. SimHash, 코사인 유사성을 사용합니다
  2. MinHash는 Jaccard Index를 사용합니다.

질문에 대한 답변 :

  1. 아니요. 서로 다른 충돌 처리 기술을 사용하여 유사성을 검증합니다. 또한 Min Hash의 단일 해시 함수에는 변형이 있지만 다르게 작동합니다. 자세한 내용은 https://en.wikipedia.org/wiki/MinHash (단일 해시 함수가있는 Variant)를 참조하십시오.
  2. 예, https://github.com/chrisjmccormick/MinHash/blob/master/runMinHashExample.py
  3. 클러스터링하는 동안 이진 검색 형식을 수정 하면 복잡성을 로 줄일 수 있다고 생각합니다 .영형(로그)

SimHash와 MinHash는 이러한 유사 기능을 사용하지 않습니다. 나는 그들이이 기능에 근사한 다이제스트를 만드는 것이 더 나은 방법이라고 생각합니다.
Alexey Grigorev

@AlexeyGrigorev 조금 혼란 스러워요. minHash 'computeSimilarityFromSignatures'@ link에 대한 다음 구현을 조사했습니다 . | HashedArray (A) & HashedArray (B) | / (총 항목 수)를 사용합니다.
Pramit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.