DEV Community

Discussion on: recomendation algorithms: how can you recommend songs based on a user's past listening history?

Collapse
 
stereobooster profile image
stereobooster

I would try to use Graph Database for it. Example

Jane likes song A
Jane likes song B as well
Joe likes song A

So query would look like:

Get all liked songs for Joe, get all users who like the same songs (at least N same songs), get top N songs that those users like and Joe haven't marked as liked.

Main trick here, that this request would kill any relational DB (on join on join...), but GraphDB can handle it just fine.

Collapse
 
imjacobclark profile image
Jacob Clark

Thanks but this is collaborative filtering and I'm looking for simply a content filtering approach based on a sole user's past activity.

Collapse
 
stereobooster profile image
stereobooster • Edited

It's clear that you could use Genre to support this type of algorithm, the more times a user listenes to a genere, it has a higher likelihood of being suggested from the Charts.

Try Pandora.fm approach. They categorise each song: instruments used, specific vocals or specific guitar rifts etc. Now you have similarity of each song based on N dimensions. As far as I know categorisation is done by humans, not by machines.

UPD quick internet search Automatic Musical Instrument Recognition and Related Topics

Having N dimension you can find similarity of objects with ML algorithm for example with Decision Trees.