Я в настоящее время работаю с Пользовательскими объектами - каждый из которых имеют много объектов Цели. Объекты Цели не являются конкретным Пользователем, то есть, Пользователи могут совместно использовать ту же Цель. Я пытаюсь сформировать способ вычислить "процент подобия" между двумя Пользователями... (т.е. принимаю во внимание, сколько Целей они совместно используют, а также сколько Целей они не совместно используют), у кого-либо есть опыт с этим типом ситуации? Я использую Grails с Mysql, если это полезно.
Спасибо
Стандартный способ сделать это - подобие Жаккара. Если 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.