Эффективный способ рассчитать процент сходства между наборами данных - PullRequest
6 голосов
/ 25 апреля 2010

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

Спасибо

1 Ответ

14 голосов
/ 25 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...