5

我有一个庞大的数据集(32000 * 2500),我需要进行培训。对于我的分类器来说,这似乎太多了,所以我决定读一些关于降维的知识,特别是PCA。选择显示PCA差异最大的组件

根据我的理解,PCA选择当前数据并在另一个(x,y)域/规模上对它们进行重新标记。这些新的坐标并不意味着什么,但是数据重新排列以给出一个轴的最大变化。在这些新的系数之后,我可以放弃具有最小变化的cooeff

现在我正试图在MatLab中实现这个功能,并且对提供的输出有麻烦。 MatLab始终将行视为观察值和列作为变量。所以我在pca函数将是我的矩阵大小为(32000*2500)。这将返回大小为2500*2500的输出矩阵中的PCA系数。

用于PCA状态的帮助:

系数_的每一列包含系数一个主 组分和列是按降序部件 方差的顺序。

在此输出中,哪个维度是我的数据的观测值?我的意思是,如果我必须将此分类器给出,那么coeff的行代表我的数据观察结果还是现在是coeff的列?

我该如何去除变异最小的系数?

回答

5

(免责声明:这是一个很长的时间,因为我从MATLAB到SciPy的切换,但原理是一样的。)

如果使用svd function

[U,S,V] = svd(X) 

然后减少的尺寸Xk,您会乘以V的第k列。在MATLAB中,我猜这就是

X * V(:, 1: k); 

参考Elements of Statistical Learning的理论。

+0

这是正确的。好的阿米。 +1。 – rayryeng

+0

@rayryeng :-)谢谢! –