可以使用A的协方差来计算A'* A吗?

问题描述 投票:0回答:1

我正在python中进行基准测试,以不同的方式计算A'* A,其中A是N×M矩阵。最快的方法之一是使用numpy.dot()

我很好奇,如果我可以通过某种方式改变权重或通过某种方式预处理A矩阵使用numpy.cov()(它给出协方差矩阵)获得相同的结果?但我没有成功。有没有人知道产品A'* A和A的协方差之间是否存在任何关系,其中A是具有N行/观测和M列/变量的矩阵?

python numpy matrix-multiplication covariance
1个回答
1
投票

看看cov source。接近函数的末尾,它执行此操作:

c = dot(X, X_T.conj())

这基本上是您想要执行的点积。但是,还有各种其他操作:检查输入,减去均值,归一化,......

简而言之,np.cov永远不会比np.dot(A.T, A)更快,因为内部它恰好包含该操作。

那说 - covariance matrix is computed

enter image description here

或者在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

如您所见,如果您减去每个变量的平均值并将结果除以样本数(减1),则协方差矩阵等效于原始点积。

© www.soinside.com 2019 - 2024. All rights reserved.