Recommender System is the name given to any software designed to recommend you objects to purchase, to click on or to watch, which might be attractive to you with a high probability. Development of such systems became a hot topic for software developers and machine learning engineers in the last years. A well-performing recommender system can make significant contributions to various online platforms.
Nowadays, many of us interact with recommender systems on a daily basis. If you have an account in Amazon or Netflix or many similar online services, you may have received suggestions that often fit your interest. This can vary from a movie suggested by Netflix or very various products suggested by Amazon. The targeted advertisements on Facebook or the targeted pop-up advertisements in your browser are also other examples of applications of these systems. Almost no two person receives the exact same advertisements or suggestions on an online platform. All these personalized suggestions and advertistments use recommender systems to find the best match for your interests according to your former ratings, purchases or clicks.
Content-based recommender systems often make use of the explicit features of the users and the items to provide recommendations. In contrary, the Collaborative Filtering recommender systems do not have access to any sort of explicit features and tend to learn the important features of users and items implicitly. The real-world recommender systems are often a hybrid of both approaches.
You can try our movie recommender system demo, by simply giving your own ratings and see what the system will suggest to you. This movie recommender system is based on the implementation of Matrix Factorization algorithm in Python. Matrix Factorization is a collaborative filtering approach which tends to learn implicit features for users and items by factorizing the exiting rating matrix. We expalin this algorithm in more details, in this Google Colaboratory Notebook . We describe how the recommender system problem turns into an optimization problem and how to handle such optimization tasks. Also a step-by-step implementation of this algorithm in Python is provided.