Next week I'm going to begin prototyping a recommendation engine for work. I've implemented/completed the Netflix Challenge in Java before (for college) but have no real idea what to use for a production/enterprise level recommendation engine. Taking into consideration everything from a standalone programming language to things like Apache Mahout and Neo4j, does anyone have any advice on how to proceed?
If you merely want to scale up a simple collaborative filter (low rank matrix factorization), I'd suggest looking at graphlab. Another graph-based (or should I say Giraph?) solution is Okapi. Spark's MLLib is another option (details), and it also supports implicit feedback out of the box. Mahout's behind the curve today; I wouldn't bother with it until it is migrated to Spark.
If you want to do something that the libraries don't do, say with regularization, you'll have to roll your own solution in your general purpose programming language of choice. It's not hard to get a prototype running, but you might run into scale problems in production; that's why I recommended solutions that scale easily.
There are also black box recommender systems from commercial vendors but I have no experience with those.
I am developing a recommendation engine for stack overflow (personal project). Check it on http://recommender.im .
It is still a working in progress, but I have a quite functional website working. I am putting there most of the code I used through python notebooks.
Basically I used:
- Frontend: angularJS
- Website backend: flask + scikit-learn
- machine learning and data preparation: python, pandas, scikit-learn
I really like python for data science as the community and libraries are really good.