Лучшее решение для рекомендации

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

например, люди подключены к тегам, и их желание использовать каждый тег будет храниться на краю узлов тегов в виде числовых значений. Я хочу порекомендовать подобных людей каждому человеку.

Я нашел два решения:

  1. Косинусное сходство

В Neo4j есть функция косинуса, которая просто принимает один вход, в то время как в приведенной выше функции мне нужно передать векторы в эту формулу. Такие как:

для "a": a=[10, 20, 45] каждое число указывает на желание человека к каждому тегу. для «б»: б = [20, 50, 70]

  1. Корреляция Пирсона

Когда я просматривал сеть и вашу документацию, я нашел: расчеты" rel="nofollow">http://neo4j.com/docs/stable/cypher-cookbook-similarity-calc.html#cookbook-calculate-similarities-by-complex-calculations

neo4j

Мой вопрос: какова ваша логика за этой формулой? В чем разница между r и H?

Потому что на первый взгляд я думаю, что H1 или H2 всегда равны единице. Если только я не должен рассматривать остальную часть графика.

Заранее благодарим вас за любую помощь.


person Mahsa Hassankashi    schedule 11.12.2015    source источник


Ответы (3)


Я думаю, что цель H1 и H2 состоит в том, чтобы нормализовать результаты свойства times (количество раз, когда пользователь ел пищу) для разных типов продуктов. Вы можете поэкспериментировать с этим примером в этой консоли Neo4j.

Поскольку вы упомянули другие меры сходства, вас может заинтересовать этот GraphGist, меры сходства для совместной фильтрации с помощью Cypher. В нем есть несколько простых примеров расчета корреляции Пирсона и сходства Жаккара с использованием Cypher.

person William Lyon    schedule 11.12.2015
comment
Спасибо @william, эти ссылки, кажется, именно то, что я хотел - person Mahsa Hassankashi; 13.12.2015

Этот пример немного затрудняет понимание того, что происходит. В этом примере H1 и H2 оба равны 1. В лучшем примере будет показано, как каждый человек ест разные виды пищи, чтобы вы могли увидеть изменение значения H. Если бы «я» также ел «овощи», «пиццу» и «хот-доги», их H было бы равно 4.

person adam    schedule 11.12.2015

Не могу помочь вам с Neo4J, просто хочу отметить, что сходство косинусов и коэффициент корреляции Пирсона - это, по сути, одно и то же. Если вы расшифруете различные обозначения, вы обнаружите, что единственная разница заключается в том, что Пирсон сначала центрирует векторы по нулю. Таким образом, вы можете определить Пирсонов следующим образом:

Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))
person larspars    schedule 14.12.2015
comment
эти две функции одинаковы с небольшой разницей, которая заключается в точности их результата. RMSE косинуса меньше, чем у Пирсона, поэтому косинус имеет точный результат. - person Mahsa Hassankashi; 14.12.2015