Стандартный способ сделать это - подобие Жакара. Если A - это набор целей первого пользователя, а B - набор целей второго пользователя, сходство по Джакарду:
#(A intersect B)/#(A union B)
Это количество целей, которые они разделяют, деленное на общее количество голосов, которые они имеют вместе (считая целей, которые они разделяют только один раз). Таким образом, если у первого пользователя есть цели A = {1,2,3}, а у второго пользователя есть цели B = {2,4}, то это так:
A intersect B = {2}
A union B = {1,2,3,4}
#(A intersect B)/#(A union B) = 1/4
Сходство Жакара всегда между 0 (у них нет общих целей) и 1 (у них одинаковые цели), поэтому вы можете получить процент, умножив его на 100.
http://en.wikipedia.org/wiki/Jaccard_index