This repository contains an article recommendation engine built using interaction data from the IBM Watson Studio platform. It implements several machine learning techniques—including Singular Value Decomposition (SVD)—to provide personalized article recommendations based on user behavior.
- 🎥 Demo
- 🧩 Introduction
- 📊 Dataset
- 🎯 Recommendation Methods
- 🚀 Features
- 🗂️ Project Structure
- ⚙️ Installation
- ⚡ Quick Start
- 🌐 Web Application
- 🙏 Acknowledgements
- 📄 License
This project explores user-article interactions to generate personalized article recommendations. It supports multiple strategies—from simple popularity-based methods to matrix factorization techniques—and includes an interactive Streamlit web app for demonstration and exploration.
The system uses the following datasets:
user-item-interactions.csv
: Logs of user interactions with articles.articles_community.csv
: Metadata for each article, including title and description.
The project implements the following recommendation strategies:
-
Rank-Based Recommendations Suggests the most popular articles overall.
-
User-User Collaborative Filtering Recommends articles based on similar users' preferences.
-
Content-Based Filtering Uses TF-IDF on article descriptions to recommend similar articles.
-
Matrix Factorization (SVD) Predicts user-article interactions using latent features learned from the interaction matrix.
- Personalized article recommendations.
- Multiple algorithmic approaches for comparison.
- Streamlit web interface for easy interaction.
- Notebook analysis with HTML export for review.
svd-recommendation-engine/
├── app.py # Streamlit web app
├── project_tests.py # Unit tests
├── README.md # Project documentation
├── requirements.txt # Python dependencies
├── data/
│ ├── articles_community.csv
│ └── user-item-interactions.csv
├── top_5.p # Top-5 recommendation model
├── top_10.p # Top-10 recommendation model
├── top_20.p # Top-20 recommendation model
├── user_item_matrix.zip # Pickled matrix (used for SVD)
├── Recommendations_with_IBM.ipynb # Main Jupyter Notebook
└── Recommendations_with_IBM.html # Notebook HTML version
- Python 3.8 or later
pip
(Python package manager)
Clone the repository and run the app:
git clone https://github.com/omkarbhad/svd-recommendation-engine.git
cd svd-recommendation-engine
pip install -r requirements.txt
unzip user_item_matrix.zip
jupyter nbconvert --execute --to notebook --inplace Recommendations_with_IBM.ipynb
streamlit run app.py
Then visit: http://localhost:8501
- Enter a user ID (1–5148) and choose a recommendation model.
- View top-N personalized recommendations.
- Select any article and get content-based similar suggestions.
- Read the full analysis in the HTML-exported Jupyter notebook.
- Udacity – Data Scientist Nanodegree Program
- IBM – For the dataset and project foundation
- Streamlit – For the interactive app framework
Licensed under the MIT License.