我无法解决以下问题:如果可以的话,我想立即给你一个例子
想象一下,你处理的是市场数据,并且你开发了一个很好的回归模型,用来预测某个广告活动的“覆盖范围”。一切顺利,数据科学家的工作完成了。
但是,等一下。我们可以做得更多。
我想问你的问题是:
假设我们有一个好的模型,我们如何优化输入向量(=市场活动)来获得最佳的“覆盖范围”(=预测器/优化目标)?
我疯狂地在网上搜索,但找不到任何好的方法(我不是在说任何超参数优化)。我找到的最佳方法是遗传算法… 例子在这里和在这里
或者 – 一种蛮力方法 – 计算一个巨大的网格,包含大量可能的输入向量,然后检查哪个是最好的(直接) – 但这将是计算上昂贵的。
我很想听听你的意见。你有什么建议我应该查看哪些主题吗?
回答:
一个很长的评论:
遗传算法可以嵌套。将你的遗传解决方案查找器放入一个适应度函数中。将其交给一个父级遗传算法。让它们通过外部GA的“优化输入向量”和内部GA的“优化目标”来搜索结果。
你甚至可以添加第三层GA,来测试中间层GA的构建参数,因为我们可能不知道我们需要什么样的搜索空间。如果我们知道这一点,那么我们就不需要优化那个向量了。
通过这种方式,你甚至可以减少每个GA的问题维度。
vector:x,y,zGA1: optimizes x and GA2 parameters GA2: optimizes y and GA3 parameters GA3: optimizes z fitness(x,y,z)all pass their best fitness to parent
我不确定这是否会比
GA: optimize x,y,z fitness(x,y,z)
更快/更慢,因为我不知道GA3的变异是否能使整个优化器免于陷入局部最小值。还有其他版本:
GA1: optimize GA2 GA2: optimize x,y,z fitness(x,y,z)
我不知道它的性能。也许GA也可以解决应该有多少个嵌套的GA的问题
GA0: optimize N, x0,x1,..xM-N GA1: optimize XM-N+1 GA2: optimize XM-N+2 ... GAM: optimize XM fitness(X0,X1,..XM)
但我猜在所有层级上构建/销毁太多对象会降低性能(与内存带宽相关)和可读性(回调地狱)。