Най-доброто решение за препоръка

Ще намеря подходяща функция, за да получа точна прилика между двама души според техните фаворити.

например хората са свързани с тагове и желанието им за всеки етикет ще се съхранява на ръба на възлите на етикета като числови стойности. Искам да препоръчам подобни хора на всеки човек.

Намерих две решения:

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

В Neo4j има функция Cosine, която приема само един вход, докато в горната функция трябва да предам вектори към тази формула. Като:

за "a": a=[10, 20, 45] всяко число показва желанието на човека за всеки етикет. за "b": b=[20, 50, 70]

  1. Корелация на Pearson корелация

Когато сърфирах в мрежата и вашата документация намерих: http://neo4j.com/docs/stable/cypher-cookbook-similarity-calc.html#cookbook-calculate-similarities-by-complex-изчисления

neo4j

Въпросът ми е каква е вашата логика зад тази формула? Каква е разликата между r и H?

Защото на пръв поглед мисля, че H1 или H2 винаги са равни на едно. Освен ако не трябва да взема предвид останалата част от графиката.

Благодаря ви предварително за всякаква помощ.


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


Отговори (3)


Мисля, че целта на H1 и H2 е да нормализират резултатите от свойството times (броя пъти, когато потребителят е ял храната) за видовете храни. Можете да експериментирате с този пример в тази Neo4j конзола

Тъй като споменавате други мерки за сходство, може да се интересувате от този GraphGist, Мерки за сходство за съвместно филтриране с Cypher. Има някои прости примери за изчисляване на корелация на Pearson и сходство на Jaccard с помощта на 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 както следва:

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