我正在开发基于训练数据对图像进行分类的机器学习算法。
在图像预处理阶段,我可以修改几个参数,这些参数会影响我为算法提供的数据(例如,我可以在提取 SURF 特征时更改 Hessian 阈值)。所以到目前为止的流程看起来像:
[param1, param2, param3...] => [黑盒] => 准确率%
我的问题是:有这么多参数可供我使用,我如何系统地选择可以优化结果/准确性的值?一种天真的方法是运行 i 嵌套的 for 循环(假设 i 参数)并遍历所有参数组合,但如果需要 5 分钟从我的“黑盒”系统计算准确度,这将需要很长时间。
话虽如此,是否有任何算法或技术可以在黑盒系统中搜索最佳参数?我正在考虑参加离散优化课程,但我不确定这是否是我时间的最佳利用。
感谢您的时间和帮助!
编辑(回答评论):我有 5-8 个参数。每个参数都有自己的范围。一个参数可以是 0-1000(整数),而另一个参数可以是 0 到 1(实数)。没有什么能阻止我对黑盒评估进行多线程处理。
此外,黑匣子的某些部分对它们具有一定的随机性。例如,一个阶段是使用 k-means 聚类。每次黑盒评估,聚类中心可能会发生变化。我多次运行 k-means 以(希望)避免局部最优。此外,我多次评估黑盒并找到中值准确度,以进一步减轻随机性和异常值。