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