如何将机器学习应用到机器学习中

邮寄人

有这么多的机器学习算法和这么多的参数为每一个。为什么我们不能使用元算法(甚至是使用机器学习的算法)来为我们的数据集选择最佳算法和参数呢?

-每一个参加过机器学习课程的一年级研究生

这似乎很明显,对吧?很多机器学习问题都被形式化为一种优化,你得到一些数据,有一些自由参数,你有一些函数来测量这些参数在数据上的性能。您的目标是选择参数来最小化(或最大化)给定函数。

毫升

但这听起来和我们选择机器学习算法时的做法一模一样!我们在我们的数据上尝试不同的算法和参数,评估它们的性能,最后根据我们的评价选择最好的算法。那么为什么我们不能用前者来做后者呢?为什么我们不能用自己的算法来代替盲目的手工操作呢?

在过去五年左右的时间里,学术界围绕这一主题开展了大量工作(通常称为超参数优化,最近受到关注的一种特殊类型是Bayesian变体),这反过来又导致了许多开源库,如hyperopt绿薄荷自动WEKA它们的味道大致相同:

  1. 尝试一堆随机参数配置来学习数据上的模型
  2. 评估这些模型
  3. 从这些评估中创建一个机器学习数据集,其中特征是参数值,目标是评估的结果
  4. 这个数据集模型
  5. 使用模型选择下一个要评估的参数集的“最有希望”集
  6. 使用这些参数集学习模型
  7. 重复步骤2-6,在每次迭代时向集合3中描述的数据集添加新的评估

这里的大部分微妙之处在于第四步和第五步。建模该数据集的最佳方法是什么?我们如何使用该模型来选择下一组参数进行评估?

我最喜欢的专业是SMAC原始版本的SMAC比我们的目的所需要的更花哨,所以我在这里以简单的名义让它变得简单一点(让我们把更简单的算法称为SMACdown):

  • 在第四步中,我们将生长一个随机回归林作为参数空间的模型。假设我们种了32棵树:这意味着对于我们使用模型评估的每个参数集,我们将得到32个单独的算法性能评估。重要的是,这32个估计值的均值和方差可用于定义给定参数集的可能性能的高斯分布。

  • 在步骤5中,我们生成一大堆参数集(比如,数千个),并将它们传递给步骤4中的模型,为每个参数集生成一个高斯分布。然后,我们测量,对于每个高斯分布,有多少较低的尾部低于我们当前的最佳评估。下尾巴下方面积最大的那些是最有希望的候选者。

SMACdown大多数细节都解决了,剩下的就是选择一种语言来实现算法。

怎么样嗖嗖

我们为什么要选择WhizzML?首先,它让我们不必再担心可伸缩性。我们可以在一些小数据集上创建脚本原型,然后在大小为千兆字节的数据集上运行完全相同的脚本。没有额外的库或硬件;它在盒子里就能工作。

其次,由于脚本本身是一个BigML资源,它可以从任何语言运行,您可以从该语言向beplay2网页登陆BigML POST HTTP请求,并且您可以将该调用的结果作为JSON结构使用。使用WhizzML,不再需要使用特定的语言;您可以在WhizzML中实现一次并从任何地方运行。

我们不打算详细阅读所有的代码,但我们会在这里找到一些要点。

我们的目标是优化树集合的参数。我们将首先创建一个函数,该函数为集合生成随机参数集。看起来是这样的:

随机参数

我们使用WhizzML兰姆达定义一个不带参数的函数,它将为我们的集合生成一组随机参数。注意,我们需要预先知道这是一个分类还是一个回归,作为设置平衡目标符合事实的对于回归问题是无效的。这个函数返回一个函数,可以反复调用该函数来每次生成不同的参数集。

评估这些生成的参数集的过程相当简单;对于要求值的每个参数集,创建一个集合,对保持集执行求值(确实如此)拿出一些数据),然后拿出或创建一个你想要评估应聘者的指标。

一旦您有了这些评估,您就需要对它们建模(步骤4)。这就是在这里完成:

合奏

在这里,我们创建上面描述的随机森林。帮手smackdown数据->数据集从参数计算列表创建数据集。然后,我们创建一系列随机种子,并为每个种子创建一个模型,返回id列表。

下一步是创建一堆新的参数集,并使用我们构建的模型来评估它们:

预测

数据参数是我们新的参数集列表(在其他地方由多次调用模型参数发生器上面定义),mod-ids是由创建的模型ID的列表smacdown——create-ensemble这里的逻辑也相当简单:我们为每个模型创建一个批预测,然后从每个批预测数据集中创建一个样本,这样我们就可以将每个预测的所有行拉到内存中。我们只剩下一行对每个数据点的预测数据

另一个函数应用于这些列表退出的均值和方差,然后计算,鉴于目前最好的评价,哪些最有机会改进我们当前的最佳解决方案(即,比例最高的地区在其高斯低于当前最佳解决方案)。

这里我们忽略了许多细节,但谢天谢地,您不必了解所有这些细节就可以运行脚本。事实上,你可以克隆它beplay2网页登陆BigML脚本美术馆

这一切的好处是什么?主要是,我们希望您看到WhizzML的表现力足以让您在BigML的API上构建甚至复杂的元算法。当您选择使用它时,WhizzML为您的机器学习工作流提供了可伸缩性和语言不可知性,以便您可以在任何时间在任何数据上运行它们。beplay2网页登陆

现在没有借口了!去试一试,让我们知道你当时的想法info@beplay2网页登陆beplay体育官网网站bigml.com或者在下面的评论中。

一个评论

留下一个回复

请在下面填写您的详细信息或单击图标登录:

功能
WordPress.com的标志

您正在使用您的WordPress.com账户进行评论。注销/改变

谷歌照片

您正在使用谷歌帐户进行评论。注销/改变

Twitter图片

你在用你的推特账号评论。注销/改变

Facebook的照片

您正在使用您的Facebook帐户发表评论。注销/改变

连接到% s