我在怀疑PCA的东西。
例如,我有:
Data=100*3
substractdata=data-mean (the size will be same 100*3)
covariance=3*3
EigenVector=3*3
EigenValue=3*3为了对我们的数据进行约简,我们必须消除基于k的特征值和特征向量的数目。
例如,k=2
所以…的数目
1问:对吗?
然后我们必须将矩阵投影出来
project=EigenVector (which is 2*2) *substractdata (100*3)第二个问题:我们如何计算它,因为EigenValue和子数据的大小不同?
还有另一个问题,
第三题:如果我们想要使用缩减数据,我们应该使用项目?。
4ques:如果要显示主分量(这是特征向量的第一列和第二列),就必须将主分量与数据(初始数据)或子数据()一起绘制。
发布于 2014-03-06 10:36:04
你的特征值3*3矩阵是对角矩阵。特征值是沿对角线的标量。为了降低维数,您可以选择对应于两个最大特征值的k=2特征向量。所以你需要根据它们对应的特征值对你的特征向量进行排序,并选择两个最大特征值的特征向量。
在约简后,你会得到EigenValue = 2*2 (只有两个特征值)和EigenVector 3*2。
由于你的特征向量现在是3*2,你可以使用substractdata * eigenvector将数据投影到2-昏暗子空间。您需要在重建后添加平均返回,以显示数据和主成分。
发布于 2014-03-06 16:23:01
设X表示原始规范化的100x3数据矩阵。分解为X'*X=V*D*V',其中V是正交的,D是对角的3x3矩阵。其中S(奇异值对角线矩阵)是D的平方根,这也称为奇异值分解,可以直接计算,而不形成(数值坏的)乘积X'*X。
现在您需要U的前两列(所有相关的库都返回D。S具有递减对角线条目)。利用SVD,您可以直接访问它们,使用特征值分解U12=X*V12,即按照cyon,从包含V的前两列(右奇异向量)的V的子矩阵V12中得到包含前两列(左奇异向量)的U的子矩阵U12。
https://stackoverflow.com/questions/22220792
复制相似问题