Skip to content

dereckduran/AmazonRecommenderSystem

Repository files navigation

Amazon Electronics Recommendation Systems

A data science project that builds and compares multiple recommendation algorithms to predict product ratings and recommend electronics to customers based on historical rating data from Amazon.

Project Overview

This project implements and evaluates multiple recommendation system approaches on the Amazon Electronics dataset:

  1. Rank-Based Recommendations - Simple popularity-based approach
  2. Collaborative Filtering (Similarity-Based)
    • User-User Similarity
    • Item-Item Similarity
  3. Matrix Factorization (SVD) - Model-based approach

The goal is to identify the most effective recommendation algorithm for predicting which products users will rate highly.

Dataset

  • Source: Amazon Electronics reviews dataset
  • Original Size: 7,824,482 ratings
  • Processed Size: 65,290 ratings
  • Features:
    • user_id: Unique identifier for each user
    • prod_id: Unique identifier for each product
    • rating: User rating (1-5 scale)
    • timestamp: When the rating was given (not used in modeling)

Data Filtering Criteria:

  • Users with at least 50 ratings
  • Products with at least 5 ratings
  • Final dataset: 1,540 unique users and 5,689 unique products

Key Findings

Model Performance Comparison

Model RMSE Precision Recall F1-Score
Rank-Based N/A N/A N/A N/A
User-User Similarity (Baseline) 1.0260 0.844 0.862 0.853
User-User Similarity (Tuned) 0.9760 0.834 0.897 0.864
Item-Item Similarity (Baseline) 1.0147 0.826 0.853 0.839
Item-Item Similarity (Tuned) 0.9751 0.829 0.892 0.859
SVD (Baseline) 0.9104 0.837 0.880 0.858
SVD (Tuned) 0.9014 0.841 0.880 0.860

Best Performing Model

The tuned SVD (Singular Value Decomposition) model achieved the best results:

  • Lowest RMSE: 0.9014
  • Strong balance between precision (84.1%) and recall (88.0%)
  • Best F1-score: 0.860

Optimal Hyperparameters:

  • n_epochs: 20
  • lr_all: 0.01
  • reg_all: 0.2

Methodology

1. Data Exploration & Preparation

  • Analyzed rating distribution (heavily skewed toward 5-star ratings)
  • Applied filtering to ensure sufficient data density
  • Identified data quality (no missing values after filtering)

2. Rank-Based System

  • Calculated average ratings and review counts per product
  • Recommended top products by popularity with minimum interaction threshold
  • Baseline approach for comparison

3. Similarity-Based Collaborative Filtering

  • User-User: Finds similar users using cosine/MSD similarity
  • Item-Item: Finds similar products
  • Used KNNBasic algorithm with hyperparameter tuning
  • Best parameters: k=30, min_k=6

4. Matrix Factorization (SVD)

  • Decomposes user-item rating matrix into latent features
  • Model-based approach more scalable than similarity-based
  • Tuned through grid search over learning rates, epochs, and regularization

5. Model Evaluation

  • Metrics: RMSE, Precision@10, Recall@10, F1-Score
  • Rating threshold: 3.5 (ratings ≥ 3.5 considered relevant)
  • Top-k recommendations: 10 products per user

Key Insights

  1. Rating Bias: Dataset has significant imbalance with many 5-star ratings, which influences model predictions

  2. Model Comparison:

    • Matrix factorization (SVD) outperforms similarity-based approaches
    • Item-item similarity performs better than user-user for known ratings
    • Tuning hyperparameters improves recall significantly
  3. Prediction Accuracy:

    • Models tend to underestimate actual ratings for known user-product pairs
    • For new user-product combinations, predictions are more conservative

Files

  • Amazon_Electronics_Recommendation_Systems.ipynb - Main Jupyter notebook with all analyses and models
  • AmazonProductRecommendation.html - HTML report/output from notebook
  • README.md - This file

Requirements

  • Python 3.7+
  • pandas
  • numpy
  • scikit-learn
  • surprise (scikit-surprise)
  • matplotlib
  • seaborn

Installation

pip install pandas numpy scikit-learn scikit-surprise matplotlib seaborn

Note: For best results with the surprise library, use Google Colab or ensure numpy version compatibility:

pip uninstall numpy -y
pip install "numpy<2" --force-reinstall

Usage

  1. Mount Google Drive (for Colab):
from google.colab import drive
drive.mount('/content/drive')
  1. Load the notebook and run cells sequentially
  2. Modify user IDs and product IDs to generate custom recommendations

Example: Getting Recommendations

# Get top 5 product recommendations for a user
recommendations = get_recommendations(df_final, 'A3LDPF5FMB782Z', 5, svd_optimized)
print(recommendations)  # Returns list of (product_id, predicted_rating) tuples

Recommendations for Future Work

  1. Hybrid Approach: Combine SVD with content-based filtering using product features
  2. Cold-Start Problem: Implement strategies for new users/products with limited data
  3. Deep Learning: Explore neural network-based approaches (autoencoders, RNNs)
  4. Class Imbalance: Address the skew toward 5-star ratings using techniques like SMOTE
  5. Time-Based Features: Incorporate temporal patterns in rating behavior
  6. A/B Testing: Validate models in production with real user engagement metrics

Author

Dereck Duran

License

This project is for educational purposes.

About

Building a recommender system for customers to suggest electronic products for customers based on previous ratings they've given products. Uses simple sort, Collaborative Filtering and KNN

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors