【发布时间】:2020-05-17 00:47:54
【问题描述】:
我正在使用 Optuna 对某些模型进行参数优化。
在几乎所有示例中,目标函数都会返回测试集上的评估指标,并尝试将其最小化/最大化。我觉得这是示例中的一个缺陷,因为 Optuna 然后根据看不见的数据优化了她的参数。
对训练集的 cv 进行优化会更加稳健。想听听其他想法并检查我是否遗漏了什么。
谢谢!
【问题讨论】:
标签: python hyperparameters train-test-split optuna
我正在使用 Optuna 对某些模型进行参数优化。
在几乎所有示例中,目标函数都会返回测试集上的评估指标,并尝试将其最小化/最大化。我觉得这是示例中的一个缺陷,因为 Optuna 然后根据看不见的数据优化了她的参数。
对训练集的 cv 进行优化会更加稳健。想听听其他想法并检查我是否遗漏了什么。
谢谢!
【问题讨论】:
标签: python hyperparameters train-test-split optuna
不,这不是缺陷,而是一个特性。性能应该在算法没有看到的测试数据集上进行评估。
如果您想进行交叉验证,可能需要几个月的时间才能使用 Optuna 完成一项简单的研究。这样做并没有错误,但可能是浪费时间,因为 Optuna 的算法是贝叶斯优化器,交叉验证只能近似。
话虽如此,如果你使用机器学习并且需要每个 epoch 有一个训练/验证循环,我 recommend 使用邵君的比例 n**(0.75) 作为你的训练集大小,在训练开始前随机选择;它不仅更快,而且可能更好。
因此,虽然需要在机器学习中进行多项训练和验证操作,但如果您使用 Optuna,则无需交叉验证该模型的性能。请点击上面的链接在 cross-validated 的 SE 网站上查看我的回答,然后您可以从那里点击进入 Github repo 但请先发表评论和/或看看其他人在说什么。
【讨论】: