Hyperopt提供什么样的设置来调整探索与利用之间的平衡?有像"强盗"和#34; bandit_algo"在代码中但没有解释。
有人可以提供任何代码示例。
非常感谢您的帮助!
答案 0 :(得分:2)
最好的选择是阅读Bergstra等人的论文。人。 1 2和3。我不是100%清楚bandit_algo是什么,除了其中一篇论文提到它是高斯过程和Parzen Estimators树的另一种方法 - 也许你可以用这两种方式使用它?
我的猜测是,如果没有记录,可能还没有完成。你可以尝试在Github上提出一个问题 - 开发人员对我所看到的情况反应很敏感。
编辑:看this paper,这些强盗算法可能是其他人继承的基类。
答案 1 :(得分:2)
我刚发现hyperopt partial()是优化算法的神奇包装函数。它允许在不同的策略和E / E之间取得平衡:
部分返回随机选择的建议函数的结果。例如,有时使用随机搜索搜索,有时退火,有时候输入tpe,输入:
fmin(...,
algo=partial(mix.suggest,
p_suggest=[
(.1, rand.suggest),
(.2, anneal.suggest),
(.7, tpe.suggest),]),
)
参数" p_suggest":(概率,建议)对的列表。从其中一个建议函数中提出建议,与其相应的概率成比例。 sum(概率)必须[接近] 1.0。
如果你想更加清晰地控制算法进展:你可以使用hyperopt optimizer algos是无状态的这一事实并返回试验对象,该对象可以作为新fmin的输入提供以继续进程。然后你可以调用fmin,其中max_evals为1,并在循环中处理该过程,因此你可以修改" trial"和#34;建议algo"每次迭代之间。