Эффективный способ вычислить процент подобия между наборами данных

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

Спасибо

6
задан RyanLynch 24 April 2010 в 23:09
поделиться

1 ответ

Стандартный способ сделать это - подобие Жаккара. Если 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

14
ответ дан 8 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: