【CS231n】A Few Useful Things to Know about Machine Learning全文

近期看到了阅读量的增长,发现这个文章翻译并不好,所以对翻译做了优化,感觉之前的翻译太草率了,太对不起大家了。

***************************************************************************************************
假装我是分割线
***************************************************************************************************

【CS231n】斯坦福大学李飞飞视觉识别课程笔记

A Few Useful Things to Know about Machine Learning

Pedro Domingos

A Few Useful Things to Know about Machine Learning - 原文

0 ABSTRACT

机器学习算法能够通过从样本进行泛化而得出怎样解决一个问题的方案,在手动编程不可取的时候机器学习算法通常是可行的并且其代价也是可接受的。随着越来越多的数据可用,可以解决更多的更加复杂的问题。因此,机器学习在计算机科学等领域得到了广泛的应用。然而,开发成功的机器学习应用程序需要大量的“黑盒艺术”,这些在教科书中很难找到。本文总结了机器学习研究人员和实践者的12个关键的经验教训。这些包括一些需要避免的陷阱,需要关注的重要问题,以及一些常见问题的答案。

1 INTRODUCTION

机器学习系统自动地从数据中学习到一套程式,相比手动构建来说,这是相当有诱惑力的,在过去的十年中,机器学习的使用已经迅速蔓延在计算机科学和其他领域。机器学习应用于网络搜索、垃圾邮件过滤器、推荐系统、广告投放、信用评分、欺诈检测、股票交易、药物设计以及许多其他应用。麦肯锡全球研究所(McKinsey Global Institute)最近的一份报告称,机器学习(又称数据挖掘或预测分析)将成为下一波创新浪潮的驱动力[16]。一些优秀的教科书可供感兴趣的实践者和研究人员使用(例如:[17,25])。然而,成功开发机器学习应用程序所需的许多“民俗知识”并不容易在其中获得。因此,许多机器学习项目花费的时间比必要的长得多,或者最终产生的结果并不理想。然而,这些“民俗知识”的大部分是相当讲清楚的,这就是本文的目的。

有许多不同类型的机器学习任务存在,但出于介绍的目的,我将重点介绍最成熟和也是应用最广泛的一种:分类。尽管如此,我将讨论的问题适用于所有机器学习任务。分类器是一个系统,它的输入(通常)是离散和/或连续特征值的向量,然后输出单个离散值,即类别。例如,垃圾邮件过滤器将电子邮件消息分类为“垃圾邮件”或“非垃圾邮件”,其输入可能是布尔向量 x=(x1...xj...xd)x = (x_{1},...,x_{j},...,x_{d}) ,其中 xj=1x_{j} = 1 ,如果字典中的第 jj 个单词出现在电子邮件中,则 xj=1x_{j} = 1 ,否则 xj=0x_{j} = 0 。学习器输入一组训练示例 (xiyi)(x_{i},y_{i}) ,其中 xi=(xi1xid)x_{i} = (x_{i,1},…,x_{i,d}) 为观察到的输入, yiy_{i} 为对应的输出,输出一个分类器。对学习器的测试是这个分类器是否为将来的示例样本 xtx_{t} 生成正确的分类输出 yty_{t} (例如,垃圾邮件过滤器是否正确地将以前没有看到的邮件分类为垃圾邮件)。

2 LEARNING = REPRESENTATION + EVALUATION + OPTIMIZATION

假设你有一个你认为性能还不错的机器学习器,你面临的第一个问题是各种各样令人眼花缭乱的学习算法,应该使用哪一个?可供选取的实际上有成千上万个,每年还会发布数百个。想要在这个巨大的空间中不迷失的关键是要意识到它只由三个组件组成。三个组件包括:

Representation. 一个分类器必须用计算机能够处理的某种形式语言表示。相反,为学习器选择一个表示就相当于选择一组它可能学习的分类器。这个集合称为学习器的假设空间。如果分类器不在假设空间中,则无法学习。我们将在稍后的部分进行处理的一个相关的问题是,如何表示输入,即,应该使用什么样的特征。

Evaluation. 需要一个评价函数(也称为目标函数或评分函数)来区分好的分类器和坏的分类器。算法内部使用的评估函数可能与我们希望分类器优化的外部函数不同,不要对优化过于紧张(见下文),这是由于下一节讨论的问题。

Optimization. 最后,我们需要一个方法来在语言中的分类器中搜索得分最高的分类器。优化技术的选择是提高学习器学习效率的关键,而且还可以用来判断分类器是否存在不止一个最优解。对于初学者来说,先使用成熟的优化器作为开端是很常见的,熟悉流程之后,这些优化器将被根据需要而定制设计的优化器所取代。

表1显示了这三个组件的常见示例。例如,k近邻通过查找k个最相似的训练实例样本,并预测其中的大多数类别来对测试实例进行分类。基于超平面的方法对每个类别进行特征的线性组合,并用组合值最高的类别进行预测分类。决策树在每个内部节点上测试一个特征,在每个特征值上测试一个分支,并在叶子节点上进行类别预测。算法1给出了一个布尔域最基本的决策树学习器,使用信息增益和贪婪搜索[21]。 InfoGain(xjy)InfoGain(x_{j},y) 是特征 xjx_{j} 和类 yy 之间的相互信息。 MakeNode(xc0c1)MakeNode(x,c_{0},c_{1}) 返回一个节点,该节点用于测试特征 xx ,并将 c0c_{0} 作为 x=0x = 0 的子节点,将 c1c_{1} 作为 x=1x = 1 的子节点。

在这里插入图片描述

当然,并不是说表1中每一列中任意组件的所有组合都能构成有价值的算法。例如,离散变量表示模型自然就要用组合优化,连续变量表示模型自然就要用连续优化。然而,许多学习器既有离散的成分,也有连续的成分。也许不远的未来,在某一学习器身上出现每一种可能的组合出来的学习方法,都是有意义的!!!

大多数教科书都主要是在介绍表示方式,这样很容易让人忽略其他两个重要的部件同样重要的事实。如何选择每个组件是没有诀窍的,但是接下来的部分将涉及一些选择上的关键问题。从接下来的内容中我们将会看到,机器学习项目中的一些选择可能比学习器的选择更重要。

3 IT’S GENERALIZATION THAT COUNTS

机器学习的基本目标就是我们可以推广到训练集之外的其他数据中,也就是泛化。这是因为,无论我们拥有多少数据,我们都不太可能将所有可能出现的数据都用于训练。(例如,如果字典中一共有100,000个单词,那么上面描述的垃圾邮件过滤器就有 2100,0002^{100,000} 个可能的不同输入。)在训练集中做得好很容易(只要让学习算法记住所有的训练样本)。在机器学习初学者中,最常见的错误是对训练数据进行测试,产生成功的错觉。可是一旦将这些选择的分类器在新数据上进行测试,你会发现分类结果与随机猜测的结果差别不大。因此,如果你请某人来帮你设计设计构建分类器,请确保将你的数据集中的一部分保留下来作为训练集,并测试他提供给你的分类器是否好用。相反,如果有人请你来设计构建一个分类器,那么从一开始就从数据集中划分出来一部分留作测试数据,在你利用其余的数据训练并且得到了分类器之后,再把这些数据拿出来使用。

在这里插入图片描述

如果用一些隐蔽的方法,你就可以使用测试数据来进行大量调优并调优参数,那么你的分类器可能会受到测试数据的潜在影响。(机器学习算法有很多类似的小把戏,这种事情时有发生,而成功往往来自于不断摆弄它们,所以这是一个真正的问题,我们必须更加注意。)当然,采用保留一部分数据作为测试集的方法会减少可用来训练的数据的数量。我们可以通过交叉验证的方式来弥补缓解这种情况,交叉验证的过程如下:将整个训练数据集随机地分成(比方说)十个子集,在对其余九个子集进行训练时对剩下的一个子集都保留下来用于测试,在这个没有看到的子集上测试学习分类器,并对结果进行平均运算,以查看特定参数设置的学习算法效果如何。

在机器学习的早期,将训练和测试数据分开的需要这种思想并没有得到广泛的认可。这是因为,如果当时的学习器能够拟合出的维度很有限(例如,超平面),这样很难完全将样本区分开,这就导致了在训练集和测试集上的结果差不多,当时的人们也就认为没有这么做的必要了。但是随着机器学习研究的深入,学习器越来越复杂、易变,对于非常灵活的分类器(例如,决策树),甚至是线性分类器在使用了大量特征之后也有了这样的特征,此时对训练集与测试集严格地分离也就是必须的了。

注意,泛化作为目标,是机器学习的一个非常有趣的结果。与大多数其他优化问题不同,因为我们无法提前知道需要优化的函数是什么!在训练过程中,我们必须假定训练错误可以代替测试错误,这是非常危险的。如何解决处理这个问题将在下一节中讨论。从积极的方面来看,由于目标函数只是真实目标的假定,我们并不一定要彻底地优化目标函数;事实上,有时候通过贪婪搜索返回的局部最优解甚至可能会优于全局最优解。

4 DATA ALONE IS NOT ENOUGH

将泛化作为目标还有另一个主要问题:不管你拥有多少数据,都是不够的。这样想想吧:我们想要对100个变量进行拟合,使用了一百万个数据样本,那么我们至少有 21001062^{100} - 10^{6} 个数据没有包含在样本中。这种情况下,你怎么才能知道剩下的这些数据是属于哪一类呢?在缺乏进一步信息的情况下,我想没有比抛硬币更有效的方法了。200多年前,哲学家大卫 • 休谟(David Hume)首次观察并提出了这一问题(形式略有不同),但即使在这么多年后的今天,仍有人在使用机器学习算法时因为忽略了这个问题而犯错。任何学习器都会或多或少地在训练数据之外包含一些没有告诉它的知识或假设,以便能够泛化。这是由 Wolpert 在他著名的“没有免费的午餐”的定理中,以另一种方式说出了这个道理,根据这个定理,没有任何一个学习器,可以对所有可能要学习的优化函数学出的分类器——随机猜测表现得更好。

这似乎是个相当令人沮丧的消息。既然如此,那么我们怎么能指望学到什么呢?那我们搞机器学习还有什么意义呢?瞎猜就好了嘛!幸运的是,在现实世界中,我们要学习的优化函数并不是从所有数学上可能的函数集中统一地画出来的!事实上,很多非常普遍的假设——比如平滑性、相似的数据更有可能属于同一个类、数据之间有限的依赖性或有限的复杂性等等——通常就足以带来更好的效果,这也是机器学习如此成功——被广泛使用的一个重大原因。与演绎一样,归纳(学习器所做的)也是一种知识杠杆:它将少量的输入知识转化为大量的输出知识。归纳法是一种比演绎法强大得多的杠杆,它需要更少的输入知识就能产生更有用的结果,但它仍然需要超过零的输入知识才能发挥作用。不管我们用任何一种手段来获得额外的知识,和任何杠杆一样,我们投入的信息越多,能够从中获得的知识也就越多。

由从上面的论述可以得到一个结论:在机器学习中,选择一种表现形式的关键标准之一是利用这种表示方法,能够传达出什么样的信息。例如,如果我们知道在我们的问题中样本有哪些共同点,那么基于实例的方法可能就是一个不错的选择。如果我们知道数据概率的依赖关系,图形模型是一个很好的选择。如果我们知道在何种前提下,样本会归为哪一类,那么“如果……然后……规则可能是最好的选择。在这方面上讲,最有用的学习器是那些不只是有固定的假设,而是允许我们明确地陈述它们,广泛地改变它们,并自动地将它们纳入学习,有机地结合在一起(例如,使用一阶逻辑[22]或语法[6])。

回想起来,学习中对额外知识的需要并不令人惊讶。因为机器学习不是魔法,它不能从无到有。它所做的就是从更少的知识中得到更多的有用知识。工程总是有这样的特点,就像编程一样,需要做很多工作:我们必须从底层建立起整个系统。而机器学习学习则更像是耕作,让大自然做大部分的工作。在种植庄稼的时候,农民把种子和营养物质结合起来,把种子种在地里,然后施肥。学习器将知识和数据结合在一起来发展程序,得到更多的知识。

5 OVERFITTING HAS MANY FACES

如果我们拥有的知识和数据不足以让我们得到完全确定正确的分类器呢?这种情况下,我们可能会产生幻觉,认为分类器(或部分分类器)并不是基于现实的,而只是对数据中的随机特征进行编码,它把数据中的巧合当真了。这个问题被称为过度拟合,是机器学习的难题之一。当你的学习器输出一个分类器,它对训练数据集的测试准确率是100%,但对测试数据集的测试准确率只有50%,而在理想情况下它可以输出一个不论在训练集还是测试集中准确率都是75%的分类器,这就是发生了过拟合。

在这里插入图片描述

机器学习领域的每个人都知道过度拟合,但在很多情况下它并不会立即表现出来,而且不是很明显。理解过度拟合的一种方法是将泛化误差分解为偏差和方差[9]。偏差是学习器持续学习同一件错误事情的倾向。方差是一种学习随机事物的倾向,与真实信号无关。图1用掷飞镖的类比说明了这一点。一个线性学习器有很高的偏差,因为线性分类器无法完全制造分割两类的超平面。决策树就不会存在这个问题,因为它理论上来说可以表示任何布尔函数,但从另一个角度来看,它可能存在很大的方差:在由同一现象引出的问题,在不同训练集数据上学习,决策树模型通常会得到非常不同的结果,而理论上它们应该是相同的。同样的推理也适用于优化方法的选择上:波束搜索比贪婪搜索具有更低的偏差,但更高的方差,因为它尝试了更多的假设。因此,与我们的直觉相反,一个更强的学习器并不一定比一个较弱的学习器表现得更好。

图2说明了这一点【下面黑体字】。尽管真正的分类器是一组规则,但是使用多达1000个例子的朴素贝叶斯比规则学习器更准确。尽管朴素贝叶斯错误地假设边界是线性的,这还是发生了!这种情况在机器学习中很常见:强错误假设可能比弱正确假设更好,因为后者的学习器需要更多的数据来避免过度拟合。

1个训练实例包含64个布尔特征,并根据一组“如果…然后……”规则。这些曲线是随机生成的规则集的100次运行的平均值。误差条是两个标准差。详情请参阅Domingos和Pazzani[11]。

交叉验证可以帮助对抗过拟合,例如使用它来选择要学习的决策树的最佳大小。但这个方法并不是万灵药,因为如果我们认为的设定了太多的参数选择,那么模型本身就会开始过拟合[18]。

除了交叉验证之外,还有许多方法可以对抗过拟合。其中最常用的方法是在评价函数中添加正则化项。这样就可能会惩罚具有更多复杂结构的分类器,从而有利于产生具有更小空间,更加结构简单的分类器。另一种方法是在添加新结构之前进行统计显著性检验,如卡方检验,以此来判断加入此结构是否有助于提升效果。当数据非常缺乏时,这些方法特别有用。然而,你应该对声称某种特定技术可以完全“解决”过度拟合问题持怀疑态度。因为为了避免过拟合(方差),很容易陷入到欠拟合(偏差)这个相反的错误中。想要同时做到避免过拟合和欠拟合这两种情况需要学习设计出一个完美的分类器,然而根据“没有免费的午餐”原理,如果事先没有足够知识去了解,就没有任何一种分类器能够在各种情况下总是最好的。

关于过度拟合的一个常见的误解是,认为过拟合是由噪声引起的,比如标注了错误类的训练样本。这确实会加重过拟合,因为这会让学习器画出一个反复无常的决策面,让那些例子保持在它认为正确的一边。但即使在没有噪声的情况下,也可能会发生严重的过拟合。例如,假设我们有一个布尔型分类器,它只需要从训练集中析取出标记为“true”的样本(换句话说,分类器是析取范式中的一个布尔公式,其中每一项都是一个特定训练样本的特征值的合取)。无论训练数据中是否有噪声,该分类器都能得到训练集中所有正确的训练样本,而将每个正测试样本都标记为错误分类。

多次假设检验[14]的问题与过拟合十分相关。标准的统计测试假设一次只能测试出一个假设,但是现代学习器可以很容易地在测试时测试数百万个假设。因此,看似重要的假设,实际上可能并不重要。例如,如果有一家信托基金公司连续十年业绩领先于业内,你会觉得它很厉害,但是如果仔细一想,如果每年任何一家公司都会有50%的概率领先,那么它就有可能很幸运地连续十年领先。这个问题可以通过加入一系列的假设,做显著性检验来判断,但这同样可能导致拟合不足的问题。一种更好的方法是控制错误接受的非零假设的比例,即错误发现率[3]。

6 INTUITION FAILS IN HIGH DIMENSIONS

在过度拟合之后,机器学习中最大的问题就是维数的诅咒了。这个表达式是 Bellman 在1961年创造的,主要是想说明如下事实:当输入是高维度的时候,许多在低维度下运行良好、处理非常有效的算法就无法得到理想的结果。但在机器学习领域中,维度的诅咒这个词的含义要多得多。随着样本的维数(特征的数量)的增长,正确地进行泛化将变得指数级困难,因为固定大小的训练集只能覆盖整个输入空间中很小的一部分。即使适中等维度的训练集比如100,并且拥有一个包含1万亿个样本的庞大训练集,后者也只覆盖了输入全空间的大约 101810 ^{-18} 的一小部分,这使得机器学习既必要又困难。

在这里插入图片描述

更严重的是,机器学习算法所依赖的基于相似性的推理(显式或隐式)也在高维度中失效。考虑一个以汉明距离为相似性度量的最近邻分类器,假设该类就是 x1x2x1∧x2 。如果没有样本中没有其他无关特征,这本身是一个很简单的问题。但如果有98个不相关的样本特征 x3x100x_{3},…,x_{100} 时,它们发出的噪声足以完全淹没了 x1x_{1}x2x_{2} 的信息,这就会导致最近邻无法有效地进行随机预测。

更令人不安的是,最近邻仍然有一个问题,即使所有100个功能是相关的!这是因为在高维度情况下,所有的样本看起来都是一样的。例如,假设样本被放置在一个规则网格上,并考虑一个测试样本 xtx_{t} 。如果规则网格是d维的,那么距离它最近的 xtx_{t} 的二维例子都是相同的距离。因此,随着维数的增加,越来越多的样本成为 xtx_{t} 的最近邻,直到最近邻(也就是这个类)的选择变得随机。

这只是高维度下诸多普遍问题的一个:我们来自三维世界的直觉,往往不适用于高维度世界。在高维度情况下,多元高斯分布的大部分质量不再集中在均值附近,而是在一个越来越远的“壳层”中;高维度橘子的体积大部分在表皮,而不是果肉。如果在一个高维度超立方体中均匀分布着一定数量的实例,那么在某些维数之外,大多数实例会更接近于超立方体的一个面,而不是最近邻。如果我们把一个超球面近似地写在一个超立方体上,在高维度空间中几乎所有的超立方体的体积都在超球面之外。这对于机器学习来说是个坏消息,因为在机器学习中,一种类型的形状常常与另一种类型的形状近似。

在二维或三维空间中构建一个分类器很容易;仅仅通过视觉观察,我们就可以在不同类的样本之间找到一个合理的边界。(甚至有人说,如果人们能在高维空间中看到东西,机器学习就没有必要了。)但在高维度情况下很难理解发生了什么。这反过来又使设计一个好的分类器变得困难。有些人可能天真地认为,收集更多的特征是没有坏处的,因为最坏的情况下,它们不会提供关于类的新信息。但事实上,它们的好处可能会被维度的诅咒所抵消。

幸运的是,有一种方法在一定程度上抵消了这种诅咒,这可以被称为“非均匀的祝福”。在大多数应用程序中,样例并不是均匀地分布在整个实例空间中,而是集中在或接近一个低维流形。例如,k近邻对于手写数字识别非常有效,即使数字图像的每像素只有一个维度,因为数字图像的空间要比所有可能图像的空间小得多。学习器可以隐式地利用这个较低的有效维度,或者可以使用显式降低维度的算法(例如,[23])。

7 THEORETICAL GUARANTEES ARE NOT WHAT THEY SEEM

机器学习的论文中充斥着理论保障。最常见的一种类型是对确保良好泛化所需的样本数量的限制。你应该如何看待这些保证?首先,值得注意的是,它们甚至是很有可能的。传统上一直拿归纳法与演绎法进行比较:在演绎法中,你可以保证结论是正确的;在归纳法中,所有的一切都是很难说的。或者这是几个世纪以来的经典智慧。最近几十年的主要发展之一是认识到了事实上我们可以根据归纳的结果做出保证,特别是如果我们愿意给出概率保证的话。

基本的参数是非常简单的[5]。让我们看一个分类器,如果它真正的出错率大于 ϵepsilon,那么它就是一个不好的分类器 。然后一个坏的分类器的概率是符合 nn 个随机独立样本的,都小于 (1ϵ)n(1-epsilon)^{n} 。在学习器的假设空间hh中,让bb代表不好的分类器的数量。由联合界限定,它们之中至少之一的概率是小于 b(1ϵ)nb(1-epsilon)^{n} 的。假定学习器总是返回一个一致的分类器,那么这个分类器是不好的概率就比 H(1ϵ)n|H|(1-epsilon)^{n} 小,这里我们使用这一事实 bHb leq|H| 。如果我们想要这个概率小于 δdelta ,让 n>ln(δ/H)/ln(1ϵ)1ϵ(lnH+ln1δ)n>ln (delta /|H|) / ln (1-epsilon) geq frac{1}{epsilon}left(ln |H|+ln frac{1}{delta} ight) 就足够了。

不幸的是,对这类保证仍然不能全信。这是因为用这种方法得到的边界约束通常都是极其松散的。上面所说的约束中的理想特征所需样例数量只会随着 H|H|1/δ1/ delta 的增长而对数增长。不幸的是,最有趣的假设空间在特征 dd 的数量上都是双指数的,我们还需要一些 dd 的指数形式的例子。例如,考虑 dd 个布尔变量的布尔函数空间。如果有 ee 个不同的例子,就有 2e2^{e} 个不同的函数,既然有 2d2^{d} 个可能的样例,可能的函数总数就是 22d2^{2 ^{d}} 。即使对于“仅仅”是指数型的假设空间,它的约束仍然是非常松散的,因为并集的约束是非常悲观的。例如,如果有100个布尔特征并且假设空间的决策树有10层,为了保证上述约束条件满足 δ=ϵ=1%delta=epsilon=1 \% ,我们需要一百万以上的例子。但在实践中,这其中的一小部分就足以进行准确的学习了。

此外,我们必须注意这样的边界是什么意思。例如,它并没有说,如果你的学习器返回了一个与特定训练集一致的假设,那么这个假设可能很好地概括了。它的意思是,给定一个足够大的训练集,你的学习器很有可能要么返回一个概括良好的假设,要么无法找到一个一致的假设。这个界限也没有说明如何选择一个好的假设空间。它只告诉我们,如果假设空间包含真分类器,那么学习器输出一个坏分类器的概率会随着训练集的大小而减小。如果我们缩小假设空间,边界就会改进,但是包含真正分类器的机会也会缩小。(当真正的分类器不在假设空间中,但是类似的考虑也适用于它们时,就会有界限。)

另一种常见的理论保证是渐近的:给定无限的数据,保证学习器输出正确的分类器。这是令人放心的,但因为它的渐进保证,它可能会轻率地从两者中选择一个学习器而不是另一个。在实践中,我们几乎很少处于渐近状态(也称为“将近区”)。而且,由于我们在上面讨论的偏差 - 方差权衡,在给定无限数据的情况下,如果学习器A优于学习器B,那么学习器B往往在给定有限数据时优于学习器A。

理论保证在机器学习中的主要作用不是为实际决策制定标准,而是为理解和驱动算法设计提供源泉。在这方面上看,它们是很有用的;事实上,理论和实践的密切互动是机器学习取得如此巨大进步的主要原因之一。但“购者自慎”:学习是一种复杂的现象,仅仅只是学习器有理论依据并且可以在实践中工作,这并不意味着前者就是后者的原因。

8 FEATURE ENGINEERING IS THE KEY

最终,一些机器学习项目成功了,而一些失败了。这两者有什么区别呢?当然有,最重要的因素是两者所使用的特征。如果你有许多独立的特征,并且每个特征都与类别紧密地相关,那么学习就很容易。另一方面,如果类别是功能非常复杂的函数,你可能无法学习它。通常情况下,原始数据的形式是不适合学习的,但是你可以从原始数据中构建特征。这通常是我们在机器学习项目中的大部分工作的方向,或者说是比较有效的方法,同时它通常也是最有趣的部分之一,直觉、创造力和“黑盒艺术”与技术都是一样重要的。

第一次使用机器学习的人,也就是初学者常常会惊讶于这一点,在机器学习项目中,实际花在机器学习上的时间是如此之少。但是,如果你考虑到收集数据、集成数据、清理数据并对其进行预处理等等这些过程是多么耗时,以及在特征设计中有多少试验和错误,那么这样做就是有意义的。此外,机器学习不是一个建立数据集上并运行学习器的一次性过程,而是一个运行学习器、分析结果、修改数据和/或学习器并不断重复的迭代过程。学习通常是这其中速度最快的部分,但那是因为我们已经很好地掌握了它!特征工程为什么更为困难呢?是因为它是特定于领域的,而学习器在很大程度上是可以通用各个领域的。然而,两者之间没有明显的界限,这也是为什么最有用的学习器是那些有助于整合知识的人。

当然,机器学习的‘圣杯’之一是使越来越多的特征工程过程趋于自动化进程。现在经常采用的一种方法是自动地生成大量候选特征,并根据(比方说)它们获得的关于类别的信息来选择最佳特征。但是请记住,孤立地来看不相关的特征组合起来可能是相关的。例如,如果类别是k个输入特征的XOR,那么每个特征本身都不包含关于类别的任何信息。(如果你想惹恼机器学习器,就提出XOR。)另一方面,运行具有大量功能的学习器来找出哪些功能组合在一起是有用的,这可能太耗时,或者会导致过度拟合。因此,最终没有什么可以替代你在特征工程中投入的智慧。

9 MORE DATA BEATS A CLEVERER ALGORITHM

假设你已经尽力地构建了一组尽可能好的特征,但是得到的分类器分类效果仍然不够精确。你现在能做什么?有两个主要的选择:设计一个更好的学习算法,或者收集更多的数据(更多的样例,这可能带来更多的原始特征,更容易受制于维数的诅咒)。机器学习研究人员主要关注的是前者,但实际上,获得成功的最快途径往往是获取更多数据。根据经验,一个包含大量数据的愚蠢算法胜过一个包含少量数据的聪明算法。(毕竟,机器学习就是让数据来完成繁重的工作。)

然而,这确实又带来了另一个问题:可伸缩性。在大多数计算机科学领域中,两种主要的有限资源是时间和内存。但是在机器学习中,还有第三个资源:训练数据。从一个十年到另一个十年中瓶颈一直在变化。在20世纪80年代,瓶颈往往是数据。但是在今天瓶颈往往是时间了。因为大量的数据是可用的,但是没有足够的时间来处理它,所以它被闲置了。这就导致了一个悖论:尽管从理论上讲,更多的数据意味着可以学习训练得到更复杂的分类器,但在实际应用上,最终还是会使用更简单的分类器,因为复杂的分类器往往需要太长的时间来学习训练。可能的部分解决方案是找到一种可以快速学习训练复杂分类器的方法,并且事实上在这个方面已经取得了显著的进展(例如,[12])。

使用更聪明的算法得到的回报比你想象的要小的部分原因是,在第一个近似中,它们都是一样的。当你考虑一系列不同的表现形式时,比如规则集合和神经网络,这种相同就是令人惊讶的。但事实上命题规则很容易被编码成神经网络,其他表述之间也有类似的关系。所有的学习器本质上都是通过将附近的样例分组到同一个类别中来学习训练的;关键的区别就在于“附近”这个词的意思。“使用非均匀分布的数据,学习器可以产生完全不同的边界,同时仍然在重要的区域做出相同的预测(这些区域有大量的训练样本,因此也有可能出现大多数测试样本)。”这也就解释为什么强大的学习器虽然可能不稳定,但仍然可以保持准确。图3用二维形式演示了这一点;这种效应在高维度空间中更强。

在这里插入图片描述

作为一个规则,首先尝试最简单的学习器这种行为是值得的(例如,在逻辑回归之前使用朴素贝叶斯,在支持向量机之前使用k近邻)。更有经验的成熟学习器更有吸引力,但它们通常更难使用,因为它们有更多的旋钮,你需要转向以获得良好的结果,而且他们的内部更不透明。

学习器可以分为两个主要大类:一类是表示形式具有固定大小的学习器,如线性分类器;另一类是表示形式能够随数据增长而变化的学习器,如决策树。(后者有时被称为无参数学习器,但这有点不幸,因为它们通常需要学习的参数比带参数学习器多很多。)固定规模大小的学习器只能利用消化这么多的数据。(注意图2中朴素贝叶斯算法的精度在接近70%准确率附近。)可变大小的学习器在理论上可以学习任何给定足够数据的函数,但是在实践中,由于算法的限制(例如,贪心搜索落入局部最优)或计算成本,它们可能无法学习到任何函数。此外,由于维数的诅咒,现有的数据量还有可能不够。基于这些原因,聪明的算法——那些充分利用数据和计算资源的算法——只要你愿意付出努力,最终往往会得到不错的回报。在设计聪明的学习器和可学习分类器之间没有明显的边界;不仅如此,任何给定的知识片段都可以被编码到学习器中或从数据中学习得到。因此,机器学习项目通常是学习器设计的重要组成部分,实践者需要在[13]方面有一些专业知识。

最后,最大的瓶颈不是数据或CPU周期,而是人的周期。在研究论文中,典型的比较学习器的方法通常比较学习器的准确性和计算成本。但是,节省的人力和获得的洞察力确实更为重要的。尽管更难衡量,但是这往往更为重要。这样有利于产生人类可理解的输出的学习器(例如,规则集)。并且最大限度地利用机器学习的组织大部分是那些拥有基础设施的组织这一条,这些基础设施使得对许多不同的学习器、数据源和学习问题进行实验变得简单和高效,并且机器学习专家和应用领域的专家之间有密切的合作。

10 LEARN MANY MODELS, NOT JUST ONE

在机器学习的早期,每个人都有自己最喜欢的学习器,并有一些先天的理由去相信它的优越性。很多人花费大部分的精力在尝试它的许多变体上,并选择了其中最好的一个。然而,通过系统性的实证和比较得出,在不同的应用中,学习效果最好的学习器是不同的,并且包含不同学习器的系统开始出现。现在的努力是尝试许多不同种类的学习器,仍然选择其中最好的一个。但后来研究人员注意到,如果我们不是选择发现的最佳变异,而是将许多变异组合在一起,结果会更好——通常是更好得多——而且用户只需付出很少的额外努力这并不难。

创建这样的模型集成在现在是标准的[1]。在最简单的技术中称之为打包,我们只需通过简单地重采样来生成不同训练集的随机变化,分别让每个学习器在每个训练集上学习,然后通过投票将结果决定出来。这样做之所以有效,是因为它极大地减少了方差,而只是略微增加了偏差。在增强过程中,训练样例带有权重并且相似性很低,因此每个新分类器都将重点放在前一个容易出错的样例上。在叠加过程中,单个分类器的输出都成为“更高级”学习器的输入,高层学习器来决定如何结合它们才是最佳的。

还有许多其他的技术,而且趋势是越来越集成。在 Netflix 比赛上,来自世界各地的团队尝试建立一个最佳视频推荐系统(http://netflixprize.com)。随着比赛的进行,各队发现他们的学习器通过将自己的学生与其他队的学生的学习器结合在一起获得了最好的成绩,并逐渐融入到越来越大的队伍中。比赛的优胜者和亚军都是由叠加超过100个学习器而成的组合,并且将这两组的模型组合在一起还可以进一步提高结果。毫无疑问,我们将在未来看到更大的震撼,更多更大的学习器。

模型总体不应与贝叶斯模型平均(BMA)混淆。BMA是关于学习[4]的理论最优方法。在BMA中,对新样例的预测是通过对假设空间中所有分类器的单个个体预测进行平均的方式得到的,并根据分类器对训练数据的解释程度以及我们对它们的先验信任程度进行加权来实现的。尽管它们表面上相似性极高,但整体和BMA是非常不同的。集成改变了假设空间(例如,从单个决策树到它们的线性组合),并且可以采取多种形式。BMA根据一个固定的公式对原始空间中的假设进行赋值。BMA权重与(比方说)打包或强化产生的权重非常不同:后者是相当均匀稳定的,而前者是极端倾斜不对称的,以至于通常由单个个体权重最高的分类器会占据主导地位,这实际上等同于BMA直接就会选择它[8]。这样做的一个实际结果就是,尽管模型集成是机器学习工具包的一个关键部分,但BMA不值得这么麻烦。

11 SIMPLICITY DOES NOT IMPLY ACCURACY

奥卡姆剃刀(Occam 's razor)的著名论断是,如无必要,勿增实体。在机器学习中,这种说法通常意味着,给定两个训练错误相同的分类器,两个分类器中较简单的一个可能将会有最低的测试错误率。这种说法的证据似乎经常出现在文献中,但事实上也有很多反例,“没有免费的午餐”定理暗示它不可能是真的。

我们在上一节看到了一个反例了:模型集成。在训练误差为零的情况下,通过增加分类器,提高了强化集成的泛化误差。另一个反例是支持向量机,它可以通过有效地增加参数而拥有无穷多个参数,而不需要过拟合。相反,函数符号 (sin(ax))(sin(ax)) 可以区分x轴上任意大的、任意标记的点集,即使它只有一个参数[24]。因此,与直觉相反,模型的参数数量与其过拟合趋势之间没有必要的联系。

更复杂的观点则认为复杂性等同于假设空间的大小,在此基础上,更小的空间允许用更短的代码表示假设。像上面关于理论保证的那一节那样的界限可以被认为意味着更短的假设可以更好地泛化。这可以通过在我们有先验偏好的空间中为假设分配更短的代码来进一步细化提炼。但是把这看作是在准确性和简单性之间进行权衡的一个“证明”是循环推理得到的:我们喜欢更简单的设计,所以我们才做出自己的假设,如果这些假设是准确的,那是因为我们的偏好是准确的,而不是因为我们选择的表示中假设是“简单的”。

更复杂的是,很少有学习器会彻底地搜索他们的假设空间。假设空间越大,尝试的假设越少的学习器,其相较于假设空间越小,尝试的假设越多的学习器,过度拟合的可能性就越小。正如 Pearl[19]所指出的,假设空间的大小只是一个粗略的指南,告诉我们什么才是与训练和测试错误相关的真正重要因素:选择假设的过程。

Domingos[7]调查了机器学习中关于奥卡姆剃刀问题的主要论点和证据。得出的结论是,更简单的假设应该是首选的,因为简单本身就是一种美,而不是因为它与假设的准确性有联系,这可能就是Occam最初的意思。

12 REPRESENTABLE DOES NOT IMPLY LEARNABLE

本质上,在非固定大小的学习器中使用的所有表示都有相关联的定理,其形式是“使用这种表示形式,每个函数都可以被表示,或者任意地逼近”。看到这番话的确保,粉丝们打消了顾虑,常常无视其他所有人。然而,仅仅因为一个函数可以表示,并不意味着它可以学习。例如,标准的决策树学习器不能学习叶子多于训练示例的树。在连续空间中,使用一组固定的基元来呈现一个简单函数也需要无限的组件。此外,如果假设空间具有的评价函数有许多局部最优性(这是常有的情况),那么照惯例即使它是可表示的,学习器也可能找不到真正的函数。给定有限的数据、时间和内存,标准学习器只能学习所有可能函数的一小部分子集,并且这些子集对于具有不同表示的学习器是有不同的表现形式的。因此,关键问题不是“它能被表示出来吗?”,对于这个问题,答案往往很琐碎,但“它能被学习吗?”尝试不同的学习器是有好处的(可能还可以把他们结合起来)。

对于某些函数,有些表示形式要比其他表示形式简洁得多。因此,这就导致了它们可能也只是需要少得多的数据来学习这些函数。许多学习器都是通过讲简单基础函数的偏差函数进行线性组合来学习。例如,支持向量机以某些训练样例(支持向量)为中心将核结合起来。用这种方法表示 nnbitbit 的奇偶性需要 2n2^{n} 个基础函数。不过使用具有更多层的表示(即,输入和输出之间有更多的步骤)的话,奇偶校验可以编码在一个线性大小的分类器中。寻找学习这些更深层次表现形式的方法是机器学习[2]的主要研究前沿之一。

13 CORRELATION DOES NOT IMPLY CAUSATION

相关性并不意味着因果关系这一观点被提出得如此频繁,以至于可能不值得赘述。但是,即使我们所讨论的这类学习器只能学习相关性,它们的结果往往被视为偶然的相关。这不是错了吗?如果是这样,那么人们为什么要这样做呢?

通常情况下,学习一个预测模型的目的是将其用作一个行动的指南。如果我们发现啤酒和尿布经常一起在超市买,那么也许把啤酒放在尿布旁边会增加销量。(这是数据挖掘领域的一个著名例子。)但实际上如果不做实验的话,就很难说了。机器学习通常应用于不受学习器控制的观察数据,而不是实验数据。一些学习算法可以从观测数据中提取出潜在的因果信息,但它们的适用性相当有限[20]。另一方面,相关性是潜在因果关系的标志,我们可以将其作为进一步研究的指南(例如,试图理解因果链可能是什么)。

许多研究人员认为因果关系只是一种方便的虚构。例如,物理定律中没有因果关系的概念。因果关系是否真的存在是一个深奥的哲学问题,目前还没有明确的答案,但对机器学习器来说,实际问题有两点。首先,不管我们是否称之为“因果关系”,我们都想要预测我们行为的影响,而不仅仅是可观察变量之间的相关性。其次,如果你可以获得实验数据(例如,通过将访问者随机分配到Web站点的不同版本),那么无论如何都要得到[15]。

14 CONCLUSION

与任何学科一样,机器学习也有很多难以缕清的“民俗智慧”,这些智慧可能很难获得,但对成功却至关重要。这篇文章总结了一些最突出的项目。学习更多的好地方是我的书《 The Master Algorithm》,一本介绍机器学习[10]的非技术入门书。要了解完整的在线机器学习课程,请访问http://www.cs.washington.edu/homes/pedrod/class。在http://www.videolectures.net也有一个机器学习讲座的宝库。一个广泛使用的开源机器学习工具包是Weka[25]。学习快乐!

15 REFERENCES

[1] E. Bauer and R. Kohavi. An empirical comparison of voting classification algorithms: Bagging, boosting and variants. Machine Learning, 36:105–142, 1999.
[2] Y. Bengio. Learning deep architectures for AI. Foundations and Trends in Machine Learning, 2:1–127, 2009.
[3] Y. Benjamini and Y. Hochberg. Controlling the false discovery rate: A practical and powerful approach to multiple testing. Journal of the Royal Statistical Society, Series B, 57:289–300, 1995.
[4] J. M. Bernardo and A. F. M. Smith. Bayesian Theory. Wiley, New York, NY, 1994.
[5] A. Blumer, A. Ehrenfeucht, D. Haussler, and M. K. Warmuth. Occam’s razor. Information Processing Letters, 24:377–380, 1987.
[6] W. W. Cohen. Grammatically biased learning: Learning logic programs using an explicit antecedent description language. Artificial Intelligence, 68:303–366, 1994.
[7] P. Domingos. The role of Occam’s razor in knowledge discovery. Data Mining and Knowledge Discovery, 3:409–425, 1999.
[8] P. Domingos. Bayesian averaging of classifiers and the overfitting problem. In Proceedings of the Seventeenth International Conference on Machine Learning, pages 223–230, Stanford, CA, 2000. Morgan Kaufmann.
[9] P. Domingos. A unified bias-variance decomposition and its applications. In Proceedings of the Seventeenth International Conference on Machine Learning, pages 231–238, Stanford, CA, 2000. Morgan Kaufmann.
[10] P. Domingos. The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books, New York, NY, 2015.
[11] P. Domingos and M. Pazzani. On the optimality of the simple Bayesian classifier under zero-one loss. Machine Learning, 29:103–130, 1997.
[12] G. Hulten and P. Domingos. Mining complex models from arbitrarily large databases in constant time. In Proceedings of the Eighth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pages 525–531, Edmonton, Canada, 2002. ACM Press.
[13] D. Kibler and P. Langley. Machine learning as an experimental science. In Proceedings of the Third European Working Session on Learning, London, UK, 1988. Pitman.
[14] A. J. Klockars and G. Sax. Multiple Comparisons. Sage, Beverly Hills, CA, 1986.
[15] R. Kohavi, R. Longbotham, D. Sommerfield, and R. Henne. Controlled experiments on the Web: Survey and practical guide. Data Mining and Knowledge Discovery, 18:140–181, 2009.
[16] J. Manyika, M. Chui, B. Brown, J. Bughin, R. Dobbs, C. Roxburgh, and A. Byers. Big data: The next frontier for innovation, competition, and productivity. Technical report, McKinsey Global Institute, 2011.
[17] T. M. Mitchell. Machine Learning. McGraw-Hill, New York, NY, 1997.
[18] A. Y. Ng. Preventing “overfitting” of cross-validation data. In Proceedings of the Fourteenth International Conference on Machine Learning, pages 245–253, Nashville, TN, 1997. Morgan Kaufmann.
[19] J. Pearl. On the connection between the complexity and credibility of inferred models. International Journal of General Systems, 4:255–264, 1978.
[20] J. Pearl. Causality: Models, Reasoning, and Inference. Cambridge University Press, Cambridge, UK, 2000.
[21] J. R. Quinlan. C4.5: Programs for Machine Learning. Morgan Kaufmann, San Mateo, CA, 1993.
[22] M. Richardson and P. Domingos. Markov logic networks. Machine Learning, 62:107–136, 2006.
[23] J. Tenenbaum, V. Silva, and J. Langford. A global geometric framework for nonlinear dimensionality reduction. Science, 290:2319–2323, 2000.
[24] V. N. Vapnik. The Nature of Statistical Learning Theory. Springer, New York, NY, 1995.
[25] I. Witten, E. Frank, and M. Hall. Data Mining: Practical Machine Learning Tools and Techniques. Morgan Kaufmann, San Mateo, CA, 3rd edition, 2011.
[26] D. Wolpert. The lack of a priori distinctions between learning algorithms. Neural Computation, 8:1341–1390, 1996.

原文地址:https://www.cnblogs.com/hzcya1995/p/13302820.html