1

我的任务是使用给定的 2 维 5000 数据进行 PCA 和白化变换。

我对 PCA 的理解是用协方差矩阵的特征向量分析数据的主轴并将主轴旋转到 x 轴!

所以这就是我所做的。

[BtEvector,BtEvalue]=eig(MYCov);% Eigen value and vector using built-in function

我首先计算了特征值和向量。结果是

BtEvalue=[4.027487815706757,0;0,8.903923357227459] 

BtEvector=[0.033937679569230,-0.999423951036524;-0.999423951036524,-0.033937679569230]

所以我发现主轴的特征值为 8.903923357227459,[-0.999423951036524,-0.033937679569230]其特征向量是第二个对应项。

之后,因为它是二维数据,我让 cos(theta) 为 -0.9994.. 和sin(theta)=-0.033937. 因为我认为数据的主轴(特征向量 [-0.999423951036524,-0.033937679569230])必须是 x 轴,所以我做了旋转轴R= [cos(-Theta)-sin(-theta);sin(-theta) cos(-theta)]。让原始数据集A=>2*5000,我做A*R了旋转数据。

此外,对于美白情况,使用 Cholesky 美白,我将美白变换矩阵设为inv(Covariance Matrix).

我的算法有问题吗?如果有错误或误解,有人可以作证吗?非常感谢您。

4

1 回答 1

1

由于您的数据是二维的,因此您计算的协方差矩阵不准确。如果您只计算相对于一个轴(例如 x)的协方差,那么您假设沿 y 轴的协方差是恒等式。这显然不是真的。尽管您已尝试解决此问题,但您可以使用一个合理的程序(我已在下面解释)。

不幸的是,这是一个常见的错误。看看这篇论文,它准确地解释了应该如何计算协方差。

总之,您可以计算沿每个轴(Sx 和 Sy)的协方差。然后将向量化矩阵的二维协方差近似为 kron(Sx,Sy)。这将是二维协方差的更好近似。

于 2018-07-11T05:19:31.177 回答