Project goal
Recommend items users are likely to like.
Business value
• Higher engagement
• Higher sales
• Strong ML interview topic
Use cases
• Movies
• Products
• Courses
• Videos
Dataset
User item ratings. Typical columns
• user_id
• item_id
• rating
Approach used
Collaborative filtering. User based similarity.
Step 1. Import libraries
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
Step 2. Load data
df = pd.read_csv("ratings.csv")
df.head()
Example data
user_id | item_id | rating
1 | 101 | 5
1 | 102 | 3
Step 3. Create user item matrix
user_item_matrix = df.pivot_table(
index='user_id',
columns='item_id',
values='rating'
)
Matrix shape
Rows users
Columns items
Values ratings
Step 4. Handle missing values
user_item_matrix.fillna(0, inplace=True)
Why? Cosine similarity needs numbers.
Step 5. Compute user similarity
user_similarity = cosine_similarity(user_item_matrix)
user_similarity_df = pd.DataFrame(
user_similarity,
index=user_item_matrix.index,
columns=user_item_matrix.index
)
Step 6. Find similar users
user_id = 1
similar_users = user_similarity_df[user_id].sort_values(ascending=False)
similar_users.head()
Top result User itself score 1. Ignore it.
Step 7. Recommend items
Get items rated by similar users
similar_users = similar_users[similar_users.index != user_id]
weighted_ratings = user_item_matrix.loc[similar_users.index].T.dot(similar_users)
recommendations = weighted_ratings.sort_values(ascending=False)
Remove already rated items.
already_rated = user_item_matrix.loc[user_id]
already_rated = already_rated[already_rated > 0].index
recommendations = recommendations.drop(already_rated)
recommendations.head(5)
Output Top 5 recommended item IDs.
Step 8. Why cosine similarity
• Focuses on rating pattern
• Ignores scale differences
• Fast and simple
Limitations
• Cold start problem
• Sparse matrix
• No item features
Improvements
• Item based filtering
• Matrix factorization
• Hybrid models
Resume bullet example
• Built recommendation system using collaborative filtering
• Used cosine similarity on user item matrix
• Generated personalized item recommendations
Interview explanation flow
• Difference between content based and collaborative
• Why sparsity hurts
• Cold start solutions
Mini task for you
• Convert to item based filtering
• Add minimum similarity threshold
• Evaluate using precision at K
Double Tap ♥️ For More