协方差矩阵的条件数

机器算法验证 相关性 矩阵 计算统计 协方差矩阵 特征值
2022-03-19 16:57:00

我有兴趣生成一个维度为 100 的协方差矩阵。我设法获得了一个具有有限条件数的相关矩阵。

要构建协方差矩阵,我需要有标准偏差。我认为对于我的情况,最合适的方法是从伽马分布中生成标准偏差。

所以,它给了我小的标准偏差以及大的标准偏差。结果,得到的协方差矩阵具有非常高的条件数。

我想知道条件数是否会受到变量尺度的影响,如果我想在协方差矩阵中加入不同的尺度,如何获得具有合理条件数的协方差矩阵?

对此的任何帮助或见解都将受到高度赞赏。

4个回答

是的,变量的比例会影响条件数。这是一个具有实际后果的真实现象;例如,我使用线性最小二乘法来解决拟合问题,如果我只是放入适当的列,我的条件数是 10^18 阶(可能更糟,因为这是我的数值精度的限制)。另一方面,如果我重新调整我的变量,使拟合矩阵的每一列具有相同的平方和幅度,则拟合矩阵的条件数下降到小于一百。如果我使用病态矩阵来计算拟合值,它们和残差都很糟糕;如果我使用重新缩放的矩阵然后重新缩放变量,我会得到很好的稳定拟合。

这在相关性和协方差矩阵方面意味着,如果您想使用不同尺度的变量,您应该将各个变量尺度与相关矩阵分开。如果这样做,则相关矩阵的不良条件数对应于变量之间真实的强相关性。如果您通过将尺度相乘来构造协方差矩阵,那么实际上,您可能会因为变量具有不同的尺度而得到一个坏的条件数。

您没有确切地说出您想对生成的协方差矩阵做什么。如果您正在尝试评估算法的性能,那么您已经揭示了该算法的一个缺点:如果您首先重新调整所有变量,它会更好地工作。如果您正在做其他事情,那么事实是,如果您的变量具有不同的尺度,则协方差矩阵确实会有可怕的条件数。

一般来说,协方差矩阵真的不太可能是病态的。Tao 和 Vu 的结果(http://arxiv.org/pdf/math/0703307v1.pdf theorem P2)。我记住的一般规则是 Marcenko-Pastur:如果您对维度为 N*P 的矩阵 X 的每一列进行独立采样,那么只要 (N/P) 或 (P/N) 不接近 1,您将不生病。(即根据经验,如果将 2 个矩阵相乘为EET尺寸彼此不接近的地方。这是我经常遇到的情况)

此外,如果您知道相关矩阵的频谱,则可以通过解析方式知道答案。

写出相关矩阵的 Cholesky 分解

C=GGT

协方差矩阵将是

S=ΣGGTΣ在哪里Σ是具有标准偏差的对角矩阵。

因此,条件数S是条件数的平方ΣG如果您愿意,您可以准确找到

为什么不从逆 Wishart 分布中绘制协方差矩阵?Gamma 分布通常用作单维方差的先验,Wishart 是 Gamma 分布的多元情况。它用作多变量正态协方差的共轭先验。分别对对角线和非对角线的值进行采样实际上没有多大意义,因为它们是相关的,对吧?

有内置函数(用于 Matlab、Python 等)可以从逆 Wishart 中绘制,并为它提供一个正定矩阵作为比例参数,因此条件数对于绘制的样本应该不是问题。

最容易解释的是生成频谱和正交组(旋转矩阵):VTDV. 您可以将任何您想要的先验放在特征值上。可能有一些好的,取决于上下文。