【问题标题】:Principal Component Analysis, how many components?主成分分析,有多少成分?
【发布时间】:2018-03-12 23:46:40
【问题描述】:

我不明白 PCA 的一点。 PCA 返回使每个特征的方差最大化的方向?我的意思是,它将为我们原始空间的每个特征返回一个组件,并且只有 k 最大的组件将用作新子空间的轴,对吧?所以实际上如果我在 50-D 并且 49 个特征有很大的差异,我可以传递到 49-D 空间吗?当然,我说的是简单的英语,没有正式或技术性。

谢谢

【问题讨论】:

  • 是的,但我的意思是,如果我们查看协方差矩阵算法,返回的特征向量和特征值的数量为 N,其中只有 k 个作为最终维度返回。那个N是什么?应该是我们的数据矩阵 X 的列数……所以呢?编辑:所以在 2 dim 中返回 2 个组件,作为特征的数量
  • 使用 PCA 分析输入特征以发现所有顶部正交动态,这些动态显然不是与输入特征的一对一映射...因此您的 50D 输入特征很可能会减少到只有 3 个尺寸...通常没有一个输入特征纯粹只是 PCA 输出尺寸之一...想想扔在地上的一把铅笔...在平坦的 2D 表面上,您只有两个可能的尺寸,所以所有这些铅笔发送到 PCA 将导致仅由 X 和 Y 表示的这两个向量......每个 PCA 输出都是正交的 - 独立于其他向量
  • 这是一个确认,每个特征都有一个组件,但 Pca 允许使用特征值对它们进行优先级排序! deeplearning4j.org/eigenvector#covariance
  • 要真正理解 PCA,我建议您避免只是将数据投入到一些库调用中……而是卷起袖子,从头开始编写自己的 PCA……稍后当您在生产度假村时使用别人的库,但不是在学习阶段……PCA 算法并不神奇,您可以在几页代码中编写自己的算法

标签: machine-learning pca


【解决方案1】:

如果您的原始数据有 50 个维度,那么 PCA 将返回 50 个主成分。您可以从这些主成分中选择一个子集k,这些主成分可以解释最大的方差,通常是至少 90% 的方差。您使用的 PCA 软件通常会计算每个主成分解释了多少方差,因此只需将方差相加并选择顶部的 k 即可获得总方差的 90%。看到这个PCA tutorial:

一般来说,我们希望选择最小的 K,使得 0.85 到 解释了总方差的 0.99(相当于 85% 到 95%),这些值来自 PCA 最佳实践。

...当我们说 PCA 可以降维时,我们的意思是 PCA 可以计算主成分,用户可以选择最小的 其中 K 个解释了 0.95 的方差。 A 主观上 令人满意的结果是当 K 相对于原始值较小时 特征数 D.

【讨论】:

  • 非常感谢。所以我将选择的 k 个组件应该解释我们总数据的最大差异,对吗?我的意思是,采用最好的 k 分量(就方差而言)应该给我一个子空间,在该子空间中我们的新投影数据的方差最大化?
  • 每个主成分解释了少量的方差,您的软件应该返回按方差递减排序的主成分。因此,如果您使用顶部主成分,那么 k=1 主成分会使 1 PC 跨越的子空间的方差最大化。如果您选择第一个k,那么那些k PC 会最大化k PC 跨越的方差。这是因为 PC 是按降序返回的。然后你需要选择正确的k 达到总方差的 90%。
  • 你能告诉我这个吗?数据集是 M = 特征 = 700 和 N = 观察次数 = 91 如果我应用 PCA,那么它应该形成多少个组件?是 N 个组件还是 M 个组件?我知道将选择具有最大差异的组件,但在选择 PCA 创建或制造多少组件之前?
  • @Rabnawaz:您的 PCA 软件应该返回与功能一样多的主要组件。因此,在您的情况下,它应该返回 M=700 主成分。您可以选择其中的前 k 个。
  • 但是当我在 R 中运行它时,它应该返回一个 91 X 91 行的矩阵。从中,我必须从中选择前 k 个组件。我对它的符号感到困惑。 @stackoverflowuser2010
猜你喜欢
  • 2023-03-12
  • 2013-08-24
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2018-10-22
相关资源
最近更新 更多