I recently saw a talk by Foster Provost, a big ML guy at NYU. The main points of his talk were that using fine-grained behavioral data (like browsing history) is better than demographics (at least in his context: predicting ad lift), and he proposed a way to interpret the model (somewhat). I left feeling disappointed. His system for interpretation was super post-hoc and tenuous, IMHO. It felt like a computer scientist doing social science (because it was).
I think ML is great for lots of things, but there are still lots of problems with using it in systems with humans.
An example: if you do a Google search for "Amazon <some book>" then you'll almost always get an ad from Amazon. So Amazon pays for a click that would have happened anyway. Maybe Amazon does this to crowd out other advertisers, but maybe it's just the algorithm being stupid and nobody is watching.