MinHashing vs SimHashing


12

สมมติว่าฉันมีห้าชุดที่ฉันต้องการจัดกลุ่ม ฉันเข้าใจว่าเทคนิค 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

ในทำนองเดียวกันเทคนิค MinHashing ที่อธิบายไว้ในบทที่ 3 ของหนังสือ MMDS:

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

(แต่ละชุดสอดคล้องกับลายเซ็น MH ที่ประกอบด้วย "แบนด์" สามชุดและสองชุดจะถูกจัดกลุ่มหากมีการจับคู่แถบลายเซ็นอย่างน้อยหนึ่งวงดนตรีวงอื่น ๆ จะหมายถึงโอกาสในการจับคู่ที่มากขึ้น)

อย่างไรก็ตามฉันมีคำถามหลายข้อที่เกี่ยวข้องกับสิ่งเหล่านี้:

(1) SH สามารถเข้าใจได้ว่าเป็นวงดนตรีรุ่นเดียวของ MH หรือไม่?

(2) MH จำเป็นต้องใช้ความหมายของการใช้โครงสร้างข้อมูลเช่น Union-Find เพื่อสร้างกลุ่มหรือไม่?

(3) ฉันคิดถูกหรือไม่ว่าทั้งสองกลุ่มเป็น "พรี - คลัสเตอร์" จริง ๆ แล้วในแง่ที่ว่าพวกเขาเป็นเพียงชุดของ "คู่สมัคร"?

O(n2)

คำตอบ:


3

ตามที่อธิบายไว้อย่างถูกต้องเหนือ MinHash และ SimHash ทั้งคู่เป็นของ Local h เซนเซ็นซิทีฟแฮ็ช การอ้างอิง: https://en.wikipedia.org/wiki/Locality-sensitive_hashing

ความแตกต่างที่สำคัญระหว่างทั้งสองคือวิธีจัดการความขัดแย้ง

  1. SimHash ใช้ความคล้ายคลึงกันแบบโคไซน์
  2. MinHash ใช้ดัชนี Jaccard

คำตอบสำหรับคำถามของคุณ:

  1. ไม่พวกเขาใช้เทคนิคการจัดการการชนที่แตกต่างกันเพื่อตรวจสอบความคล้ายคลึงกัน นอกจากนี้ยังมีตัวแปรในฟังก์ชั่นแฮชแบบเดี่ยวสำหรับแฮ็กแบบย่อส่วน แต่ก็ใช้งานได้แตกต่างกัน สำหรับรายละเอียดเพิ่มเติมโปรดดูที่การอ้างอิงต่อไปนี้https://en.wikipedia.org/wiki/MinHash (ตัวแปรที่มีฟังก์ชันแฮชเดียว)
  2. ใช่https://github.com/chrisjmccormick/MinHash/blob/master/runMinHashExample.py
  3. O(nlogn)

SimHash และ MinHash ไม่ใช้ฟังก์ชันความคล้ายคลึงกันเหล่านี้ ฉันคิดว่าวิธีที่ดีกว่าที่จะพูดก็คือพวกมันสร้างไดเจสต์ที่ประมาณฟังก์ชั่นเหล่านี้
Alexey Grigorev

@AlexeyGrigorev ฉันสับสนเล็กน้อย ผมมองเข้าไปในการดำเนินการดังต่อไปนี้สำหรับ 'computeSimilarityFromSignatures' minHash @ ลิงค์ ใช้ | HashedArray (A) & HashedArray (B) | / (จำนวนรายการทั้งหมด)
ปราโมทย์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.