【发布时间】:2012-12-24 10:28:31
【问题描述】:
我需要为我的最新研究项目进行参数优化。我有一个算法,它目前有 5 个参数(四个双精度 [0,1] 和一个标称值,有 3 个值)。该算法使用这些参数来计算一些东西,然后我计算精度、召回率和 FMeasure。单次运行大约需要 1.8 秒。目前,我正在以 0.1 步长遍历每个参数,这向我展示了全局最大值的大致位置。但我想找到精确的全局最大值。我研究了梯度下降,但我真的不知道如何将其应用于我的算法(如果可能的话)。任何人都可以指导我如何实现这样的算法,因为我对这种工作很陌生。
干杯, 丹尼尔
【问题讨论】:
-
你能计算出你的(双)参数的梯度吗?
-
嗨,托马斯。最近看了你的库:) 目前我的函数看起来像这样:a1 * x1 + a2 * x2 + a3 * x3 = y 和 x4 是一个阈值参数,它过滤掉 y
-
也许你应该看看遗传搜索算法en.m.wikipedia.org/wiki/Genetic_algorithm。还有一些Java实现框架。
-
@DanielGerber 嘿,谢谢;)您的函数简化为正常的线性组合并产生凸函数(受双倍间隔和标称值的限制)。所以你的梯度基本上就是参数本身,所以用梯度下降来最小化这个应该没有问题(假设你为 alpha 选择了一个合适的值)。
-
您使用哪种算法?梯度下降并不是一个那么复杂的算法。如果您查看逻辑回归论文,您可能会看到其中嵌入了梯度下降算法。所以你移植它。
标签: java optimization parameters machine-learning