Припустимо, у мене є п'ять наборів, які я хотів би згрупувати. Я розумію, що описана тут техніка 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) Чи я правий, думаючи, що кластери в обох методах насправді є "попередніми кластерами", в тому сенсі, що вони є лише наборами "кандидатських пар"?
(4) Якщо (3) є істинним, чи означає це, що я все-таки повинен виконати пошук всередині кожного "попереднього кластера", щоб розділити їх далі на "справжні" кластери? (що може бути розумним, якщо у мене дуже багато маленьких і досить збалансованих попередніх кластерів, не так вже й інше)