Ursula, the owner of the DVD store WBSFLIX, wants to take her store online. She is currently operates in a small town near Berlin and is still surviving thanks to a loyal customer base that appreciates the local atmosphere and, more than anything, the personal recommendations from Ursula.
Ursula is realising that, as her customer base grows, it is difficult for her to find recommendations for each and every customer. With the move to an online store, recommending movies would be almost impossible. She thinks her store could have a design similar to another popular site for movies:
Each one of these rows of movies is a different recommendation system: some of them are more personalised than others.
Ursula has shared her store database with me and working as a freelance Data Scientist my task is to create recommender systems that give users from WBSFLIX relevant content to watch.
- Python: Pandas
- Correlation: Pearson’s Correlation and Cosine Similarity
- scikit-learn
Three recommenders (highlighte in red) and a chatbot.
A popularity-based, non-personalised recommender system that takes as an input the ratings and movies datasets and outputs the best movies based on ratings. Using only movies that have had more than 50 ratings. These movies will appear as the top row of the WBSFLIX site.
A similarity-based, semi-personalised recommender system that takes a movie as an input and then outputs a list of movies that are “similar” to the one inputted based on rating correlations from the user-item matrix. These movies will appear as the second row of the WBSFLIX site.
Function that takes the users userId, and a number (n) and outputs the n most recommended movies based on the cosine similarity of other users. Fully personalised recommender system, which will generate the third row on the WBSFLIX site.
Ursula, asked you whether the similarity-based recommender could be implemented with a more personal touch. Here the user can neter there user ID and the chatbot will recommend a movie based on user-user collaborative filtering.