Hello,
> I am wondering if there is an algorithm that can identify nodes that are
> similar based upon there relationships to other nodes of a different type.
> For example, if I have a graph of people and items purchased, I would like to
> be able to identify people with similar buying habits. I think this is
> different from cliques in that the similar nodes may not know each other. A
> popular application would be how Netflix can retrieve a list of users with
> similar tastes to your own, based upon your movie ratings (a different type
> of node), as opposed to how Facebook suggest friends base upon mutual friends
> (similar types of nodes).
The method I use for similarity determination is as follows.
To rank a vertex relative to all other vertices with respect to a "bundle"
(i.e. shared resources), simply execute an algorithm of the form:
./ou...@label=x]/inV/i...@label=x]/outV[g:except($_)]
This will rank all vertices relative to . (the root) given the label X (e.g.
friend, purchased, likes, visited, etc.).
Modifications to this theme include:
1. X is a set of labels
2. inV is filtered by predicate (e.g. similarity based on the notion of liking
the movie Predator)
3. Use any number of sampling methods if the edges are weighted (i.e. to
account for rating systems)
I say more on these ideas on slides 70-72 in this presentation
http://www.slideshare.net/slidarko/graph-windycitydb2010
Take care,
Marko.
http://markorodriguez.com
http://tinkerpop.com
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user