This project implements a content-based recommender system for Spotify music tracks using Linear Algebra techniques, specifically Singular Value Decomposition (SVD) and Principal Component Analysis (PCA). The system analyzes a dataset of 300 Spotify songs and provides personalized song recommendations based on their audio features.
The goal of this project is to develop a recommender system that suggests similar songs to users based on the audio characteristics of the songs they enjoy. The following tasks were accomplished:
- Preprocessed a dataset of 300 Spotify songs, consisting of 14 audio features such as danceability, energy, and tempo.
- Applied SVD to reduce the dimensionality of the dataset from 14 columns to 10 principal components.
- Computed the top 3 song recommendations for each song in the dataset using the reduced principal components and cosine similarity.
The dataset is sourced from here.
To run this project locally, follow these steps:
- Clone the repository:
git clone https://github.com/your-repo/music-recommender.git
- Ensure you have standard Data Science and Machine Learning libraries downloaded.
- Run PCA.ipynb. This will create pca_data.csv, where the reduced data will be.
- Next run SVD_Recomender.ipynb. It is reccomended to use a small subset of the data imported from (3) as SVD takes a long time to compute.
- At the bottom of the file, the parameter id of function find_reccs is the row of the song you are trying to find reccomendations for.
- Finally, the reccomendations are the bottom of the file. =
- Implement accuracy measure for reccomender system. Perhaps benchmark against existing reccomender systems?
- Develop UI for reccomender system
This project was created by Ishita Jain and Sadhvi Narayanan. Contributions are welcome! If you find any issues or have suggestions for improvement, please open an issue or submit a pull request.
This project is licensed under the MIT License.
We would like to thank our instructors and peers for their guidance and support throughout this project.