Hyperopt 入门

Hyperopt 的作用是找到一个标量值、可能具有随机性的函数在其可能参数集合上的最优值。

虽然许多优化包假设这些输入来自向量空间,但 Hyperopt 的不同之处在于它鼓励您更详细地描述您的搜索空间。通过提供关于函数定义位置以及您认为最优值所在位置的更多信息,您可以让 hyperopt 中的算法更有效地搜索。

使用 hyperopt 的方法是描述

  • 要最小化的目标函数
  • 要搜索的空间
  • 存储所有搜索点评估结果的数据库
  • 要使用的搜索算法

这个(最基本)教程将介绍如何编写函数和搜索空间,使用默认的 Trials 数据库和虚拟的 rand(随机)搜索算法。第一部分 (1) 介绍目标函数与 hyperopt 之间通信的不同调用约定。第二部分 (2) 介绍如何描述搜索空间。

当用 MongoTrials 替换 Trials 数据库时,可以进行并行搜索;有一个关于使用 mongodb 进行并行搜索主题的另一篇 wiki 页面。

选择搜索算法就像传入 algo=hyperopt.tpe.suggest 而不是 algo=hyperopt.rand.suggest 一样简单。搜索算法实际上是可调用对象,它们的构造函数接受配置参数,但关于选择搜索算法的机制,也就仅限于此了。