Ask HN: Addressing cold start problems in recommender systems?
Hi All,
I have been working on a recommender engine for a while now and have now stumbled across the cold start problem. The problem here is that whatever data I collect is only an indicator of the likes of the user (for eg., if browsing history is taken as a source, then the basic assumption that people don't browse for what they don't like stands true)
So in such a case, any ideas as to how I train the system initially for dislikes?? I do know that the system will gradually tune to the user preferences with continuous feedback, but I would not like the first run to be very erratic either by choosing random dislikes...
Any ideas folks??
Any help in the matter is greatly appreciated....
6 comments
[ 6.4 ms ] story [ 41.9 ms ] threadIf this strikes you as incredibly boring, you can farm it out with Amazon Mechanical Turk or other crowdsourcing schemes. You could also do cleverer variants of this, like putting image-recognition or OCR training sets into CAPTCHAs, submitting possible links to Reddit or Digg, or hosting Internet surveys with the questions of interest.
You could try to identify a population of users whose likes and dislikes are expected to be "similar" to the user in question, though, and then base your training set off them. I believe that's how actual recommendation engines (eg. Amazon, YouTube) work. Of course, then you have to figure out how to identify similar users, which is another hard problem.
It sounds like you're saying that in your case, the value will be different for each person, so you don't have a way of seeding it correctly for different people. I sort of think you have to have SOME info to go off of. Sort of like hunch asks you questions, maybe you could do something like that?
In your example of browsing patterns, maybe you could ask new users if they do or do not like to read certain types of articles. ie: are you interested in technology, sports, entertainment, random pictures of cats etc and seed their profiles based on their expressed level of interest for those things (maybe including dislikes from people who claimed to have similar interests).
But I would think that dislikes are not so important in the beginning. Although I don't know how your algorithm works, if you have a rough idea of what a person likes, shouldn't you be able to recommend things that they might like just based on that? When you end up recommending something that they don't like, you'll get some dislike data and can start factoring that in.