Why Generic Machine Learning Fails
metamarketsgroup.com
metamarketsgroup.com
Learned this the hard way. As an academic who used to think you could solve a problem (e.g., spam filtering) using a single model --- something we routinely do in academic papers --- I had to wait until I went to an industry internship to realize how "ugly" a real spam filtering algorithm has to be. Large mail providers see so many diverse patterns of spam that they need a complicated mix of ML models, datasets, labels, and sometimes even plain old blacklists to keep their spam under control.
As for generic machine learning being a ridiculous idea, I don't see why he'd think this. Nearly all specialized systems use generic machine learning algorithms as a submodule. They can very much be commoditizable like EC2. Even google has an upcoming framework for this. Although I would agree that by themselves they are not sufficient.
edit: I also think you miss the point of academic papers. The goal is not to build a product, but rather to understand algorithms. Testing algorithms in isolation of other boosters is crucial for this. If you are testing a particular combining framework, only then does it make sense to include multiple approaches within the context if the proposed idea.
In bioinformatics, you additionally have the researchers who actually want an applied answer for their studies and work. Thus, in that area you do routinely get something more like a product being produced in an academic setting. The combined systems are often, but not always published.
While the generic ML tools work really well, it takes domain knowledge to find the best way of applying them to the problem at hand, specially since it almost never fits into the classification/regression from IID training training data model that most algorithms are designed based on. At first this might seem counter-intuitive to you, but I've seen dramatic reductions in the error rate just from picking good features or a reasonable model structure in a way that's not easy to automate. And while deep learning or structure learning tries to address these problems, there are issues with nonconvexity and really long training times that make these algorithms unrealistic in many situations (and, consequently, make them underperform simpler methods with clever domain engineering).
I wonder then, could a system be developed for capturing the minimal required domain knowledge either in a data set itself, or in some other form. Especially as it evolves over time.
Either way, the article was a good read.
The points you make are well understood in academics. There are probably hundreds of papers on feature selection and domain specific modelling in bioinformatics, for example.
In terms of boxed learning algorithms, I would assume that such a thing would provide for a way to supply models and inputs in a variety of formats. The latter allowing for users to do their own domain specific feature selection or other types of data reduction before applying a particular learning algorithm. In that sense, I could see things like Google's prediction API being useful in principle, even though it won't eliminate the large domain specific portion of the work.
I actually don't, being a researcher myself (not in ML, but in a field that uses a lot of it). I'm just saying that real-world datasets in the industry are nothing like the toy datasets that a lot of papers from universities are written with... there's a lot more noise, and you'd never be able to get a good classification (for example) using just one coherent set of techniques.
On the other hand, KDD/WWW/ICML and other data mining conferences are increasingly dominated by industry folks now, so my experience may not be as common anymore.
I think Metamarkets, like Palantir and others, understand this very well and thus, are focused on building interactive tools to help humans (particularly domain experts) process and visualize large amounts of data to find interesting patterns more efficiently, rather than trying to automate everything.
http://sixdegrees.hu/last.fm/images/lastfm_800_graph_white.p...
You might be able to "see" some large scale constructs, but finding patterns in the details is what this is all about and humans simply can't do that with graphs like the above...and it's amazing how quickly you can arrive at hairballs just like this...
even specialized tools for visualizing large graphs don't help much.
As for the idea of "general machine learning" not being feasible, it's worth noting that the No Free Lunch Theorem [1] applies here.
[1] http://en.wikipedia.org/wiki/No_free_lunch_in_search_and_opt...
Why?
"The Netflix prize is a good example: the last 10% reduction in RMSE wasn’t due to more powerful generic algorithms, but rather due to some very clever thinking about the structure of the problem; observations like “people who rate a whole slew of movies at one time tend to be rating movies they saw a long time ago” from BellKor."
That's kind of hand-wavy in the sense that you haven't produced the factor which prevents a generic machine learning algorithm from "being very clever" or determining the specific useful observation. Sure, there's an intuition we have about this but that's it.
And that is kind of inevitable - if we could get an exact measure of why current machine learning algorithms fail, we could probably build new one that succeeded.
Sure, you might argue that the hypothesis is implicit in the data set, and (though I'm not familiar with the actual Netflix data, so I'm not sure) that might be true - if it's in there in some form, then it's even conceivable that some algorithm might eventually pick it up. But a human would likely never even dream of advancing that hypothesis without at least some vague sense that other humans would probably act that way, and in many cases, without that high prior probability that comes from our knowledge of psychology it wouldn't be proper to consider that factor. So in a sense, we're cheating every time we use our external domain knowledge to push our ML algos to a better spot in hypothesis space.
This doesn't say that generic ML fails; it merely says that "the sum total of human knowledge + ML algo applied to data set" > "ML algo applied to data set", especially when "data set" has something to do with shit that humans know very well, like ourselves.