我正在尝试编写一个函数,该函数会生成来自维 p 范数球的均匀分布噪声:
我找到了圆()(http://mathworld.wolfram.com/DiskPointPicking.html)的可能解决方案,但是我无法将其扩展到不同的值。
我尝试通过从均匀分布中抽取随机样本,并在它不满足给定约束时重新绘制来做到这一点。然而,除了它是一个丑陋的解决方案之外,它对于高维也变得在计算上不可行。
我正在尝试编写一个函数,该函数会生成来自维 p 范数球的均匀分布噪声:
我找到了圆()(http://mathworld.wolfram.com/DiskPointPicking.html)的可能解决方案,但是我无法将其扩展到不同的值。
我尝试通过从均匀分布中抽取随机样本,并在它不满足给定约束时重新绘制来做到这一点。然而,除了它是一个丑陋的解决方案之外,它对于高维也变得在计算上不可行。
我在 kjetil b halvorsen ( https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=758215 ) 建议的论文中找到了完整的解决方案。老实说,我很难理解它背后的数学原理,但最终的算法相当简单。如果我们有维度、半径和范数 ,则:
1) 生成独立的随机实标量,其中是广义高斯分布(在指数而不仅仅是 )
2) 构造分量,其中是独立的随机符号
3) 生成,其中是均匀分布在区间 [0, 1] 中的随机变量。
4) 返回
Taeke 提供了一篇文章的链接,下面的文本通过具体解释 2-norm 和 1-norm 的情况使该文章更加直观。
您可以使用此结果http://mathworld.wolfram.com/HyperspherePointPicking.html
多元高斯分布变量(具有单位协方差矩阵)仅取决于距离或平方和。
因此均匀分布在 n 维超球体的表面上。
要完成,您只需对距离进行采样,将球体上的均匀分布更改为球体中的均匀分布。(这与您的磁盘点拾取链接示例或多或少相似)
如果您只是简单地将采样为均匀分布,那么您将在中心附近具有相对较高的密度(体积缩放为因此一小部分点最终会出现在体积中,它更密集靠近中心,并不意味着均匀分布)
相反,如果您使用个根,那么您将得到一个均匀分布。
在这种情况下,您从拉普拉斯分布而不是高斯分布中采样,然后除以 1 范数。均匀分布在 n 维 1 范数球面上。
我没有正式的证据,只有直觉
(由于 pdf 与位置无关,因此您会期望任何具有相同 1 范数的无穷小面积/体积具有相同的概率,并且当您将其折叠到单位表面时,相同的 )
但模拟测试看起来不错。
library(rmutil)
x <- abs(rlaplace(20000))
y <- abs(rlaplace(20000))
z <- abs(rlaplace(20000))
rn <- abs(x)+abs(y)+abs(z)
xi <- (x/rn)
yi <- (y/rn)
zi <- (z/rn)
plot(sqrt(0.5)*(xi-yi),
sqrt((0.5-0.5*(xi+yi))^2+zi^2),
pc=21,bg=rgb(0,0,0,0.02), col=rgb(0,0,0,0),cex=1)
距离与 2 范数情况相似(体积仍按缩放)。
在这种情况下,如果您希望遵循相同的原则,则需要从具有的分布中采样(我假设)。这些是广义正态分布,可能与Taeke 提到