Skip to content

FilTheo/Music-Recommendation-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Music Recommendation System

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.

DATA

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.

The Algorithm

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.

Examples

Pop Recommendations:

Χωρίς τίτλο5

Classic Rock Recommendations:

Χωρίς τίτλο9

HipHop Recommendations:

Χωρίς τίτλο6

PostRock Recommendations:

Χωρίς τίτλο7

Heavy Metal Recommendations:

Χωρίς τίτλο8

About

A hybrid recommendation system built from scratch. User provides a song and its respective artist as an input and a playlist of similar songs, along with some recommendations for close artists, are produced

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors