Neo4J as recommendation engine

80 views
Skip to first unread message

raja s

unread,
Jan 12, 2017, 12:52:23 PM1/12/17
to Neo4j
Hi All

We are planning to build a recommendation engine using Neo4J.
I would like to understand the advantages of using Neo4J vs the other frameworks such as Mahout, Recommendation engines in R/Python/Spark and so on.

Would appreciate if you guyz could share few details on the same.


Thanks

Alessandro Negro

unread,
Jan 13, 2017, 12:50:10 PM1/13/17
to Neo4j
Hi Raja,
I built several recommendation engines using Neo4j, using several approaches and several infrastructure. 
I would like to say that Neo4j is mainly a database that stores data and provides a really efficient way for accessing and navigating connected data.
While Mahout and the other tools allow you to create models on top of which you can provide recommendations.
Starting from these concepts, I try to combine the advantages of both type of systems.
I noticed in all this projects that neo4j is really versatile since it allows to create several types of recommendation engines:

1. The most simple one consists in storing all the data into neo4j (like buying history, social network, and any type of relationships). Then with some cypher queries or composition of them is it possible to provide real time recommenders that access directly to the live data in neo4j. In this case it is not a recommendation based on collaborative filtering approach. You can find some example here: https://github.com/graphaware/neo4j-reco

2. Another approach is to build a custom recommendation engine based on collaborative filtering as plugin for neo4 and store the models on neo4j. Then at recommendation time query the model in neo4j and provide recommendation. This approach works really well when the computation time for the model is reasonable, otherwise it will block completely the server. 

3. Another approach is to externalize the model building using whatever system you prefer (Mahout, Hadoop, SparkML) and storing the model into neo4j. The data source could be neo4j itself or even whatever external datasource or a combination of them. Storing the model in the right way into neo4j allows to provide recommendation in a real fast way.

So to reply to your question, neo4j could be part (may be the core) of a more complex infrastructure for providing recommendation. From some basic solutions to real complex scenario. So no reason to choice if using or not neo4j, just find the right way of using it into your recommendation engine.

I hope that this response helped you,
Alessandro
Reply all
Reply to author
Forward
0 new messages