If you've worked much with recommender systems you'll know that offline evaluation of recommendation algorithms can bring on a serious headache in no time. It was nice of Netflix to offer researchers $1M to improve their recommender system, but I think many of them would have taken part in the challenge even without a serious prize simply because the competition format means that someone else has to worry about preparing training and test data, and choosing a success measure, not to mention the pure mechanics of running evaluations over and over again.
But unless you work for a huge company, online testing is a limited resource, especially compared to the vast parameter space you might need to explore when setting up a new recommender system. And if you're an academic you may not be able to reach users easily, and you have to have some formal results to publish in any event. So the need to do offline evaluation isn't going away any time soon.
Here are some of the pain points that I've bumped into recently:
- public datasets aren't enough for (easily) reproducible research: take a look at the results reported here, here and here, all based on the same dataset, but with different experimental setups making for a lot of extra work to compare with them.
- toolkits need to scale: MyMediaLite, for example, is a great tutorial resource for recommender systems, with clear, well thought out implementations of a host of algorithms, and evaluation code too, but it doesn't handle even moderately large datasets.
- baseline methods need to be reproducible too: I just came across this impressive paper by Jagadeesh Gorla which introduces a genuinely novel approach to making recommendations and also reports great results, but I can't come close to replicating his baseline results; should I believe the results for his new method?
- evaluation needs resources: generating full similarity matrices for many different parameter settings, or recommendations for all users in a big dataset, can be way more compute intensive than running a recommender service for real.
- Hadoop doesn't help much: map-reduce isn't usually a good fit for machine learning algorithms, and the large resources needed by most recommender systems mean that you can't even resort to map-only driver jobs to launch code in parallel.
- distributed processing without Hadoop is hard: I got excited about StarCluster and IPython.parallel, as in principle they make it dead easy to set up a Python cluster on AWS and run code on multiple worker processes, but in I've found that processes easily get into an unrecoverable state meaning frustration and wasted time tearing down clusters and setting up new ones. In practice I've made faster progress by running parallel processes on the single biggest machine I can find locally.
What's your experience?
Are there some great tools and frameworks that I should know about? These issues aren't unique to recommender systems. Have they already been solved in your field? If not, what kind of tools would you like to see made available?
I've just been invited to give a keynote at the workshop on Reproducibility and Replication in Recommender Systems Evaluation scheduled for this year's ACM RecSys conference in October, and I'd love to be able to talk about solutions and not just problems.
Let me know what you think!
hi mark, iv been trying to make a reccomendation algorith using R do you have any experience on the same?
ReplyDeleteSimple and direct has always worked best for me. I can attest to the fact that most of my rapid prototypes or proof of concept/up lift recsys happen on one beefy machine. Find something with quad core or more and 24gb+ ram and just run everything on that. Clusters, parallel runs, map reduce implementations are all good by example but honestly I just use that stuff to get my final training set in a form that can be run on that one machine. You can handle 100+ million line training sets on one machine in a reasonable amount of time.
ReplyDeleteTool wise I see a lot of people trying to fit their model in R but I just can't get there on a regular basis. Unless you are going DB => Python => pandas => munge => DB => R you won't have much luck. Just stay in python for everything and either get your data to an in-memory size on the first map reduce pull or store it in an intermediate DB.
I haven't needed anything other than pandas + scikit-learn for anything. If you really want to have it interactive you can prototype on a 0.1% sample in R but mileage may vary.
Hi Chris, pre-processing data on Hadoop and then training models on a single machine has worked well for me too, and I've developed some successful systems that way. However if you have a big parameter space to explore, and models that take some time to learn, then training multiple models on a single machine will leave you with a looong wait for results. OK the code required to train and evaluate multiple models in parallel is just plumbing - but in my experience it's not trivial to do robustly, and I haven't found much help out there in the form of existing frameworks. It's particularly a problem if you're trying to do publishable research, and you can't rely on hunches to cut down the number of models you need to train, or you need to run somebody else's slow algorithm to get comparative results...
DeleteI just discovered this blog post. In StarCluster, the ipcluster plugin as companion plugin to kill and restart all the engines:
ReplyDeletehttp://star.mit.edu/cluster/docs/0.94/plugins/ipython.html#restarting-all-the-engines-at-once
But I agree it would be great if one could do that directly from the IPython.parallel API. Min is aware of the problem and has planned to redesign how the engines are spawned to make it easy to kill / restart stalled engines but I think right now they are focusing dev efforts on the notebook UI.
Great blog Mark - as a Recruiter I'm learning a lot from here! Keep it up :)
ReplyDeleteI really appreciate information shared above. It’s of great help. If someone want to learn Online (Virtual) instructor led live training in Data Science, kindly contact us http://www.maxmunus.com/contact
ReplyDeleteMaxMunus Offer World Class Virtual Instructor led training on Data Science. We have industry expert trainer. We provide Training Material and Software Support. MaxMunus has successfully conducted 100000+ trainings in India, USA, UK, Australlia, Switzerland, Qatar, Saudi Arabia, Bangladesh, Bahrain and UAE etc.
For Demo Contact us.
Nitesh Kumar
MaxMunus
E-mail: nitesh@maxmunus.com
Skype id: nitesh_maxmunus
Ph:(+91) 8553912023
http://www.maxmunus.com/
The great service in this blog and the nice technology is visible in this blog. I am really very happy for the nice approach is visible in this blog and thank you very much for using the nice technology in this blog
ReplyDeleteData Science Online Training
Hadoop Online Training
This comment has been removed by the author.
ReplyDeleteThanks for sharing great info with us.
ReplyDeleteI wanted to write a little comment to support you and wish you a good continuation All the best for all your blogging efforts.Your good knowledge and kindness in playing with all the pieces were very useful.
data science course in pune
It was really a wonderful article and I was really impressed by reading this blog. We are giving all software Courses such as Data science, big data, hadoop, R programming, python and many other course. R Programming training in bangalore is one of the reputed training institute in bangalore. They give professional and real time training for all students.
ReplyDeleteThanks for sharing your innovative ideas to our vision. I have read your blog and I gathered some new information through your blog. Your blog is really very informative and unique. Keep posting like this. Awaiting for your further update.If you are looking for any Data science related information, please visit our website Data science training institute in bangalore
ReplyDelete
ReplyDeleteGreat post.I really liked you article,your writing style is simply awesome with useful information. Best python certification course in Bangalore is offering Python training with 100% Placement assistance.Get certification under certified experts
Really awesome blog!!! Nice article on data science . Thanks for sharing your innovative ideas to our vision. your writing style is simply awesome with useful information. Very informative, Excellent work!
ReplyDeleteData Science Course
This is a very amazing and informative blog....
ReplyDeleteThanks for sharing with us,
We are again come on your website,
Thanks and good day,
Please visit our site,
buylogo
Great Blog. this is really useful and very creativity for the learners.
ReplyDeleteData Science Training Course In Chennai | Data Science Training Course In Anna Nagar | Data Science Training Course In OMR | Data Science Training Course In Porur | Data Science Training Course In Tambaram | Data Science Training Course In Velachery
It actually read this article. I like that your blog. Is nice content.
ReplyDeletePython Training in Chennai
Python Training in Bangalore
Python Training in Hyderabad
Python Training in Coimbatore
Python Training
python online training
python flask training
python flask online training
Your points are cream of the crop and original in my opinion. I agree with most of your points. Being a travel blogger and lover, it was appealing and supportive for me.
ReplyDeleteData Science training in Mumbai
Data Science course in Mumbai
SAP training in Mumbai
Your points are cream of the crop and original in my opinion. I agree with most of your points. Being a travel blogger and lover, it was appealing and supportive for me.
ReplyDeleteData Science Training in Chennai
Data Science Training in Velachery
Data Science Training in Tambaram
Data Science Training in Porur
Data Science Training in Omr
Data Science Training in Annanagar
Your points are cream of the crop and original in my opinion. I agree with most of your points. Being a travel blogger and lover, it was appealing and supportive for me.
ReplyDeleteData Science Training in Chennai
Data Science Training in Velachery
Data Science Training in Tambaram
Data Science Training in Porur
Data Science Training in Omr
Data Science Training in Annanagar
This comment has been removed by the author.
ReplyDeleteA very awesome blog post. We are really grateful for your blog post. You will find a lot of approaches after visiting your post.
ReplyDeleteSEO Cheltenham
SEO Agency Gloucester
SEO Gloucester
Web Design Gloucester
this is an great content that helps a lot thanks for sharing it with us,
ReplyDeletewe are always here design the best websites & logos with a discount also with an guarantee are you interested?
Logo Designers
Learn an in-depth, real-time understanding of the Data Science domain by enrolling for the AI Patasala advanced Data Science Course in Hyderabad.
ReplyDeleteData Science Training Hyderabad
yeni perde modelleri
ReplyDeleteNumara onay
mobil ödeme bozdurma
Nftnasilalinir.com
ankara evden eve nakliyat
trafik sigortası
dedektör
Web site kurmak
Aşk Kitapları
An amazing blog post. We sincerely appreciate your blog post. Upon viewing your post, numerous approaches will become apparent.
ReplyDeleteData science training Institute In Hyderabad