Interessanter Ansatz, wäre ich jetzt nicht drauf gekommen. Aber nützt das hier?
Sei mal ObdA angenommen, dass die IDs der Mitglieder von 1 bis M fortlaufend wären. Dann müsste man pro Gruppe einen String der Länge M betrachten, der an jeder Position i eine 1 oder 0 hat, je nach dem, ob das Mitglied mit der ID i Gruppenmitglied ist oder nicht.
Wenn zwei Gruppen identische Mitglieder haben, ist die Hammingdistanz zwischen den Gruppen 0. Das müsste man als 100% ansehen. Wenn g 70 Mitglieder hat und h 350, und die Gruppen keine gemeinsamen Mitglieder haben, ist die Hammingdistanz 420. Aber wenn die Gruppen p und q je 40 Mitglieder haben und ebenfalls disjunkt sind, beträgt ihre Hammingdistanz 80. Beide Gruppen sind komplett unähnlich, aber die Hammingdistanz ist verschieden. Man muss die Distanz also normieren.
Dafür könnte man z.B. durch die Summe der Gruppengrößen teilen. Bei disjunkten Gruppen bekommt man dann 1 - das müsste man als 0% ansehen. Mit G(i)=Größe der Gruppe i wäre die Ähnlichkeit also
S(i,j) = 1 - (H(i,j) / (G(i) + G(j))
Bei 35 gemeinsamen Mitgliedern wäre die Hammingdistanz (70-35)+(420-35)=350, teilt man das durch die Summe der Gruppengrößen ergibt sich 16,7% und damit wären wir wieder bei meinem Mittelwertansatz von oben :)
Man bräuchte jetzt noch einen Hamming-Algorithmus, der für lange Strings funktioniert und schneller als in O(n²) läuft, um meinen naiven Ansatz von oben zu ersetzen. :)
Rolf