Recommendation Engine
.NET collaborative filtering framework
Real-time product recommendation system
features
- Pure C# recommendation engine: port of Apache Mahout "Taste" Recommendation/Collaborative filtering Framework with dependencies (about 800kb of code) and unit test (283 original tests are passed). Does not depend on 3rd party libraries or native applications.
- Mature framework for storage, evaluation, online and offline computation of recommendations
- Supports all major types of production-ready recommenders: User-based, Item-based, SVD-based
- Similarity in users or items: Euclidian distance, Surprise and Coincidence (LLR), Tanimoto coefficient, Pearson correlation and others
- Designed for performance, scalability and flexibility: optimized implementations of in-memory structures and high-precision math functions (inlcuding Mersenne Twister random generator), parallel implementations of SVD-factorizers, computation cache support etc.
- Open source: NReco.Recommender on GitHub (AGPL license)
- Supports both full .NET Framework and .NET Core, can be used as REST microservice from any web application
- Examples:
- MovieLensMvc: MVC app that makes recommendations by MovieLens dataset
- SqlDbSource: item-to-item recommendations by data from SQL database ('northwind' orders)
- Evaluator: WinForms utility that helps to evaluate recommendation engine parameters (like similarity function) for both user-based and item-based recommendation algorithms.
download and pricing
AGPL License
Recommender examples pack
C# examples, NO support, AGPL license (for non-commercial/evaluation/testing purposes only) |
Download for Free |
Standard
Recommender commercial license pack
Includes: perpetual, royalty-free, per-developer license for component usage/redistribution (without AGPL limitations), 1 year email support subscription. |
|
SaaS Deployment
Recommender SaaS license pack
Includes: perpetual, single-deployment license for usage in SaaS application, 1 year email support subscription. |
$499 - Order Now |
quick purchase process
- 1 Choose a package
- 2 Pay online
- 3 Download the package
NReco Recommender is a recommendation system library that takes users' behaviour (usage statistics, preferences, ratings) and from that tries to find items that other users might like.
Collaborative filtering algorithms are especially effective for recommending products, music, books, videos etc.
how to use
- Add reference to NReco.Recommender.dll assembly
OR install NReco.Recommender nuget package - Configure recommendation engine:
var model = new FileDataModel("data.csv"); var similarity = new LogLikelihoodSimilarity(model); var neighborhood = new NearestNUserNeighborhood(3, similarity, model); var recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); var recommendedItems = recommender.Recommend(userId, 5);
-
Have a question?What's next?
Feel free to ask.- Download recommender C# examples
- Review framework API reference
try it online
Select your favourite films (recommendations by MovieLens dataset):Terminator 2: Judgment Day (1991) |
Aliens (1986) |
frequently asked questions
- Choose what do you want to recommend; this may be anything like products, articles, books, movies, cars, tasks etc
- Collect or infer users preferences from existing data (transactions in SQL database, logs etc): pairs like
userID,itemID
oruserID,itemID,score
- Evaluate and choose appropriate recommendation algorithm and its parameters; NReco.Recommender includes Evaluator GUI utility that simplifies this process.
- Integrate recommendation engine into your application: make automatic predictions about user interests in the real time, or pre-calculate recommendations into simple (item) → (recommended items) hash table.
Until you know that you need a concrete
IRecommender
implementation, in most cases you can choose between the following generic implementations:
-
User-based: recommended items are based on the similarity between two users. Use this recommender
if you want to get personalized recommendation and already know concere user's preferences; recommendation
is based on assumption that 2 similar users "share" their preferences in items. This approach works fine
for recommening movies, TV-shows, music etc.
-
userID,itemID
GenericBooleanPrefUserBasedRecommender -
userID,itemID,score
GenericUserBasedRecommender
-
-
Item-based: recommended items are based on the similarity between items. This kind of recommendation
is usedful if you know only the fact that new user is interested in concrete item: then, it is possible
to recommend items that are similar to this concrete item (by preferences data) like Amazon does.
This approach often used in e-Commerce; also it is possible to pre-calculate all recommendations in background (as usually
product catalog has limited number of items) and show them without affecting website performance at all.
-
userID,itemID
GenericBooleanPrefItemBasedRecommender -
userID,itemID,score
GenericItemBasedRecommender
-
NReco.Recommender free version (available on
github
) is published under AGPL license; it can be used for free in GPL projects and for educational/testing purposes.
Buying a commercial license is mandatory as soon as you develop commercial activities distributing the NReco Recommender inside your product or deploying it on a network without disclosing the source code of your own applications under the AGPL license.
These activities include:
Buying a commercial license is mandatory as soon as you develop commercial activities distributing the NReco Recommender inside your product or deploying it on a network without disclosing the source code of your own applications under the AGPL license.
These activities include:
- offering paid services to customers as an ASP
- making recommendations in the cloud or in a web application
- shipping NReco Recommender with a closed source product
documentation
- Book Mahout in Action PDF version
- Part 1 is about making recommendations: what is collaborative filtering, how to make recommendations with Mahout. All code snippets are applicable to Recommender. This intoduction is strongly recommended if you're new to collaborative filtering and recommendation algorithms.
- Get Started Mahout-based collaborative filtering engine overview
- The best entry point into Mahout recommender engine. Everything in this article is applicable to NReco Recommender.
- How-To Creating a User-Based Recommender in 5 minutes
- Quick how-to that explains how to use Mahout CF framework on practice.