选择显示PCA差异最大的组件

时间:2016-02-27 15:06:40

标签: matlab machine-learning classification pca dimensionality-reduction

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

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

现在我正在尝试在MatLab中实现它,并且在提供的输出方面遇到了麻烦。 MatLab始终将行视为观察,将列视为变量。因此,我对pca函数的输入将是我的大小(32000*2500)的矩阵。这将在大小为2500*2500的输出矩阵中返回PCA系数。

pca状态的帮助:

  

coeff的每列包含一个主体的系数   组件,列按组件的降序排列   方差。

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

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

1 个答案:

答案 0 :(得分:5)

(免责声明:自从我从matlab转为scipy以来已经很长时间了,但原则是相同的。)

如果您使用svd function

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

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

X * V(:, 1: k);

请参阅Elements of Statistical Learning了解理论。