zhangbaoanhadoop 2018-04-19
摘要: 这是机器学习研究人员和从业人员所学到的12个关键经验教训的总结,包括避免陷阱,重点问题以及常见问题的答案。
论文地址:https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf
机器学习算法可以通过从数据中归纳出如何执行类似任务的方法。在手动编程不适用的情况下,这通常是可行的并且非常划算。随着更多数据的可用,越来越多的问题可以得到解决。因此,机器学习正在被广泛应用于计算机等领域。然而,开发一个成功的机器学习应用程序需要大量难以在教科书中找到的“黑色艺术(black art)”。
我最近读了华盛顿大学Pedro Domingos教授的一篇技术论文,题为“机器学习的一些有用的知识”,它总结了机器学习研究人员和从业人员需要记住的12个关键经验教训,包括避免陷阱(pitfalls to avoid)、重点问题以及常见问题的答案。我想在本文中分享这些经验教训,因为在考虑解决一个机器学习问题时,它们是非常有用。
1:学习=表征(Representation)+评估+优化
所有机器学习算法通常由以下3个组件组成:
·表征(Representation):分类器必须用计算机可以处理的一些语言来表示。相反,为学习者选择一种表示方式等于选择它可能学习的一组分类器。这个集合称为学习者的假设空间。如果分类器不在假设空间中,则无法学习。一个相关的问题是如何表示输入,即使用哪些功能。
·评估:需要一个评估函数来区分分类器的好坏。算法内部使用的评估函数可能不同于我们希望分类器优化的外部评估函数。
·优化:最后,我们需要一种方法在语言中的分类器中搜索得分最高的分类器。优化技术的选择对于学习者的效率至关重要,并且还有助于确定评估函数具有多于一个最佳值时产生的分类器。新学习者开始使用现成的优化器(后来由定制设计替代)是很常见的。
2:机器学习要以预测训练集之外的数据为目的(It’s Generalization that Counts)
机器学习的基本目标是推广超出了训练集中的例子。这是因为,无论我们有多少数据,我们都不太可能在测试时再次看到这些确切的示例。训练集是很容易制作的。机器学习初学者最常犯的错误是测试训练数据,并有成功的幻觉。如果选择的分类器在随后的新数据上进行测试,那么通常不会比随机猜测更好。因此,如果聘请某人构建机器学习模型,请务必保留一些数据给自己,并测试他们提供的分类器。相反,如果被聘为构建机器学习模型,请将其中的一些数据设置为一开始,并仅在最后测试选择的分类器,然后在整个数据中训练处最好的模型。
3:没有足够的数据
这似乎是一个令人沮丧的消息。幸运的是,我们想要从现实世界中学习的模型并不是完全要遵循数学的精准性!事实上,非常普遍的假设:如平滑性、类似的例子、有限的依赖性或有限的复杂性,通常足以做得很好,这是机器学习如此成功的很大一部分原因。就像演绎一样,归纳(学习者所做的)就是知识杠杆:它将少量的输入知识转化为大量的输出知识。归纳法是一种比演绎更加强大的杠杆,需要更少的输入知识来产生有用的结果,但它仍然需要输入知识才能工作。而且,就像任何杠杆一样,我们投入的越多,收获的也就越多。
现在想想,学习知识的所需的数据不应该令人惊讶。机器学习不是魔术,它无法从无到有。它现在所做的是从更少获得更多。像所有工程一样,编程有很多工作:我们必须从头开始构建所有的东西。学习更像是农业,让大自然完成大部分的工作。农民将种子与营养物质结合起来种植作物,类似训练者将知识与数据结合起来发展项目。
4:过度拟合有很多处理方式
如果我们拥有的知识和数据不足以完全确定正确的分类器,该怎么办?我们冒着对分类器(或其中的一部分)产生幻觉的风险,这些分类器没有基于现实,并且只是编码数据中的随机怪癖,这个问题被称为过度拟合,是机器学习的怪症。当学习者输出的分类器对训练数据100%准确,但对测试数据的准确率只有50%时,实际上它已经是过度拟合了。
机器学习中的每个人都知道过度拟合,但它有很多形式,并不是很明显。了解过度拟合的一种方法是将泛化误差分解为偏差和方差。偏差是学习者倾向于始终学习相同的错误。无论真实信号如何,方差都倾向于学习随机事物。线性学习者通常有很高的偏差,因为当两个类之间的边界不是超平面时,学习者无法处理它。决策树不存在这个问题,因为它们可以表示任何布尔函数,但是另一方面,他们可能会产生很高的方差:在同一个现象产生的不同训练集上学习的决策树往往是非常不同的,但实际上应该是一样的。
交叉验证可以帮助对抗过度拟合,例如通过使用它来选择决策树的最佳大小。但它不是万能的,因为如果我们用它来做太多的参数选择,它本身就会开始过度拟合。
除了交叉验证之外,还有很多方法可以解决过度拟合的问题。最流行的是添加正则化术语到评估功能。例如,这可以惩罚具有更多结构的分类器,从而有利于较少结构的分类器。另一种选择是在添加新结构之前,执行像卡方这样的统计显着性检验,以确定该类别的分布在具有和不具有该结构的情况下是否真的不同。当数据非常少时,这些技术特别有用。尽管如此,你应该对某种技术“解决”过度拟合问题的说法持怀疑态度,因为没有任何一种技术总能做到最好(没有免费的午餐)。
5:直觉错误——高维度
过度拟合之后,机器学习中最大的问题就是维度的诅咒。这个话题是由Bellman在1961年提出的,指的是许多在低维度下工作正常的算法在输入是高维时就变得棘手。但在机器学习中,它指的是随着示例的维数(特征数量)增加,泛化正确地变得越来越难,因为固定大小的训练集只覆盖了输入空间的一小部分。
高维度的一般问题是我们的直觉来自三维世界,通常不适用于高维空间。在高维度中,多元高斯分布的大部分质量并不接近平均值,而是在其周围越来越远的“壳”中。如果恒定数量的示例在高维超立方体中均匀分布,超出某些维度,则大多数示例更接近超立方体的面,而不是最近邻居。如果我们通过将超球体写入超立方体来近似超球体,那么在高维中几乎所有超立方体的体积都在超球体的外面。这对于机器学习来说是个坏消息,其中一种类型的形状经常通过另一种形状来近似。
在二维或三维中构建分类器非常简单,我们可以通过视觉检查在不同类别的例子之间找到合理的边界。但是在高维度上,我们很难理解正在发生的事情。这反过来又使设计好的分类器变得困难。天真地说,人们可能会认为聚集更多的功能不会受到损失,因为在最糟糕的情况下,它们不会提供关于该类的新信息 但实际上,维度的诅咒可能会超过它们的好处。
6:理论保证不是他们所看到的
机器学习论文充满了理论保证。最常见的类型是确保良好泛化所需的示例数量的界限。你应该怎样做到这些保证?首先,它们甚至可能是非常了不起的,归纳传统上与扣除形成对比:在推论中,你可以保证结论是正确的;在归纳中,所有判断都社区。近几十年来的一个主要发展是认识到,我们可以对归纳结果保证,特别是如果我们愿意解决概率保证。
我们必须小心这种约束是什么意思。例如,如果你的模型返回了一个与特定训练集相一致的假设,那么这个假设可能概括得很好。所谓的是,如果给定足够大的训练集,那么你的模型要么返回一个推广的假设,要么找不到一致的假设。界限也没有说如何选择一个好的假设空间。它只告诉我们,如果假设空间包含真实的分类器,那么训练处输出不好的分类器的概率是随着训练集大小而减少。如果我们缩小假设空间,边界就会改善,但是包含真实分类器的机会也会缩小。
另一种常见的理论保证类型是渐近的:给定无限的数据,训练模型的人保证输出正确的分类器。在实践中,我们很少处于渐近状态(也称为“asymptopia”)。而且,由于上面讨论的偏差-方差权衡,如果学习者A在给定无限数据的情况下比学习者B好,则B通常比给定有限数据的A好。
理论保证在机器学习中的主要作用不是作为实际决策的标准,而是作为理解和推动算法设计的源泉。事实上,理论与实践的密切相互作用是机器学习多年来取得如此巨大进步的主要原因之一。但要注意:训练是一个复杂的现象。
本文由阿里云云栖社区组织翻译。
文章原标题《12-useful-things-know-about-machine-learning》,
译者:虎说八道,审校:袁虎。