A的协方差可以用来计算A'*A吗?
Can covariance of A be used to calculate A'*A?
我正在 python 中以不同的方式进行基准测试以计算 A'*A,其中 A 是一个 N x M 矩阵。最快的方法之一是使用 numpy.dot()
.
我很好奇我是否可以通过某种方式改变权重或通过某种方式预处理 A 矩阵来使用 numpy.cov()
(给出协方差矩阵)获得相同的结果?但我没有成功。有谁知道乘积 A'*A 与 A 的协方差之间是否存在任何关系,其中 A 是具有 N rows/observations 和 M columns/variables 的矩阵?
看看 cov
source。在函数末尾,它执行以下操作:
c = dot(X, X_T.conj())
这基本上就是您要执行的点积。但是,还有各种其他操作:检查输入、减去平均值、归一化……
简而言之,np.cov
永远不会比 np.dot(A.T, A)
快,因为它在内部完全包含该操作。
也就是说 - covariance matrix is computed 为
或 Python:
import numpy as np
a = np.random.rand(10, 3)
m = np.mean(a, axis=0, keepdims=True)
x = np.dot((a - m).T, a - m) / (a.shape[0] - 1)
y = np.cov(a.T)
assert np.allclose(x, y) # check they are equivalent
如您所见,如果您减去每个变量的均值并将结果除以样本数(减一),则协方差矩阵等于原始点积。
我正在 python 中以不同的方式进行基准测试以计算 A'*A,其中 A 是一个 N x M 矩阵。最快的方法之一是使用 numpy.dot()
.
我很好奇我是否可以通过某种方式改变权重或通过某种方式预处理 A 矩阵来使用 numpy.cov()
(给出协方差矩阵)获得相同的结果?但我没有成功。有谁知道乘积 A'*A 与 A 的协方差之间是否存在任何关系,其中 A 是具有 N rows/observations 和 M columns/variables 的矩阵?
看看 cov
source。在函数末尾,它执行以下操作:
c = dot(X, X_T.conj())
这基本上就是您要执行的点积。但是,还有各种其他操作:检查输入、减去平均值、归一化……
简而言之,np.cov
永远不会比 np.dot(A.T, A)
快,因为它在内部完全包含该操作。
也就是说 - covariance matrix is computed 为
或 Python:
import numpy as np
a = np.random.rand(10, 3)
m = np.mean(a, axis=0, keepdims=True)
x = np.dot((a - m).T, a - m) / (a.shape[0] - 1)
y = np.cov(a.T)
assert np.allclose(x, y) # check they are equivalent
如您所见,如果您减去每个变量的均值并将结果除以样本数(减一),则协方差矩阵等于原始点积。