【问题标题】:Selecting the components showing the most variance in PCA选择在 PCA 中表现出最大差异的组件
【发布时间】:2016-06-10 19:50:16
【问题描述】:

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

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

现在我正在尝试在 MatLab 中实现这一点,但在提供的输出方面遇到了问题。 MatLab 始终将行视为观察值,将列视为变量。所以我对pca 函数的输入将是我的大小矩阵(32000*2500)。这将在大小为 2500*2500 的输出矩阵中返回 PCA 系数。

pca 的帮助说明:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    如果您使用svd function

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

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

    X * V(:, 1: k);
    

    理论参考Elements of Statistical Learning

    【讨论】:

    • @rayryeng :-) 谢谢!
    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 2021-04-11
    • 2021-04-19
    • 2016-01-13
    • 2019-04-08
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多