Tracks that you might like

Overview

ListenBrainz processes each user’s listening history once a week to generate recommended recordings. These recordings are not final recommendations but one of the components that we will use in future to generate recommendations for users using our recommendation tool. ListenBrainz uses Apache Spark to process the user listening history – if you’d like to know more about this, please see our ListenBrainz Spark Architecture to understand the general flow of data.

The recommended tracks are based on user-user similarity. ListenBrainz uses Collaborative Filtering to identify recordings that a user might like on the basis of reactions by similar users.

Feed your MusicBrainz Id or user name in the following URL to get your recommended tracks:
https://listenbrainz.org/recommended/tracks/<user-name>

Here is an example of a working url:
https://listenbrainz.org/recommended/tracks/rob

Categorization of recommended tracks

The recommended tracks are categorized on the basis of the type of artists they belong to. The two categories are:

  • Top Artist: The top artist recommended tracks are based on the top artists listened to by the user in the last week.

  • Similar Artist: The similar artist recommended tracks are based on the artists similar to top artists listened to by the user in the last week.

The similar artist data is generated using our artist-artist relationship dataset, which you can download from our FTP site.

Factors influencing recommended tracks

The recommended tracks feature of ListenBrainz is developing gradually. Here are a few factors that influence the recommended tracks which will help you understand the nature of your playlists.

  • User listening habit: Diverse listening habits will lead to a diverse playlist. If the artists listened to by the user in a week are limited, the associated pool of tracks will shrink leading to top artist recommended tracks being centred around a few artists. It will also affect the diversity of similar artist recommended tracks since limited top artists mean limited similar artists.

  • Artist popularity in ListenBrainz: The tracks associated with the top and similar artists are fetched from listens submitted to ListenBrainz. Tracks of artists that are popular in ListenBrainz will show up more in the playlist. Even if you have listened to an artist many times, it is highly probable that the tracks associated with that artist will not show up in your playlist given the artist is not popular in ListenBrainz.

  • Data known to ListenBrainz but unknown to MusicBrainz: Since we filter listens based on MusicBrainz IDentification (MBID) if the listens submitted to ListenBrainz don’t exist in MusicBrainz they will not show up in the playlists. So even if you have listened to a track/artist many times, the track/artist will not show up in your playlist given the track/artist does not exist in MusicBrainz.

  • Artist relation is not well defined on collaborations: The artist relation used to fetch similar artist does not contain collaborations. So if you have listened to collaborations, no similar artist will be fetched for the collaboration. We are working on getting the individual artists from the collaborations and fetching similar artists for each of them.

  • User count in ListenBrainz: User-User similarity and the overall quality of recommended tracks greatly depends on active users. More the number of active users, better the user-user similarity and in turn better-recommended tracks.

Note: Users that are inactive in the week in which recommended tracks are generated will not have any playlist for that week.

What do you think?

Our system for creating recommended tracks is slowly taking shape. Please remember that these tracks are not really recommendations just yet – they are a building block for future work, but they are quite important to get right. What is your reaction to your list of recommended tracks? Do you feel that those are good tracks you’d like to see in a playlist or do you think they are off the mark?

14 Likes

This is a cool new feature to make LB actually useful, thanks a lot for this. Looking forward to see this evolve.

What I would think would be cool feature would be generating and updating a Spotify playlist from this data if one has their Spotify account linked to LB. So one could play directly in Spotify their “ListenBrainz Weekly Recommended Tracks” playlist, at least for the songs found there.

Also, is there an API endpoint to query the recommendations? That way other third party applications could make use of the recommendations and could offer playlist features like described above.

6 Likes

Spotify playlist: Noted :slight_smile:

Endpoint: https://api.listenbrainz.org/1/cf/recommendation/user/<user_name>/recording?artist_type=top&count=100

3 Likes

Similar artists could be a bit more varied :slight_smile: There’s a lot of the same for me (like 10 tracks are by the same artist), while I would maybe hope for the top track of each without repetition :slight_smile:

8 Likes

Awesome!

I assume the based on songs listened to last week is just for now? I will often listen to just a few albums or artists in a week so it’s not that useful, I’m more interested in overall, with a stronger weighting on stuff listened to recently.

With that in mind I listen to some really different genres. Not sure how this would fit in and I haven’t seen anyone else do it but I would love to see recommendations split into some different groups. e.g. heavy music and mellow music (the algorithm wouldn’t have to tell me genres just give groupings that it’s noticed are quite different/correlates with very different user-user similarity groups). Sorry if that’s outside the scope of this post, loving that we’re at this point :slight_smile:

6 Likes

Good to see the feature launched.

My results are not that great match.
The Top artists for me is mostly The Beatles (80% results?) with a few The Chemical Brothers, Foo Fighters, Alt-J, Thundercat.
These are artists that I play but I would like more variation and not just the artists with a large catalogue of music.
Could we have a filter applied to the results that limit each artist to 1-10% or the results so we get more variation.
Could you generate 1000 results and randomly select from that list instead of just the top matches?

The similar artists does not match me.
Can we have a down vote to select artists and releases you don’t want?

6 Likes

Thanks for your feedback – we’re keenly aware of the fact that artist results are not varied enough – thankfully we’ve already started working on improving that. To see all of your recommended tracks, have a look at the API endpoint:

https://api.listenbrainz.org/1/cf/recommendation/user/<user_name>/recording?artist_type=top&count=100

I’ll post a more general comment in a second that addresses our current reasoning for improving the artist spread of the recommended tracks. Read on please!

2 Likes

I’ve been thinking about this feature and how we can improve things. The first step is to fix some internal data matching limitations that reduce the number of artists we can match. This work is already in progress and should be out sometime next week, I hope.

But, let me talk about these new features in a bit more detail and suggest how we can ask all of you for some help in improving this. In the process of creating this feature, we need to provide a pile of data for the Collaborative Filtering algorithm. I’ll try and not go into the finer details of how the CF algorithm works and what we need to do in order to get this all to work. Instead I’ll describe how we can crowd source new data sets that could allow us to create more recommended tracks than just Top Artist and Similar Artist.

In particular, we nearly have all the pieces in place that would allow us to take a list of recording MBIDs, which defines a clear subset of all the available recordings on MB, and then build recommended recordings for that subset of recordings.

The example that has been bouncing around in my head is building a genre based recommender. If we fetch all of the recording MBIDs that have been tagged with a specific genre (say “punk”) and then build the data data sets needed to feed the CF algorithm, we could create sets of recommended recordings that basically says “here is a list of punk recordings that you haven’t listened to in the past X weeks, but we think you might like”.

Of course this doesn’t need to be tied to a specific genre/tag. We could make this work for any collection of recordings. Which leads me to ask:

  1. Does anyone have a list of recordings in mind that might make for a fun recommender?
  2. Would you be interested in creating such a list of working with us to test out the results that come out the other end?

Thanks!

2 Likes

Where does development of this feature take place? IRC? Github?

IRC channel for team discussions: #metabrainz

GitHub for development: listenbrainz-spark

1 Like

Doesn’t work for me, the tracks page is empty and the artist pages show me a 500 Internal Server Error. On rob’s page at least the artist pages are working.

Thanks for reporting, we are looking into it :slight_smile:

1 Like

I have yet to find a recommendation system that is of value to me (I’ve occasionally used RYM and Last.fm), but I’ll bite. (Context: I have a “playlist” of 2400+ tracks in foobar2000 that I shuffle, resulting in ~400 artists (each unique collaboration counted as its own artist) per week)

“Top Artist” would only be useful to me if there were some option of it only showing tracks I haven’t heard yet or haven’t heard in X amount of time. If I look at the results right now it’s 99% tracks I already know and regularly listen to, but I might be one of few people who listen to the artists resulting in me curating this list myself.

“Similar Artist” seems way more useful to me but it kind of has the same problem as “Top Artist” and other recommendation systems (RYM specifically). Like “Top Artist” I would love to see an option to only show new tracks or tracks I haven’t heard in a while. Also like RYM’s (album) recommendation system this recommends a lot of artists/tracks from a specific label that I don’t really like, and I’m not really sure why. Currently on the first page there are 3 tracks I already regularly listen to, ~12 tracks from that label I don’t like or artists from that label, and 5 tracks from artists I don’t have any interest in (though I guess the system wouldn’t know I don’t like them)

I guess I’m mostly just looking for a recommendation system that recommends artists/tracks/labels that I haven’t heard yet and will probably like. Would it be an idea to have track/release ratings from MB or CB have some influence too? At the very least that could filter things that are already known one doesn’t like.

2 Likes

I got some interesting datasets I guess. An acquaintance of mine has been creating boxsets/playlists on tons of genres and styles for over a decade http://rymboxset.blogspot.com/. I don’t know if these are on MB but I’d assume most of them are, since they are generally based on influential music within a scene.

I would also be available to gather some “if you like (recording) you will probably like these too” lists (within my area of music) if needed

2 Likes

This could be something more aligned/tied into Critique Brainz?

I think Last.fm does this in quite a nice way, with a mix of what it shows you in its recommendation wall:

2 Likes

Bandcamp does something like this, and it’s one of its best features. It generates you several playlists called “Your mixtape” which contain music grouped by similarity which you like or might like. For this it uses music you have frequently listened to, especially if you liked it, and throws in some additional music that fit into this category. So you get a nice mix of familiar and new music. It also shows a small list of artists which are part of the playlist, so you can easily see what musical style this is.

For someone frequently listening to different genres or moods this grouping is very useful.

3 Likes

Right now, the playlist only show tracks that the user haven’t heard in the last week. X = 7 days is a small window though. We can surely increase this X. Thank you for the feedback :slight_smile:

2 Likes

I don’t know if this is working properly for me then. Is there some way to see when I’ve listened to a track from within LB itself? Currently the #1 track it shows me Last.fm says I have listened to 114 times and twice this month. Maybe it’s just outside the 7 day window

First thanks very much for this, thanks for the charts as well !

I would love to have an extra API endpoint to query recommendations based on an artist (rather than based on a specific user recent listening history).
Some players rest on this kind of feature to automagically queue tracks similar to currently playing (artist | track).

Cheers & happy listening :slight_smile:
k

2 Likes

Who knew machines could be so full of hate? I got recommended Radiohead and it’s left me more traumatised than anything any human has said or done to me in years. :grimacing: