行和列长度受限制的随机矩阵


25

我需要生成带有行和列的随机非平方矩阵,这些元素的均值= 0随机分布,并且受约束,使得每行的长度(L2范数)为,每列的长度为。等效地,每行的平方和为1,每列的。Ç 1 RC1 [RRCRC

到目前为止,我已经找到一种实现此目的的方法:简单地随机初始化矩阵元素(例如,从均值为零且具有任意方差的均匀分布,正态分布或拉普拉斯分布),然后将行和列交替归一化为,以行规范化结束。这似乎可以相当快地收敛到所需的结果(例如,对于和,列长度的变异通常在次迭代后),但是我不确定是否可以依靠这种快速收敛速度通常(针对各种矩阵尺寸和初始元素分布)。- [R = 40 Ç = 80 0.00001 2length=1R=40C=80 0.000012

我的问题是:是否有一种方法可以直接获得所需的结果(,,而无需在行/列归一化?例如,类似用于对随机向量进行归一化的算法(随机初始化元素,测量平方值的总和,然后按通用标量缩放每个元素)。如果不是,是否存在上述迭代方法的收敛速度(例如,迭代次数直到错误)的简单表征?c o l u m n l e n g t h s = row lengths=1 <ϵcolumn lengths=RC<ϵ


1
这与Sinkhorn-Knopp算法非常相似,也称为迭代比例拟合。
主教

6
另外,您应该定义“随机”矩阵的含义。例如,您描述的过程将(几乎毫无疑问)不会在所需空间上均匀地生成随机矩阵。
主教

1
@cardinal好点。但是请注意,通过对一对随机排列矩阵进行后乘(以随机排列行和列),您至少可以为所有组件实现相同的(边际)分布。
ub

1
@whuber:是的,尽管联合发行仍然很奇怪。通过“后乘”,我假设您的意思是在左侧和右侧进行“后收敛”乘(而不是例如在右侧乘)。
主教

9
XYYij=Xij2YX^ij=sgn(Xij)Yij

Answers:


6

正如@cardinal在评论中所说:

事实上,后一个没有想到的,我觉得你的算法是准确的Sinkhorn,诺普算法具有非常小的修改。令为原始矩阵,令为相同大小的矩阵,使得。然后,您的算法等同于将Sinkhorn-Knopp应用于,在最后一步,您可以通过恢复所需的形式。除了在非常病理的情况下,Sinkhorn-Knopp保证会聚。仔细阅读应该会很有帮助。ÿ ÿ Ĵ = X 2 Ĵ ý XĴ = 小号Ñ X ĴXYYij=Xij2YX^ij=sgn(Xij)Yij

...似乎我在原始问题中建议的迭代算法与Sinkhorn-Knopp算法非常相似。有趣的是,它似乎也非常类似于迭代比例拟合(IPF),正如IPF维基百科页面上所述,它与牛顿方法和期望最大化有关(都具有相同的限制)。

这些迭代方法通常应用于缺少闭式解决方案的问题,因此我将暂时假定该问题的答案是否定的:没有行/列迭代就无法实现所需的解决方案。


(+1)表示您对这个问题持续感兴趣,并希望您进行独立的跟进。:-)
主教
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.