【问题标题】:How to generate sparse orthogonal matrix in python?如何在python中生成稀疏正交矩阵?
【发布时间】:2018-07-11 17:34:35
【问题描述】:

如何生成随机 稀疏正交矩阵?

我知道 scipy 库中有一个稀疏矩阵,但它们通常是非正交的。可以利用 QR 分解,但不一定能保持稀疏性。

【问题讨论】:

    标签: python sparse-matrix orthogonal


    【解决方案1】:

    作为初步想法,您可以将矩阵划分为对角块,用 QR 填充这些块,然后置换行/列。生成的矩阵将保持正交。或者,您可以为Q 定义一些稀疏模式,并尝试根据QQ^T=I 最小化f(Q, xi),其中f 是一些(最好是)凸函数,它通过随机变量xi 添加熵。不能说任何一种方法的功效,因为我还没有真正尝试过。

    编辑:关于第二种方法的更多信息。 f 可以是任何函数。一种选择可能是非零元素与随机高斯向量(或任何其他随机变量)的相似性:f = ||vec(Q) - x||_2^2, x ~ N(0, sigma * I)。您可以使用任何一般的约束优化器来处理这个问题。当然,问题在于并非每个模式S 都保证具有(满秩)正交填充。如果你有记忆,L1 正则化(或平滑近似)可以鼓励密集矩阵变量中的稀疏性:g(Q) = f(Q) + P(Q) 其中P 是任何导致稀疏性的惩罚函数。查看 Wen & Yen (2010) “一种用于优化正交约束的可行方法”,该算法专门用于优化(密集)正交矩阵上的一般(可微)函数和 Liu, Wu, So(2015)“二次优化与Orthogonality Constraints”,用于对二次函数的几种线/弧搜索算法进行更多的理论评估。如果内存是一个问题,您可以使用稀疏基追踪分别生成每一行/列,根据您的问题的性质,有许多算法。有关算法,请参见 Qu、Sun 和 Wright (2015)“在子空间中查找稀疏向量:使用交替方向的线性稀疏性”和 Bian 等人 (2015)“用于高维数据分析的稀疏零空间基追踪和分析字典学习”细节,尽管在这两种情况下,您都必须合并/替换约束以促进与所有先前向量的正交性。

    还值得注意的是,有一些稀疏 QR 算法将 Q 作为稀疏/结构化矩阵的乘积返回。如果您只关心存储空间,这可能是创建大型高效正交运算符的最简单方法。

    【讨论】:

    • 第一个想法确实有效,而且很棒。但是您能否在您的第二个想法中指定函数f,以便我更清楚地理解它?
    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 2019-10-14
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2023-04-10
    相关资源
    最近更新 更多