加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

关于机器学习实战,那些教科书里学不到的12个“民间智慧”

发布时间:2019-05-14 13:13:16 所属栏目:建站 来源:towardsml 编译:刘佳玮、王缘缘、Walker 机器
导读:大数据文摘出品 来源:towardsml 编译:刘佳玮、王缘缘、Walker 机器学习算法被认为能够通过学习数据来弄清楚如何执行重要任务。 这意味着数据量越大,这些算法就可以解决更加复杂的问题。然而,开发成功的机器学习应用程序需要一定的民间技巧,这在教科书

由于固定大小的训练集覆盖了输入空间的一小部分(可能的组合变得巨大),因此随着示例的维度(即特征的数量)的增长,正确泛化的难度呈指数级增加。但这就是为什么机器学习既有必要又有难度。正如你在下图所示,即使我们从1维过渡到3维,能够分辨出不同示例的工作似乎开始变得越来越难——在高维度上,所有示例都开始相似。

机器学习

这里的一般问题是,我们来自三维世界的直觉使我们在高维度上失败。例如,高维度橙色的大部分体积都在外部,而不是内部!

令人难以置信的是:如果恒定数量的示例在高维超立方体中均匀分布,并且如果我们通过将其刻在超立方体中来近似超球面,则在高维度中,超立方体的几乎所有体积都在超球面之外。这是个坏消息。因为在机器学习中,一种类型的形状通常由另一种形状近似。

澄清注意:如果你对所有“夸大其词”感到困惑,超立方体内部的超球面看起来像是这样的二维和三维:

机器学习

因此,你现在可以理解,构建2维或3维分类器很容易,但在高维度上,很难理解发生了什么。反过来,这使得设计好的分类器变得困难。事实上,我们经常陷入这样的陷阱:认为获取更多特征不会带来负面影响,因为在最坏的情况下,它们不会提供关于类的新信息。但事实上,维度的诅咒可能会超过它们的好处。

启示:下次当你考虑添加更多特征时,请考虑当你的维度变得太大时可能出现的潜在问题。

6. 特征工程是关键

当一天结束时,所有机器学习项目中有成功的,也有失败的。它们之间有区别呢?这个不难想到,最重要的因素就是使用的特征。如果有许多独立的特征,并且每个特征都与类的相关性很好,那么机器学习就很容易。相反,如果类是需要通过复杂方式处理特征后才能被使用,那么事情就变难了,这也就是特征工程——根据现在输入的特征创建新的特征。

通常原始数据格式基本不能为建模所用。但你可以从中构建可用于学习的特征。事实上,这是机器学习项目中的最花精力的部分。但这也是最有趣的部分之一,在这里直觉、创造力和“小技巧”与技术是同样重要的东西。

经常会有初学者惊讶一个机器学习项目中花费在训练上的时间竟如此之少。但是,如果考虑收集数据,整合数据,清理数据并对其进行预处理的时间以及在特征选择上的试错次数,这个时间就相对合理。

更何况,机器学习在构建数据集和运行学习样例上不是一次性的过程,而是一个迭代的过程,需要运行学习样例,分析结果,修改数据或学习样例,以及重复上述过程。训练往往是最快的部分,但那是因为我们对这部分相当熟练!特征工程很难,因为它是专业领域的,不过学习器在很大程度上是通用的。当然,机器学习界的梦想之一就是提高特征工程的自动化程度。

机器学习

7. 丰富的数据胜过聪明的算法

假设你已经构建了一组最好的特征,但是你得到的分类器仍然不够准确。你现在还可以做什么?有两个主流的办法:

设计更好的机器学习算法或者是收集更多数据(更多样例,可能还有更多原始特征)。机器学习研究人员会去改进算法,但在现实中,通往成功的最快途径往往是获取更多数据。

根据经验,具有大量数据的傻瓜算法胜过一个具有适度数量的聪明算法。

在计算机科学中,通常情况下,两个主要的资源限制是时间和内存。但在机器学习中,还有第三个约束:训练数据。在这三个中,今天的主要瓶颈是时间,因为有大量的可用数据,但没有足够的时间来处理它们,所以数据被闲置了。这意味着在实践中,更简单的分类器会胜出,因为复杂的分类器需要很长的学习时间。

使用更聪明的算法并不会给出更好的结果,部分原因是在一天中它们都在做同样的事情,将所有学习样例基本上都是通过将相邻的样例分组到同一个类来工作的。关键的区别在于对“相邻”的定义。

当我们有非均匀分布的数据时,即使复杂的学习样例也可以产生非常不同的边界来对结果进行分类,最终它们仍然在重要区域做出相同的预测(具有大量训练样例的区域,因此也可能出现大多数文本样例)。正如下图所示,无论是花式曲线,直线还是逐步边界,我们都可以得到相同的预测:

机器学习

通常,首先尝试最简单的学习器(例如,逻辑回归前的朴素贝叶斯,支持向量机之前的邻近算法)。复杂的学习器很吸引人,但它们通常很难使用,因为它们需要控制更多的旋钮以获得好的结果,并且因为它们的内部更像是黑箱。

8. 组合多个模型,而非只用一个

在机器学习的早期阶段,努力尝试使用多种学习器的各种变形,并选择最好的那个。但是研究人员发现,如果不是选择其中最好的单一模型,而是结合各种变形会得到更好的结果,建模者只需稍加努力就可以获得显著提升的效果。现在建这种模型融合非常普遍:

在最简单的技术称为bagging算法,我们使用相同的算法,但在原始数据的不同子集上进行训练。最后,我们取均值或通过某种投票机制将它们组合起来。

Boosting算法中学习器按顺序逐一训练。随后的每一个都将其大部分注意力集中在前一个错误预测的数据点上。我们会一直训练到对结果感到满意为止。

Stacking算法中,不同独立分类器的输出成为新分类器的输入,该分类器给出最终预测。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读