https://github.com/vsancnaj/hybrid-recommendation-system
A hybrid recommendation system combining Item-Based Collaborative Filtering and Content-Based Filtering to suggest skincare products based on user preferences, product ingredients, and ratings. Features a Flask API and an interactive Streamlit Web App for personalized recommendations.
https://github.com/vsancnaj/hybrid-recommendation-system
collaborative-filtering content-based-filtering ecommerce flask-api machine-learning nlp recommendation-system sephora skincare streamlit
Last synced: about 1 month ago
JSON representation
A hybrid recommendation system combining Item-Based Collaborative Filtering and Content-Based Filtering to suggest skincare products based on user preferences, product ingredients, and ratings. Features a Flask API and an interactive Streamlit Web App for personalized recommendations.
- Host: GitHub
- URL: https://github.com/vsancnaj/hybrid-recommendation-system
- Owner: vsancnaj
- Created: 2025-01-31T00:12:24.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-01-31T00:24:56.000Z (3 months ago)
- Last Synced: 2025-01-31T01:19:49.026Z (3 months ago)
- Topics: collaborative-filtering, content-based-filtering, ecommerce, flask-api, machine-learning, nlp, recommendation-system, sephora, skincare, streamlit
- Language: Jupyter Notebook
- Homepage:
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐งด Sephora Skincare Recommender
## ๐ Overview
A **Hybrid Recommendation System** for **Sephora skincare products**, combining:1๏ธโฃ **Item-Based Collaborative Filtering** โ Recommends products based on user ratings.
2๏ธโฃ **Content-Based Filtering** โ Recommends products based on ingredients, categories, and highlights.## ๐ฏ Purpose
- Help users find skincare products tailored to their **preferences, skin type, and concerns**.
- Provide **personalized recommendations** using **machine learning & NLP**.## ๐ Features
โ **Hybrid Recommendation Model** (Item-Based CF + Content-Based Filtering)
โ **Flask API** โ Serves recommendations dynamically
โ **Streamlit Web App** โ User-friendly interface to explore recommendations## ๐ฆ Structure
```
โโโ ๐ data/ # Contains raw dataset files (ignored in Git)
โ โโโ product_info.csv # Product metadata (ID, name, brand, ingredients, categories, price, etc.)
โ โโโ reviews_0-250.csv # User reviews (ratings, skin type, feedback, etc.)
โ โโโ ... # Other review datasets (split for large-scale handling)
โ
โโโ ๐ metadata/ # Stores processed data files
โ โโโ products.csv # Cleaned & processed product metadata
โ โโโ hybrid_similarity.pkl # Precomputed similarity matrix for recommendations
โ
โโโ ๐ skincare/ # Virtual environment (ignored in Git)
โ
โโโ api.py # Flask API for serving recommendations
โโโ app.py # Streamlit Web App interface
โโโ model.ipynb # Jupyter Notebook for training & evaluating models
โโโ requirements.txt # Dependencies for installing the project
โโโ .gitignore # Excludes unnecessary files (datasets, env, cache)
โโโ README.md # Project documentation (this file)
```## ๐ Dataset
- **Product Data:** Contains product ID, brand, ingredients, categories, price, and highlights.
- **Reviews Data:** User ratings, reviews, and skincare attributes (skin type, concerns).
### **1๏ธโฃ Download the Dataset**
1. Go to the [Sephora Skincare Reviews Dataset on Kaggle](https://www.kaggle.com/datasets/nadyinky/sephora-products-and-skincare-reviews/data)
2. Click Download and extract the ZIP file.### **2๏ธโฃ Move Files to data/ Directory**
- After extraction, place the dataset files inside the data/ folder:
```
โโโ data/
โ โโโ product_info.csv
โ โโโ reviews_0-250.csv
โ โโโ reviews_250-500.csv
โ โโโ reviews_500-750.csv
โ โโโ reviews_750-1250.csv
โ โโโ reviews_1250-end.csv
```## ๐ ๏ธ Installation & Setup
### **1๏ธโฃ Install Dependencies**
```bash
pip install -r requirements.txt
```### **2๏ธโฃ Run the Flask API**
```bash
python api.py
```
- API will be available at: http://127.0.0.1:5000/recommend?product_id=P12345&num_recommendations=5### **3๏ธโฃ Run the Streamlit Web App**
```bash
streamlit run app.py
```
- Open in browser: http://localhost:8501
## **๐ How It Works**
1. Users select a Sephora skincare product from the web app.
2. The model generates recommendations using a combination of product similarity (content-based) and user ratings (collaborative filtering).
3. Users receive recommendations with product details (brand, price, and rating).## **๐ ๏ธ Future Improvements**
- Improve recommendations using sentiment analysis on user reviews.
- Personalize results further based on skin type & concerns.
- Deploy API & Web App on AWS/Heroku for public access.