In case code not showing up (GitHub issue) try:
https://nbviewer.jupyter.org/github/FilTheo/Music-Recommendation-System/blob/master/Code/Music%20Recommendation%20System.ipynb
The project is about a model which outputs a new playlist given an input song and its respective artist. (The working version of the project updates the playlist as users pick extra songs)
The model returns a complete playlist instead of a single song to deal with the uncertainty originating from the unique musical taste of each individual. It is very hard, even for a human, to perfectly recommend a single song given just one hint. The idea is that by proposing a full playlist users will be forced to pick more songs providing additional information to the algorithm to improve its predictions
The recommendation system is based on a Hybrid Approach combining the advantages of both content-based and collaborative filtering techniques. In particular, it combines information from three different sources.
First, tags (ie keywords) giving a representative description of each artist are scrapped from LastFM. Extensive feature engineer (Noise removal, tags combination through similarity measures, hierarchical representations, Association Rule Mining) took place to reduce the number of total tags and convert them to informative values. For details refer to supplementary material (report, presentation, code)
Second, metadata for each song is extracted from Kaggle. Metadata include values such as Energy, Loudness, Danceability, etc.
Lastly, for collaborative filtering, the total number of times 75.000 users streamed a collection of songs is also considered.
A brief introduction to the algorithm used for recommending a playlist.
Step 1: Find the artists closer to the user's given artist Most people prefer to stick to their selected music genre. A person picking a HipHop artist would not like a suggestion from a Metal band. Thus, I first identify a candidate list with the most similar artists to user's preferences (in terms of most similar tags)
Step2: Filter out complete irrelevant songs based on the song's metadata. For example, if a user picks a sad acoustic song he probably wants to stay in this mood (we filter out danceable, high energy songs) A user picking a techno song does not want a rock ballad.
Step3: Item-Based Collaborative Filtering Item-based similarity based on user reviews is considered and the top-20 songs are proposed.
Pop Recommendations:
Classic Rock Recommendations:
HipHop Recommendations:
PostRock Recommendations:
Heavy Metal Recommendations:




