《A Few useful things to Know About machine Learning》读后感

转载:https://blog.csdn.net/u011467621/article/details/48243135

本文主要是《A Few useful things to Know About machine Learning》的读后感

中文译文是《机器学习那些事》

作者:佩德罗·多明戈斯(Pedro Domingos)

译 者 :刘 知 远

文章主要说,有一些“folk knowledge”是很有用的,但是在很多Machine Learning的教材中没有被提到。造成项目浪费了很多时间且没有得到好的效果。

一共有12点的“folk knowledge”,感觉写的很不错。

1、Learning = Representation + Evaluation + optimization学习=表示+评价+优化

这个在前面的Andrew的课中就可以找到例子。逻辑回归是一种模型,就是这里的“表示”;成本函数用的是似然估计,就是这里的“评价”;优化用的是梯度下降。这样三个部分组成的是完整的机器学习的算法。

 

2、It is Generalization that Counts泛化(Generalization)很重要

Generalization 泛化就是一般化。泛化能力是指模型处理新数据的能力。我们都是用训练数据来学习,但是机器学习的目的都是为了预测新的没见过的数据,而不是已经知道答案的训练数据。所以,如果用训练数据来测试,当然结果很好,但是这其实并不正确。

可以怎么做呢?藏一些数据。(交叉验证)比如,把数据分成10份,9份当训练数据,1份来做测试。

3、Data Alone is not Enough 仅有数据还不够

在Hsuan-Tien Lin的课上,说到学习是可行的时候,见过假设集合hypothesis set 是比数据还要多的。N笔(xi,yi)的数据,可能有h=2^N,虽然,后来证明其实没有这么多,但是也是比数据要多(Hsuan-Tien Lin第五、六讲中有证明)。既然,假设的集合那么多,为什么机器学习又能做的好呢?作者解释到,真正的机器学习并不是从假设集合中一个一个挑,而是有一些先验知识帮助我们更好的筛选h。先验知识就是,针对不同领域,已经拥有的可以使机器学习更容易做出选择,选到好的h的知识。比如,如果概率很牛,那么用图模型(把概率分布中的条件,独立用图的形式表达出来)就稍微容易了。

如果没有这样的经验,就让机器自己去茫茫假设集合中选,还能挑到好的,还不如抛个硬币更容易。所以没有“经验+data”,就做选择,会说一句“no free lunch”来告诫。有了经验,就好像杠杆一样,选到靠前的支点,就能用更少的知识获得更好的效果。

4、Overfitting has many Faces过拟合(Overfitting)有多张面孔

过拟合在Andrew Week3提到过。过拟合就是在训练数据上表现太好,而在新数据上表现的很糟糕。上面讲的泛化是目标,那过拟合就是要强化避免的。造成过拟合的原因是训练数据太少或者模型太复杂(表现出来的就是特征很多)。

泛化误差有两个方面造成,bias和variance。用投飞镖的例子来看,靶心就是好的h。上面的点X表示一次对一个数据集D,学习后得到的h。可以看出,高bias表示离中心越远,高variance表示对不同数据集学习得到的h很分散。

 

Hsuan-Tien Lin在 十三讲也会说的过拟合问题。

 

in-sample error就是模型在训练数据中的表现的误差,误差越大就是越higher bias。

out-of-sample error就是模型对新数据的表现的误差,误差越大就是越higher vanriance。

从上还能看出复杂的模型有较大vantiance较小的bias。而模型和算法都是由特征选择产生的,这也就是在Andrew课中说到的,为什么variance高时要惩罚一些特征。

5、Intuition Fails in high Dimensions直觉不适用于高维空间

在Andrew的课中说到,模型不一定都是:

 

可以是:

或者

所以,增加一个特征,h是以指数的量增加的,就是说假设集合中h瞬间增加很多很多。这就是维度灾难。

这时(1)训练数据就会显得不够用。(2)即使数据够用,那么多的特征也只有少量的起着重要作用。比如,x1∧x2决定了分类的结果,之后增加了x3……x100的特征,这些特征不但没帮到忙,而且还带来了噪声,使得原本的结果变糟(3)即使上面说的训练数据够用,且那x1……x100的特征都是有用的,数据在高维度时变得很相近。

如:一维,如下图,2的最近邻就是1和3。如果1和3是两个类的话,问2是哪一类,也就是二选一。

 

二维,如下图,6的邻居就是2、5、10和7(1是对角,不是邻居),这四个是四类的话,6就是四选一类。

 

三维之后的图不好画就算了,主要就是说明,随着维度的增加,最近邻会增加。d维的网格,最近邻就是2d。最近邻增加的后果就是,分类越来越难。比如在二维16和6还不是邻居,它们还差得远,但是更高维的时候,发现它们也是邻居,6到底是哪一类就越来越难。最后,无奈到只能随机选。

我们之前的直觉都是,维度越多越好,这样机器学习就会更加精确。但是从上面三个原因分析,发现并不是越多越好。

文章讲了个很有趣的现象,说我们三维空间的直观感觉和高维空间是不一样的,高维空间的大部分质量都是在壳上。打个比方,就是,三维空间的橘子,质量在瓤上,而高维空间的质量在皮上。这个说明什么呢?比如下面三个点,上面说到,到了高维空间,实际上很多点都成了最近邻。假设A、B、C三个点就是高维空间,我们算出的最近邻好了。

 

然而,这三点离它们所对的超平面的距离比它们之间的距离还要近。比如

 

我们把上面叫1,左面是2,底面是3,右面是4,前面是5,后面是6。实际上,A点离5的距离比AB或者AC还要近。同样的,B点离面4的距离比BA、BC还要近。C点离面3的距离,比CA、CB要近。如果,在这个超平面内接一个球的话,这三个点都会在球面上。

这说明了什么?我们做分类,用最近邻来算的时候,比如知道A是属于第i类,那么B和C都是它的最近邻,自然也属于第i类。可是,现在看到的却是,它们是最近邻,但是它们其实也差的挺多的,这对机器学习肯定是个打击。

幸运的是,有一个叫做“分均匀性祝福”的特点可以起到一定的帮助。大概说的是,即使橘子的质量都在皮上也不是均匀的分布在皮上,还是集中在一些区域内的,所以可以隐式的利用这个空间或者降维。

6、theoretical Guarantees Are NotWhat they Seem理论保证(Theoretical  Guarantees)与看上去的不一样

这里提了两个保证:边界保证和渐进保证。

边界的意思是,给定一个足够大的训练集,告诉你在很大的概率上你的学习器会返回一个成功泛化的假设,还是无法找到一个保持正确的假设。

渐进保证是,给定无穷数据,学习器将保证输出正确的分类器。(来自译文翻译)

边界保证其实在Hsuan-Tien Lin的课上讲到(第四、五讲,可以去看看)过,是为了解决机器学习可行性问题。

渐进保证,是很少会处于的一种状况。

文章说到,理论保证就是为了理解,不会再实际运用中起决策作用,顶多就是在设计算法的时候给些提示。

7、Feature Engineering Is the Key特征工程(Feature Engineering)是关键

特征的确是机器学习成败的关键,难怪现在这么多搞Deep learning的。我们在用机器学习做预测的时候,发现真正学习的时候并不多,看看数据的收集、整理、清理和预处理,还有就是特征的设计,试验,修正等。且,机器学习是无法一次就达到的,需要进行多次迭代。特征工程之所以比学习还要复杂,是因为它是和领域相关的,机器学习算法是通用的。比如,银行预测是否给顾客信用卡,你用二元分类,但是特征就是银行顾客的资料。比如病人是否有癌症,你也用二元分类,但是特征就是病人的资料。这些领域知识,在“仅有数据是不够的”那节说到,需要人们的先验知识,但是,我们还是希望机器学习越来越智能。

8、more Data Beats a Cleverer Algorithm更多是数据胜过更聪明的算法

这节说到,当遇到分类器效果不够好的时候,有两个选择,要么设计更好的算法,要么收集更多的数据。往往做的选择就是设计更好的算法。实际上,收集数据更实用些。

因此这节核心就是有大量数据的笨算法要胜过数据量较少的聪明算法。

对于我们而言,资源有三类:时间+内存+数据。

在以前,我们会说数据是瓶颈,可是现在都海量数据了。但是,人们似乎觉得没有足够的时间处理海量数据,还是把算法改进到很perfect的地步好了。这其实不太对。如下图:


我们可以看出,其实算法越复杂,错误好像也越多。而且,文章说到,采用更聪明的算法也不见得就有好的回报,有一部分原因就是机器学习的机制其实是相同的。不够聪明的算法改到高级也未必使得结果就更好,因为它们有可能有相同的结果。

所以首先尝试最简单的算法总是有好处的。更聪明的算法也更难驾驭。虽然,研究的论文总是在比较结果的准确率和计算复杂度,但是,节省人力和得到知识更重要(这个,的确之前都忽视了)。

9、Learn many models, not Just one要学习很多模型,而不仅仅是一个

一般认为一个学习器就够了,但是现在发现多个学习器结合,效果更好。现在有很多模型集成的技术:bagging(装袋)、boosting(强化提升)、stacking(堆叠)。这块不熟,可以去搜搜。

10、Simplicity Does not imply Accuracy简单并不意味着准确

著名的奥坎姆剃刀(occam’srazor)原理称:若无必要,勿增实体(entities should not be multiplied beyond necessity)。但是好像被理解成简单的犯错低,就更好。这个其实不对,上面讲到的模型集成,有说会修正分错的例子,所以模型集成的分类器是复杂的,它比简单的要精确。奥坎姆最初的意思是说,开始的时候选择简单的假设,可以修正它,直到效果理想。但是不要一开始从复杂的做起,而不是说要找简单作为最终的学习器。

11、Representable Does not imply Learnable可表示并不意味着可学习

一个函数可以被表示出来,不见得就能被学习。这个意思就是说,我们给定了数据、时间和内存,用标准的学习器来学习,但是只能学到所有可能函数中的一部分,并不能学到所有的函数。因此,有的函数它能够写成某种形式,但是,我们也可能没办法求到它。因此,要多试一些学习器。

12、Correlation Does not imply Causation相关并不意味着因果

我们只是发现观测变量之间的相关性,但我们还希望从观测数据发现因果信息。另一方面,相关性是因果关系的标志,我们可以将其作为进一步考察的指南(例如试图理解因果链可能是什么样)

猜你喜欢

转载自blog.csdn.net/tanghong1996/article/details/81383617
今日推荐