Python中高维量估算的优秀实现是什么?

时间:2018-03-02 04:16:43

标签: python math

我想估算Python中高维形状的体积。如果我在形状内部,我有一个用于查询的oracle。我处于高维度(至少32*32=1024维度)。理想情况下,我不想自己实施,因为:

  1. 似乎技术性很强,论文范围在https://arxiv.org/pdf/1401.0120.pdf,似乎非专家可能容易出错
  2. 它似乎是一个标准的数学问题(估计高音调的音量)所以假设一个比我在python中可能存在的更好的优化代码似乎是明智的。
  3. 有人知道什么是解决这个问题的好方法吗?我应该继续执行我链接的文件中的工具吗?

    不确定数学技术限制可能是什么,但是:

    1. 我可以访问一个说明+1或-1的oracle,这取决于我是否在形状内。
    2. 我想估计一个凸形的形状
    3. 现在我只想尝试一下类似的工具:

      1. 决定一个真正可能包含我想估计的形状的投标范围
      2. 示例很多点(很高兴知道我需要多少样本对我的形状有一个很好的估计)
      3. 然而,由于它似乎是一个微妙的技术领域,如果我可以避免它,我宁愿不要太过于hacky(特别是如果我可以在样本数量上获得理论上的保证)

        我发布问题之前的相关链接:

1 个答案:

答案 0 :(得分:0)

这是您的问题的答案:您需要多少采样点来估算某些区域的高维量。

假设集合K包含在一些封闭集合B中,其体积已知为1而不失一般性。由V表示未知的K体积。设f(x)表示K的指示函数:如果x在K中,则f(x)= 1,如果x不在K中,则f(x)= 0。(道歉, stackoverflow上没有LaTeX。)

显然,V恰好是期望E [f(x)],也是概率P [f(x)= 1],其中随机变量x在B中随机均匀绘制。此外,方差var(f(x))恰好是V(1-V),其界限在0到0.25之间。

对于x 1 ,...,x n 在B中随机均匀且独立地绘制,考虑总和S n =( f(x 1 )+ ... + f(x n ))/ n。中心极限定理表明S n 渐近正态分布N(V,var(f(x))/ n),因此S n 的标准差是SQRT(V(1-V)/ N)。因此,如果你想要ε的绝对精度(即| S n -V |≤ε),概率p = 0.999999998027(即6个标准偏差),你应该采用n = 36V(1-V) )/ε 2

特别是当V很小时,您将需要相对容差,即ε=δV。那么,你需要n = 36(1-V)/(Vδ 2 )。

你在这里看到的问题是,当V很小时,很难获得紧张的精确度,但是造成这种不好的是维数的诅咒,大致上说V可能是O(10 < sup> -d )维度d。

例如,如果K是在1侧的立方体B中内接半径1/2的球体,那么V大约是(πe/(2d)) d / 2 / sqrt(dπ ),如果你想要一个小于100%的相对误差,那么你将只需要n = O(d d / 2 )样本。