Everything You Wanted to Know About Machine Learning

Everything You Wanted to Know About Machine Learning

翻译了理解机器学习的10个重要的观点,加入了自己的理解,这些原则在大部分情况下也许是这样,但是具体问题具体分析才是王道,不加思索的应用只能是一知半解。所以张小龙才说‘我说的都是错的’。 note by 王犇

1. How Does Machine Learning Work? 一般来说机器学习算法做这三件事情来建立模型:

  1. A set of possible models to look thorough
  2. A way to test whether a model is good
  3. A clever way to find a really good model with only a few test

a) 确定可行的候选模型集合(搜索空间,这个空间一般会很大) b) 确定模型是否可行的方法(效果评价方法) c) 找到一个有效的方法,利用尽量少的试探得到一个较好的模型(优化算法,model selection)

2. Overfitting Has Many Faces
–小心Overfitting
The general moral of this section of the paper is to 
always measure the performance of your classifier on out-of-sample data
.
一定要构建测试集来测试你的模型


You cannot do too many of these training and testing splits.  You should even make some predictions on data you imagine yourself, to see what the model does in certain situations. 
有时需要自己构建测试数据


3. Intuition Fails in High Dimensions
–在高维数据下不要依赖直觉
What this means in practice is that 
as you add more and more input fields, you must also add more and more training data
 to “fill up” the space created by the additional inputs if you want to use them accurately.
如果你希望通过添加更多的特征来提升模型的效果,你必须也同时增加更多的数据。否则很可能噪音会让你的模型效果更差。


4. Theoretical Guarantees Are Not What They Seem
–理论的误差上界和实践有差异
The only certain way (that we know of now) to know if an algorithm will model your data well is to try it out.


在尝试之前不要给任何模型下定论


5. Feature Engineering is the Key
–特征工程尤为重要
The problem here is that 
no single input field, or even any single pair of fields, is closely correlated with the objective



如果你的输入特征和目标非常不相关(比如非线性相关,或者需要复杂变换才能有相关性的),则你的结果很可能非常不好。


It’s when you use your knowledge about the data to create fields that make machine learning algorithms work better.


这里说的特征工程,就是利用你对数据的认识来构建特征,让机器学习算法工作的更好!


 In my career, I would say an average of 
70% of the project’s time goes into feature engineering
, 20% goes towards figuring out what comprises a proper and comprehensive evaluation of the algorithm, and only 10% goes into algorithm selection and tuning.
大部分工作,70%时间在特征工程、20%的时间在如何有效和可理解的评估效果、只有10%的时间在进行算法的选择和调优


原文具了一个原始输入是经纬度的,需要转换为两个城市间距离的例子。两个经纬度和两者间的距离是需要相当复杂的转换工作。转换后能够和用户是否愿意在同一天在两个城市间开车具有非常强的关联性。


6. More Data Beats A Cleverer Algorithm
–再一次强调了数据的重要性
there’s 
increasingly good evidence
 that, in a lot of problems, very simple machine learning techniques can be levered into incredibly powerful classifiers with the addition of loads of data.


越来越多的证据证明,一些简单的机器学习技术通过增加更多的数据可以生成非常强大的模型

A big reason for this is because, once you’ve defined your input fields, there’s only so much analytic gymnastics you can do. Computer algorithms trying to learn models have only a relatively few tricks they can do efficiently, and many of them are not so very different. Thus, as we have said before, performance differences between algorithms are typically not large. Thus, if you want better classifiers, you should spend your time:

  1. Engineering better features
  2. Getting your hands on more high-quality data

原因是,一般来说你定义好了你的特征,也就限定了你能够在其中探索的空间(其实就是说,数据限定了最终效果的天花板,这里面的信息量是有限的,模型和算法是在这个空间下寻找一个更好的解)。并且其实很多模型的原理也都有相似之处。(想想n多的Learning 2 Rank算法)所以如果你希望达到更好的分类器,你可以优先这么做:
1. 更好的特征工程
2. 获取更多质量更好的数据


7. Learn Many Models, Not Just One
–ensemble的力量!
 One can often 
make a more powerful model by learning multiple classifiers over different random subsets of the data.


在多个随机采样的子集中学习多个分类器来达成一个更加强大的模型。(ensemble的力量已经被无数次的证明,最近流行的gbdt,rf都是这个原因,zhangtong给出理论的解释是降低了泛化时的方差)


8. Simplicity Does Not Imply Accuracy
–奥坎姆剃刀原理不总是正确
So too in machine learning. If we have two models that fit the data equally well, many machine learning algorithms have a way of mathematically preferring the simpler of the two. The folk wisdom here is that a simpler model will perform better on out-of-sample testing data, because it has less parameters to fit, and thus is less likely to be 
overfit 一般来看,如果有两个模型对数据的描述能力同样好,那么会倾向于简单的模型(想想正则化)。一般简单的模型在测试集的表现会更好,会更加不容易发生overfitting

One should not take this rule too far. There are many places in machine learning where additional complexity can benefit performance. On top of that, it is not quite accurate to say that model complexity leads to overfitting. More accurate is that the procedure used to fit all that complexity leads to overfitting if it is not very clever. But there are plenty of cases where the complexity is brought to heel by cleverness in the model fitting process.

Thus, prefer simple models because they are smaller, faster to fit, and more interpretable, but not necessarily because they will lead to better performance; the only way to know that is to evaluate your model on test data.

也不能过于轻信这个原则。也有很多地方格外的复杂度会带来额外的收益。太复杂的模型带来overfitting,这种说法并不准确。有时额外的复杂度是模型训练中有意并且聪明的选择(复杂的structure也许更好契合了问题,效果和简单模型一样,或许只是数据还不够)。

因此,倾向于简单模型因为他们更小,更好训练,更容易解释,但并不一定因为他们会带来更好的效果。只有实际测试能够告诉你答案。

8. Representable Does Not Imply Learnable

–可表示不代表可学习

The creators of many machine learning algorithms are fond of saying that the function representing an accurate prediction on your data
is representable
 by the learning algorithm. This means that it is 
possible
for the algorithm to build a good model on your data.
通常说,某个算法有可能对你的数据建立一个好的模型就是可表示。(多层神经网络可以表示任何函数??)


Unfortunately, this possibility is rarely comforting by itself. Building a good model may require much more data than you have, or the good model might simply never be found by the algorithm. Just because there’s a good model out there that the algorithm 
could
 find does not mean that it 
will
find it.


不幸的是,有可能利用这个算法建立好的模型需要的数据超过了你现有的数据;或者仅仅因为它“能”找到一个好的模型不意味着他“会”找到(也许计算时间太长,搜索空间太大等)


This is another great argument for feature engineering: If the algorithm can’t find a good model, but you are pretty sure that a good model exists, try engineering features that will make that model a little more obvious to the algorithm.


又回到特征工程,如果算法无法找到一个好的模型,但你肯定模型是存在的,可以试试更好的特征表示,让数据更好的被算法所理解


9. Correlation Does Not Imply Causation
–相关性和因果性无关、大数据的三大定理?
The point of this common saying is that 
modeling observational data can only show us that two variables are related
, but it 
cannot tell us the “why”



对观测数据建模,仅仅可以告诉我们两个变量有关联,但是不能告诉我们为什么。
例如:有调查显示家里书籍更多的孩子,学习成绩更好。但是书不是成绩好的原因,你不能给那些孩子送书就提升他们的成绩。真正的原因可能是,书籍多的家庭父母的教育程度高,对还自己的教育也相对较好。书仅仅是一个
indicators


You should take similar care when interpreting your models
. Just because one thing predicts another doesn’t mean it causes another, and making business (or public policy) decisions based on some imagined causal relationship should be done with extreme caution.


解释你的模型的时候就要小心,不要错误的把关联性作为因果性放入商业决策中,有可能会犯大错。(统计中的常见问题)


10. The Big Picture
Machine learning is an awfully powerful tool, and like any powerful tool,
misuses of it can cause a lot of damage
. Understanding how machine learning works and some of the potential pitfalls can go a long way towards keeping you out of trouble.


机器学习很强大,但是用错误代价也很高。好的工具在好的工程师手里才会发挥作用。

orglink : 
http://blog.bigml.com/2013/02/15/everything-you-wanted-to-know-about-machine-learning-but-were-too-afraid-to-ask-part-one/

点赞