Bloomberg LP Interview Question
Software Engineer InternsCountry: United States
Interview Type: Phone Interview
You can always take a black-box approach. Treat each song as its own entity without connecting it to anything - no attributes and no other songs. The only thing you record is a record for each user's channel (not the user himself). You do this, because a user could have two contradictory channels, and you wouldn't want to let that confuse your statistical analysis. The record houses all the songs he liked in that channel.
This might be sufficient information to then apply statistical techniques or machine learning of some kind. Basically, try to find a similarity measure between user channels based on the songs liked in them and disliked in them, and if everyone in a similar group likes song X and John Smith's Hard Rock channel is in that group yet hasn't tested out X yet, send him a recommendation for X.
When a new song comes online, simply send it to a few groups at random and record the reaction. You need to do this type of exploration, or new songs would never be offered to anyone.
I will require that user should play some music. It will give me the information about the user's music interest like - artist, music type (jazz .. etc), details of melody and harmony, rhythm and instrumentation etc.
- Ajeet November 01, 2013I will use this information as a "music attributes\characteristics" to describe a song. And it will be used to select some songs from the library for the recommendation.
And songs will be classified in the database.
Each characteristic of a song has different score, and sum of scores of all characteristics give score of a song. Now on the basis of scores songs are sorted for the recommendation.
"Item based prediction algorithm" is the best match to calculate the score of a song.