全部版块 我的主页
论坛 数据科学与人工智能 人工智能 人工智能论文版
937 2
2018-02-02

机器学习算法可以通过学习就可以弄清楚如何去执行一些重要的任务。在手动编程不可行的情况下,这种方法通常既可行又经济有效。随着可获取的数据在逐步增多,越来越多更加复杂的问题可以用机器学习来解决。事实上,机器学习已经被广泛的运用到计算机以及一些其他领域。然而,开发出成功的机器学习应用需要大量的“black art”,这些内容是很难在教科书中找到的。


我最近读了华盛顿大学的Pedro Domingos教授的一篇十分惊艳的技术论文,题是“A Few Useful Things to Know about Machine Learning”。 它总结了机器学习研究人员和实践者所学到的12个关键的经验及教训,包括要避免的陷阱,需要关注的重点问题以及常见问题的答案。我想在本文中分享这些十分宝贵的经验教训,因为当你思考解决下一个机器学习问题时,这些经验会对你十分有用。


1.学习 = 表示 + 评估 + 优化

所有的机器学习算法通常由3个部分组成:

  • 表示:分类器必须用计算机能处理的某种形式语言来表示。 反过来讲,为学习器选择一种表示就等于选择它可能学习的一组分类器集合。这个集合被称为学习器的假设空间。如果某个分类器不在假设空间中,那么就不能被学习到。与此相关的一个问题是如何表示输入,也就是说要用哪些特征,本文稍后介绍。
  • 评估:需要一个评估函数来区分好的分类器和坏的分类器。机器学习算法内部使用的评估函数可能与我们希望分类器优化的外部评估函数有所不同,为了更好的优化,接下来会进一步讨论。
  • 优化:最后,我们需要一种方法可以在假设空间中找到评价函数得分最高的那个分类器。优化技术的选择对于学习器的效率至关重要,并且当评估函数有多个最优值时,优化技术也有助于确定所产生的分类器。 初学者开始使用现成的优化器是很常见的,之后这些方法会被定制设计的优化器所取代。

1.png


2.泛化才是关键

机器学习的最终目的是将训练模型应用在除训练样本之外的其他数据中。因为无论我们训练时有多少数据,在测试的时候我们都不太可能再次遇到与这些训练时的详细数据完全相同的情况。在训练集上获得好的结果很容易。机器学习初学者中最常见的错误就是对训练数据进行测试并自以为大获成功。如果选择的分类器在全新的数据上进行测试,它们通常表现的还不如随机猜测所得的结果好。所以,如果你要雇佣某人来构建分类器,一定要保留一些数据给你自己,之后再用这些数据来测试他们给你的分类器。反过来讲,如果你被雇来构建分类器,从一开始就划分出一些数据用作之后的测试,在你用全部数据进行训练并得到您的分类器过后,再用这部分数据来测试你最终选择的分类器


3.只有数据是不够的

将泛化作为目标还有另一个主要的问题:只有数据是不够的,不管你有多少数据。


这似乎是个相当令人沮丧的消息。那么我们还怎么希望学到所有东西呢?幸运的是,在现实世界中我们想学习的函数并不是均匀的来自所有可能函数的!事实上,许多通用的假设往往会起很大的作用 ——像平滑性、相似的示例有相似的分类、有限的相关性、或有限的复杂性等,这也是机器学习会取得成功的很大一部分原因。与演绎法一样,归纳法是一种知识杠杆:将少量的知识输入转化成大量的知识输出。归纳是一个比演绎更强大的杠杆,需要更少的知识输入来获取有用的结果,但是,它终究还是不能在没有知识输入的情况下工作。而且,正如杠杆一样,我们投入的越多,我们可以获取的知识就越多。


2.png


综上来看,机器学习需要知识这点并不奇怪。机器学习不是魔术, 它并不能做到从无到有。它可以做到的是从少变多。像所有的工程技术一样,编程有很多工作要做:我们必须从抓取开始构建所有的东西。机器学习更像是种田,让大自然完成大部分的工作。农民将种子与营养物质结合起来种植庄稼。而机器学习则是将知识与数据结合起来,来构建模型。


4.过拟合有多张面孔

如果我们的知识和数据不足以完全学习出正确的分类器怎么办?那么我们就冒着得到一个幻想中的分类器的风险来构建,这些分类器可能与实际情况相差甚远,它简单的将数据中的巧合当做了一般情况。这个问题被称为“过拟合”,是机器学习中的难题。当你的学习器输出的分类器在训练数据上有100%的准确率,但在测试数据上只有50%的准确率的时候,这就是过拟合。在正常情况下,无论在训练集还是在测试集它的准确率都应该为75%。


在机器学习中,每个人都知道过拟合,但它有很多形式,有些并不会马上显现出来。理解过拟合的一种方法是将泛化误差分解为偏差和方差。偏差是学习器有不断学习同样错误的倾向。方差是学习器倾向于去学习随机事物,不考虑真实信号是如何。线性学习器有很高的偏差,因为当两个类的交界不是一个超平面时,线性学习器就无法进行归纳。决策树就不存在这个问题,因为它们可以表示任意布尔函数,但在另一方面,决策树有较大的方差:决策树在同一现象产生的不同训练集上学习,所便显出的结果是完全不同的,但理论上它们的结果应该是相同的。


3.png

交叉验证有助于减弱过拟合,例如通过使用交叉验证来选择决策树的最佳尺寸来学习。但这不是万能的,因为如果我们使用了过多的参数,那模型本身就已经开始过拟合了。


除了交叉验证之外,还有很多方法可以预防过拟合的问题。最常用的方法就是给评估函数添加一个正则项。这样做可以惩罚许多较为复杂的模型,从而有利于产生较为简单的模型。另一种方法是在添加新的结构之前,通过像卡方检验来测试统计显著性,以确定加入这种结构是否会有帮助。当数据十分稀少时,这些技术特别有用。尽管如此,你还是应该对存在某种技术可以“解决”过拟合问题这样的说法持怀疑态度,这十分容易就会让过拟合变为欠拟合。想要同时避免这两种情况需训练出一个完美的分类器,根据天下没有免费的午餐原理,如果事先并没有足够的知识,不会有任何一种单一技术可以一直表现最好。


5.高维度下直觉失效

在过拟合之后,机器学习中最大的问题就是维度灾难。 这个表达式是由Bellman在1961年提出的,指出了一个事实:当输入是高维度时,许多在低维度上工作正常的算法效果变得很差。 但是在机器学习领域,维度灾难这个词还有更多的含义。随着示例数据的维数(特征数量)的升高,正确地泛化的难度在以指数增加,因为固定大小的训练集只覆盖了输入空间的一小部分。

4.png

高维空间中比较普遍的问题是我们直觉失效,我们来自三维世界的直觉通常不适用于高维空间。在高维空间中,多元高斯分布的大部分质量并不接近平均值,而是在逐渐远离均值的一层“壳”上;打个比方,一个高维度的橙子的大部分质量都在皮上,而不在瓤里。如果恒定数量的示例在高维超立方体中均匀分布,那么超出某个维度后,大多数示例将更接近于超立方体的一个面。如果我们在超立方体内内接一个超球面,那么在高维度下,超立方体的几乎所有质量都将分布在超球面之外。这对于机器学习来说是个坏消息,因为机器学习经常用一种类型的形状来近似另一种类型的形状。


在二维或三维空间内建立分类器是很容易的;我们可以通过肉眼观察找出不同类别的示例之间合理的分界线。但是在高维度空间中我们很难理解正在发生什么。反过来说这让设计一个好的分类器变得很难。人们可能会天真的认为收集更多的特征并不会有什么害处,因为在最坏的情况下,它们也只不过不提供关于类别的新信息而已,但在实际情况下,这样做的好处可能远小于维度灾难所带来的问题。


6.理论担保与实际看上去并不一样

机器学习论文中充满了理论的担保。最常见的类型是可以确保良好泛化所需要的示例数据的界限。你应该如何理解这些担保呢?首先,需要注意它们是否可行。归纳传统上与演绎是相反的:在演绎中你可以保证结论是正确的;在归纳中这些都不好说。或者说这是许多世纪以来留下的传统观点。近几十年来的一个显著的提升是,我们认识到在实际情况中我们可以对归纳的结果的正确性有所保证,特别是如果我们愿意接受概率担保。


我们必须小心边界所包含的意义。例如,边界并不意味着,如果你的学习器返回了一个与特定训练集上相一致的假设,那么这个假设可能泛化的很好。边界的意思是,给定一个足够大的训练集,很有可能你的学习器要么可以返回一个泛化良好的假设,要么无法找到一个保持正确的假设。这个边界也无法告诉我们如何去选择一个好的假设空间。它只告诉我们,如果假设空间包含了真实的分类器,那么学习器输出一个不好的分类器的概率会随着训练数据的增加而减少。如果我们缩小假设空间,边界就会有所改善,但是假设空间包含真实分类器的几率也会降低。



另一种常用的理论担保是渐近:给定无限的数据,可以保证学习器输出正确的分类器。这个保证让人欣慰,但仅仅因为渐进的保证而确定一个学习器是十分草率的。在实践中,我们很少处于渐近状态。而且,由于上文讨论的偏差 - 方差的权衡,在无限数据下,如果学习器A比学习器B表现好,则在有限数据中,学习器B往往比学习器A表现的要好。


机器学习中理论保证的主要作用不是作为实践中决策的标准,而是在算法设计中作为理解和驱动的来源。在这方面,他们是相当有用的;事实上,理论与实践的密切配合是机器学习多年来取得如此巨大进步的主要原因之一。但要注意:学习是一个复杂的现象,因为学习器既有理论证实,并且可实际应用,但这并不意味着前者是后者的依据。


7.特征工程是关键

在一天结束时,总有一些机器学习项目会成功,而一些会失败。是什么造成了它们之间的差异?显然最重要的影响因素是特征的使用。如果你有许多独立的特征, 这些特征类别都有很好的关联,那么学习起来就很容易。另一方面,如果这个类别与特征的关系十分复杂,那么你可能就无法学习它。通常情况下,原始数据不可直接用来学习,但是可以从中构建特征。这通常是机器学习项目中主要工作所在。它往往也是机器学习中最有趣的一部分,直觉,创造力和“black art”与技术一样重要。


初学者常常惊讶于机器学习项目中真正用于学习的时间太少。但是,如果你考虑了在数据收集,整合,清理和预处理上所花费的时间,以及在特征设计中进行的无数次试验与失败,这些就都说得通了。另外,机器学习不是建立数据集和运行学习器的一个一次性过程,而是一个运行学习器,分析结果,修改数据和/或学习器等不断重复,反复迭代过程。真正的学习通常是这些内容中最快的一部分,这是因为我们已经非常精通它了!特征工程更加困难,因为它是一个特定领域的,而学习器在很大程度上是通用的。但是,这两者之间没有明确的界限,这也是最有用的学习器往往是那些可以促进知识整合的学习器的另一个原因。


6.jpeg


8.更多的数据胜过更聪明的算法

在现如今,数据往往是致胜的关键,使用更聪明的算法取得的回报要比你预期的更少,这往往超出了许多人的预期。

7.jpeg



9.要学习许多模型,不仅仅是一个

将多种情况的学习器进行结合,而不是挑选出最优情况,往往能取得更好的结果。

8.jpeg

10.简单并不意味着准确
与奥卡姆剃刀原理相违背,越简单的模型并不一定越准确。

9.png


11.可表示并不意味着可学习

仅仅因为一个函数可以被表示并不意味着它是可以被学习的。例如,标准的决策树学习器并不能学习出比其训练样本更多的叶子节点。 在连续空间中,使用一组固定的基元来表示很简单的函数通常都需要无限数量的项来表示。


10.jpeg


12.相关并不意味着因果

机器学习得出的相关性结果往往被视为代表因果关系,实际上,除非真正的做实验,很难说明我们之间的关系,但相关性是因果关系一个潜在的标志。

11.png


因论坛文章篇幅的限制,文章后部分内容只能为大家作简要概述,大家可移步BigQuant社区查看全文并参与讨论:https://community.bigquant.com/?1



本文由BigQuant《量化研究每周精选》原创推出,版权归BigQuant所有,转载请注明出处。

  • 参考文献及附录可前往BigQuant社区点击原文链接下载查看
  • 更多文章可前往BigQuant社区阅读并参与讨论:www.bigquant.com
  • BigQuant是一个可拖曳无需编程的机器学习、深度学习量化研究和投资平台,完全免费,开放注册。用户在这里可以无门槛的使用最领先的人工智能技术,开发出更好的投资策略。

















附件列表
5.png

原图尺寸 141.74 KB

5.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-2-2 16:12:25
good idea
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-2-2 17:20:36
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群