Media recommendation engine - Single user system - How to start
Question
I want to implement a media recommendation engine. I saw a similar posts on this, but I think my requirements are bit different from those, so posting here.
Here is the deal.
I want to implement a recommendation engine for media players like VLC, which would be an engine that has to care for only single user. Like, it would be embedded in a media player on a PC which is typically used by single user. And it will start learning the likes and dislikes of the user and gradually learns what a user likes. Here it will not be able to find similar users for using their data for recommendation as its a single user system. So how to go about this?
Or you can consider it as a recommendation engine that has to be put in say iPods, which has to learn about a single user and recommend music/Movies from the collections it has.
I thought of start collecting the genre of music/movies (maybe even artist name) that user watches and recommend movies from the most watched Genre, but it look very crude, isn't it?
So is there any algorithms I can use or any resources I can refer up to?
Regards,
MicroKernel :)
Solution
What you're trying to do is quite challenging... particularly because it's still in the research stage and a lot of PHDs from reputable universities across the world are trying to get a good solution for that.
SO here are some things that you might need:
- Data that you can analyze:
- Lots, and lots, and lots of data!
- It could be meta data about the media (name, duration, title, author, style, etc.)
- Or you can try to do some crazy feature extraction from the media itself.
- References to correlate the data to.
- Since you can't get other users, you always need the user feedback.
- If you don't want to annoy your user to death with feedback questions, then make your application connect to a central server so you can compare users.
- An algorithm that can model your data sufficiently well.
- If you have no experience at all, then try k-nearest neighbor (the simplest one).
- Collaborative filtering
- Pearson Correlation
- Matrix Factorization/Decomposition
- Singular value decomposition (SVD)
- Ensemble learning <-- Allows you to combine multiple algorithms and take advantage of their strengths.
The winners of the NetFlix prize said this:
Predictive accuracy is substantially improved when blending multiple predictors. Our experience is that most efforts should be concentrated in deriving substantially different approaches, rather than refining a single technique. Consequently, our solution is an ensemble of many methods.
Conclusion:
There is no silver bullet for recommendation engines and it takes years of exploration to find a good combination of algorithms that produce sufficient results. :)