Hello,
I have a presentation on will be putting on Slideshare on Monday the 26th. I
discuss, in depth, numerous recommendation algorithms, execution times, and
techniques to modify/augment such algorithms. I will post the presentation URL
to this list on Monday.
For your current question, in short, in Gremlin, this is how I would do basic
collaborative filtering over a graph:
(./ou...@label='likes']/inV)[g:assign('$x')]/i...@label='likes']/outV[g:except($_)]/ou...@label='likes']/inV[g:except($x)]
In natural language, determine what I like, determine who else likes those
things that are not me (those people that share more in common with me will
have more traversers at their vertex). Finally, what do those people like that
I don't already like (weighted by more similar people like that same things).
This is basic collaborative filtering and the presentation I will provide on
Monday has numerous manipulations to this basic theme.
Take care,
Marko.
http://markorodriguez.com
http://tinkerpop.com
On Jul 24, 2010, at 7:14 AM, veggen wrote:
>
> It's a fairly typical recommendation scenario: a user is looking at an item
> and gets suggestions for other items based on the number of users that like
> this item liking those other items also.
>
> So, I'm trying to implement this using Neo4j. Obviously, the graph contains
> user nodes and item nodes connected by the "likes" relationship. Currently,
> I'm not aware of any direct way to count in Neo, so I was thinking of
> implementing this requirement as follows (in pseudo code):
>
> *have a hashmap to store count per item (<itemId, count>)
> *start from the item the user is looking at
> *traverse "likes" relationships, in both directions, breath-first, 2 levels
> deep
> *for every item node encountered, increment the count for that node
>
> It is vital for this algorithm to be as fast as possible, so I'm asking if
> there's any better way to implement it? Also, do you think it would work
> faster in Neo compared to a traditional RDbMS (with a user-table, item-table
> and an interconnecting table)?
>
> Thanks for any advice :)
> --
> View this message in context:
> http://neo4j-user-list.438527.n3.nabble.com/Recommendation-based-on-likes-tp992069p992069.html
> Sent from the Neo4J User List mailing list archive at Nabble.com.
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user