我有一个函数f
,它接受N
个实值输入,并且计算成本非常昂贵。每个 N
个输入(通过 n
调用一个)都有一个可以采用的值范围 (n_min, n_max)
。我有兴趣通过在各种输入上生成样本并查看它产生的输出来研究 f
的属性。 (目标是使用 ML 构建 f
的逼近器。)
假设由于时间限制,我只能生成 1000 个样本。选择我提供给 f
的 N
集合是否“更好”?
(A) 从 n_min
迭代到 n_max
,每个 n
的步长足够大,或者
(B) 在(n_min, n_max)
范围内均匀采样每个n
?
选择 (A) 具有保持所有其他输入固定同时一次仅改变一个值的理想特性,但选择 (B) 具有可能探索输入空间的更多部分的理想特性。
最佳答案
当函数对所有输入的方差不同时,
B 会更好,但实际上可能并非如此。在极端情况下,假设您有 1000 个样本、3 个输入,但只有其中一个实际影响函数。如果您在 10x10x10 常规网格上进行采样(如 A 中所示),您最终将仅获得相关输入的 10 个样本。如果您采用均匀分布进行采样,则所有 1000 个样本都将提供信息。
作为 B 的变体,考虑使用准随机输入序列,例如 Sobol sequence 。相对于均匀分布的优点是您的输入空间覆盖范围不会有簇或空洞。
关于function - 从高维函数采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24416276/