Created by: NicolasHug
Disclaimer: I'm the author of surprise ;)
What is this Python project?
Surprise is a Python scikit building and analysing recommender systems.
Main features:
- Give the user perfect control over his experiments. To this end, a strong emphasis is laid on documentation, which we have tried to make as clear and precise as possible by pointing out every details of the algorithms.
- Alleviate the pain of Dataset handling. Users can use both built-in datasets (Movielens, Jester), and their own custom datasets.
- Provide various ready-to-use prediction algorithms such as baseline algorithms, neighborhood methods, matrix factorization-based ( SVD, PMF, SVD++, NMF), and many others. Also, various similarity measures (cosine, MSD, pearson...) are built-in.
- Make it easy to implement new algorithm ideas.
- Provide tools to evaluate, analyse and compare the algorithms performance. Cross-validation procedures can be run very easily, as well as exhaustive search over a set of parameters.
What's the difference between this Python project and similar ones?
- According to any google search, crab is the go-to package for RS. But it actually only has one prediction algorithm (k-NN), no evaluation tools, no doc, and has been dead for three years.
- The second most popular package I think is Recsys. Provides with two prediction algorithms (k-NN and SVD) but is also unmaintained. Evaluation tools are very minimal.
- There's GraphLab, which is not free and needs license registration. I've heard good feedback about it, but never used it.
- LightFM. This package is focused on a specific set of algorithms (all Boolean-valued) and does not provide with other classical approaches.
I think what makes Surprise is it's doc, the variety of prediction algorithms and the ability to evaluate the performances of algorithms easily (cross-validation, GridSearch, etc.). This makes it a useful tool to get your hands dirty quickly with recommender systems.
--
Anyone who agrees with this pull request could vote for it by adding a