选择在 PCA 中显示最大方差的组件

Selecting the components showing the most variance in PCA

我有一个庞大的数据集 (32000*2500) 需要训练。这对我的分类器来说似乎太多了,所以我决定阅读一些关于降维的内容,特别是 PCA。

根据我的理解,PCA 选择当前数据并将它们重新绘制在另一个 (x,y) domain/scale 上。这些新坐标没有任何意义,只是重新排列数据以给出一个轴的最大变化。在这些新系数之后,我可以删除具有最小变化的 cooeff

现在我正尝试在 MatLab 中实现它,但在处理提供的输出时遇到了问题。 MatLab 始终将行视为观察值,将列视为变量。所以我对 pca 函数的输入将是我的大小矩阵 (32000*2500)。这将 return 大小为 2500*2500.

的输出矩阵中的 PCA 系数

pca 状态的帮助:

Each column of coeff contains coefficients for one principal component, and the columns are in descending order of component variance.

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

如何删除变化最小的系数?

(免责声明:从matlab转scipy已经很久了,但是原理是一样的。)

如果您使用 svd function

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

然后要将 X 的维度减少到 k,您需要乘以 V 的前 k 列。在 matlab 中,我猜那是

X * V(:, 1: k);

理论参考Elements of Statistical Learning