Questions tagged «pca»

主成分分析(PCA)是线性降维技术。它将多变量数据集简化为较小的构造变量集,以保留尽可能多的信息(尽可能多的方差)。这些变量称为主成分,是输入变量的线性组合。

1
PCA和对应关系分析与Biplot的关系
Biplot通常用于显示主成分分析(和相关技术)的结果。它是一个双散点图或叠加散点图,同时显示了组件负荷和组件分数。今天,@ amoeba通知我,他给出的答案与我的评论不符,而是一个问题,询问如何生成/缩放Biplot坐标;他的回答更详细地考虑了几种方式。@amoeba询问我是否愿意与biplot分享我的经验。 我的经验(无论是理论上还是实验上的经验),尽管非常谦虚,但都突出了两点,但这两点很少得到人们的认可:(1)应将Biplot归类为分析技术,而不是辅助散点图;(2)PCA,对应分析(以及其他一些众所周知的技术)实际上是双图的特殊情况。或者至少,他们俩几乎都是双胞胎。如果可以做双图,则可以做另外两个。 我对您的问题是:它们(PCA,CA,Biplot)如何为您连接?请分享您的想法。同时,我正在发布自己的帐户。我想请增加更多答案并发表批评。

2
当PCA解释方差时,因子分析如何解释协方差?
这是Bishop的“模式识别和机器学习”书第12.2.4节“因素分析”中的一句话: 根据突出显示的部分,因子分析捕获矩阵变量之间的协方差WWW。我想知道如何? 这就是我的理解。假设是观察到的维变量,是因子加载矩阵,是因子得分向量。然后我们有即 ,中的每一列都是一个因子加载向量 正如我所写,有xxxpppWWWzzzx=μ+Wz+ϵ,x=μ+Wz+ϵ,x=\mu+Wz+\epsilon,⎛⎝⎜⎜x1⋮xp⎞⎠⎟⎟=⎛⎝⎜⎜μ1⋮μp⎞⎠⎟⎟+⎛⎝⎜|w1|…|wm|⎞⎠⎟⎛⎝⎜⎜z1⋮zm⎞⎠⎟⎟+ϵ,(x1⋮xp)=(μ1⋮μp)+(||w1…wm||)(z1⋮zm)+ϵ,\begin{align*} \begin{pmatrix} x_1\\ \vdots\\ x_p \end{pmatrix} = \begin{pmatrix} \mu_1\\ \vdots\\ \mu_p \end{pmatrix} + \begin{pmatrix} \vert & & \vert\\ w_1 & \ldots & w_m\\ \vert & & \vert \end{pmatrix} \begin{pmatrix} z_1\\ \vdots\\ z_m \end{pmatrix} +\epsilon, \end{align*}WWWwi=⎛⎝⎜⎜wi1⋮wip⎞⎠⎟⎟.wi=(wi1⋮wip).w_i=\begin{pmatrix}w_{i1}\\ \vdots\\ w_{ip}\end{pmatrix}.WWW米mmm列表示正在考虑因素。mmm 现在,重点在于,根据突出显示的部分,我认为每列的负载都说明了观测数据中的协方差,对吗?wiwiw_i 例如,让我们看一下第一个加载向量,对于,如果,和,则我想说和高度相关,而似乎与它们不相关,对吗? 1 ≤ 我,Ĵ ,ķ ≤ p 瓦特1 …

3
PCA或FA中的分数或负荷符号是否有意义?我可以反转标志吗?
我使用两个不同的函数(prcomp和)对R进行了主成分分析(PCA),princomp并观察到PCA分数的符号不同。怎么会这样? 考虑一下: set.seed(999) prcomp(data.frame(1:10,rnorm(10)))$x PC1 PC2 [1,] -4.508620 -0.2567655 [2,] -3.373772 -1.1369417 [3,] -2.679669 1.0903445 [4,] -1.615837 0.7108631 [5,] -0.548879 0.3093389 [6,] 0.481756 0.1639112 [7,] 1.656178 -0.9952875 [8,] 2.560345 -0.2490548 [9,] 3.508442 0.1874520 [10,] 4.520055 0.1761397 set.seed(999) princomp(data.frame(1:10,rnorm(10)))$scores Comp.1 Comp.2 [1,] 4.508620 0.2567655 [2,] 3.373772 1.1369417 [3,] 2.679669 -1.0903445 [4,] …
37 r  pca  factor-analysis 

3
PCA的线性
PCA被认为是线性过程,但是: PCA(X)≠PCA(X1)+PCA(X2)+…+PCA(Xn),PCA(X)≠PCA(X1)+PCA(X2)+…+PCA(Xn),\mathrm{PCA}(X)\neq \mathrm{PCA}(X_1)+\mathrm{PCA}(X_2)+\ldots+\mathrm{PCA}(X_n), 其中 。这就是说,由PCA在数据矩阵上获得的特征向量的总和不等于由PCA在数据矩阵的总和上获得的特征向量。但是线性函数的定义不是:X=X1+X2+…+XnX=X1+X2+…+XnX=X_1+X_2+\ldots+X_nXiXiX_iXiXiX_ifff f(x+y)=f(x)+f(y)?f(x+y)=f(x)+f(y)?f(x+y)=f(x)+f(y)? 那么,如果PCA不满足线性这一非常基本的条件,为什么将其视为“线性”呢?
35 pca  linear 

3
PCA和火车/测试区
我有一个数据集,其中有多组二进制标签。对于每组标签,我训练一个分类器,并通过交叉验证对其进行评估。我想使用主成分分析(PCA)降低尺寸。我的问题是: 是否可以对整个数据集执行一次 PCA ,然后如上所述使用较低维度的新数据集进行交叉验证?还是我需要为每个训练集做一个单独的PCA(这意味着为每个分类器和每个交叉验证对折做一个单独的PCA)? 一方面,PCA不使用任何标签。另一方面,它确实使用测试数据进行转换,因此恐怕它可能会偏向结果。 我应该提到,除了为我节省一些工作之外,对整个数据集执行一次PCA可使我立即可视化所有标签集的数据集。如果每个标签集都有不同的PCA,则需要分别可视化每个标签集。

3
为什么不将t-SNE用作聚类或分类的降维技术?
在最近的一项作业中,我们被告知在MNIST数字上使用PCA将尺寸从64(8 x 8图像)减小到2。然后,我们不得不使用高斯混合模型对数字进行聚类。仅使用2个主要成分的PCA不会产生不同的聚类,因此该模型无法产生有用的分组。 但是,使用带有2个组件的t-SNE,可以更好地分离群集。当将高斯混合模型应用于t-SNE组件时,会产生更多不同的簇。 在下面的图像对中,可以看到具有2个分量的PCA和具有2个分量的t-SNE的差异,其中将变换应用于MNIST数据集。 我已经读到t-SNE仅用于高维数据的可视化(例如在此答案中),但是鉴于其产生的簇不同,为什么不将其用作降维技术,然后将其用于分类模型或一个独立的群集方法?

1
在因素分析/ PCA中进行旋转的直观原因是什么?如何选择合适的旋转?
我的问题 在因子分析(或PCA中的组件)中进行因子轮换的直观原因是什么? 我的理解是,如果变量几乎均等地加载到顶部组件(或因子)中,那么显然很难区分这些组件。因此,在这种情况下,可以使用旋转来更好地区分组件。它是否正确? 轮换会有什么结果?这会影响什么? 如何选择合适的旋转度?有正交旋转和倾斜旋转。如何在这些之间进行选择,这种选择的含义是什么? 请用最少的数学方程式直观地解释。分散的答案中很少有数学上很繁重的内容,但出于直观原因和经验法则,我正在寻找更多答案。

1
PCA如何帮助进行k均值聚类分析?
背景:我想根据城市的社会经济特征将其分为几类,包括住房单位密度,人口密度,绿地面积,房价,学校/保健中心/日托中心的数量等。我想了解居住区可以分为多少不同的组,以及它们的独特特征。这些信息可以促进城市规划。 根据一些示例(请参阅此博客文章:Delta Aircraft的PCA和K-means聚类),我发现进行分析的方法是: 首先做PCA分析。 根据PCA结果确定唯一组(集群)的数量(例如,使用“弯头”方法,或者选择解释总方差的80%到90%的组件数量)。 确定聚类数后,应用k均值聚类进行分类。 我的问题: PCA组件的数量似乎与聚类分析有关。的确如此,例如,如果我们发现5个PCA组件解释了所有功能的90%以上的变化,那么我们将应用k-均值聚类并得到5个聚类。那么这5个组是否恰好对应于PCA分析中的5个组成部分? 换句话说,我想我的问题是:PCA分析和k均值聚类之间有什么联系? 更新: 感谢Emre,xeon和Kirill的投入。所以目前的答案: 在进行聚类分析之前进行PCA对于减少维数作为特征提取器并可视化/显示聚类也很有用。 聚类后​​进行PCA可以验证聚类算法(参考:内核主成分分析)。 有时会应用PCA来降低聚类之前数据集的维数。然而,Yeung&Ruzzo(2000)指出,使用PC代替原始变量进行聚类并不一定能改善聚类质量。特别是,前几台PC(包含数据的大部分变化)不一定捕获大多数群集结构。 杨,杨怡和Walter L. Ruzzo。对基因表达数据进行聚类的主成分分析的实证研究。华盛顿大学计算机科学与工程系技术报告,2000年。(pdf) 在进行两步聚类分析之前,似乎需要PCA 。基于Ibes(2015),其中使用PCA中确定的因素进行了聚类分析。 Ibes,DorothyC。城市公园系统的多维分类和公平性分析:一种新颖的方法和案例研究应用。 《景观与城市规划》,第137卷,2015年5月,第122–137页。

1
PCA目标函数:最大化方差和最小化误差之间有什么联系?
可以根据相关矩阵来表示PCA算法(假设数据XXX已经被归一化,我们仅考虑投影到第一台PC上)。目标函数可以写成: maxw(Xw)T(Xw)s.t.wTw=1.maxw(Xw)T(Xw)s.t.wTw=1. \max_w (Xw)^T(Xw)\; \: \text{s.t.} \: \:w^Tw = 1. 很好,我们使用拉格朗日乘子来求解,即重写为: maxw[(Xw)T(Xw)−λwTw],maxw[(Xw)T(Xw)−λwTw], \max_w [(Xw)^T(Xw) - \lambda w^Tw], 相当于 maxw(Xw)T(Xw)wTw,maxw(Xw)T(Xw)wTw, \max_w \frac{ (Xw)^T(Xw) }{w^Tw}, 因此(在Mathworld上参见此处)似乎等于maxw∑i=1n(distance from point xi to line w)2.maxw∑i=1n(distance from point xi to line w)2.\max_w \sum_{i=1}^n \text{(distance from point $x_i$ to line $w$)}^2. 但这是为了最大化点与线之间的距离,从我在这里所读的内容来看,这是不正确的-应该是,而不是\ max。我的错误在哪里?最大minmin\minmaxmax\max 或者,有人可以告诉我最大化投影空间中的方差与最小化点与线之间的距离之间的联系吗?
32 pca  optimization 

3
相关或协方差的PCA:相关的PCA是否有意义?[关闭]
在主成分分析(PCA)中,可以选择协方差矩阵或相关矩阵来查找成分(从它们各自的特征向量中)。由于两个矩阵之间的特征向量不相等,因此得出不同的结果(PC加载和得分)。我的理解是,这是由于以下事实导致的:原始数据矢量及其标准化无法通过正交变换进行关联。在数学上,相似的矩阵(即通过正交变换关联)具有相同的特征值,但不一定具有相同的特征向量。XXXZZZ 这在我的脑海中带来了一些困难: 如果您可以针对同一起始数据集获得两个不同的答案,而两者都试图实现相同的目标(=最大方差的寻找方向),那么PCA真的有意义吗? 使用相关矩阵方法时,在计算PC之前,将通过其各自的标准偏差对每个变量进行标准化(缩放)。如果事先已经对数据进行了不同的缩放/压缩,那么找到最大方差方向仍然有意义吗?我知道基于相关的PCA非常方便(标准化变量是无量纲的,因此可以添加它们的线性组合;其他优点也基于实用主义),但这是正确的吗? 在我看来,基于协方差的PCA是唯一真正正确的方法(即使变量的方差相差很大),并且每当无法使用此版本时,也不应使用基于相关性的PCA。 我知道有这个线程:相关性或协方差的PCA?-但它似乎只专注于找到一种实用的解决方案,该解决方案也可能不是代数正确的解决方案。

3
在Tensorflow中构建自动编码器以超越PCA
Hinton和Salakhutdinov在利用神经网络降低数据的维数方面,《科学》(Science) 2006年提出了通过使用深度自动编码器来实现非线性PCA的方法。我曾多次尝试使用Tensorflow构建和训练PCA自动编码器,但我从未获得过比线性PCA更好的结果。 如何有效地训练自动编码器? (后来由@amoeba编辑:这个问题的原始版本包含Python Tensorflow代码,这些代码无法正常运行。您可以在编辑历史记录中找到它。)

1
大型稀疏矩阵上的降维(SVD或PCA)
/ edit:现在可以进行进一步跟进,您可以使用irlba :: prcomp_irlba / edit:跟进我自己的帖子。 irlba现在具有“中心”和“比例”自变量,可用于计算主成分,例如: pc <- M %*% irlba(M, nv=5, nu=0, center=colMeans(M), right_only=TRUE)$v 我Matrix想在机器学习算法中使用大量稀疏的功能: library(Matrix) set.seed(42) rows <- 500000 cols <- 10000 i <- unlist(lapply(1:rows, function(i) rep(i, sample(1:5,1)))) j <- sample(1:cols, length(i), replace=TRUE) M <- sparseMatrix(i, j) 因为此矩阵有很多列,所以我想将其维数减少到更易于管理的程度。我可以使用出色的irlba软件包执行SVD并返回前n个主要成分(此处显示5个;我可能会在实际数据集中使用100或500): library(irlba) pc <- irlba(M, nu=5)$u 但是,我已经读过在执行PCA之前,应该将矩阵居中(从每一列中减去列均值)。这在我的数据集上很难做到,而且会破坏矩阵的稀疏性。 对未缩放的数据执行SVD,并将其直接输入到机器学习算法中有多“糟糕”?在保留矩阵稀疏性的同时,是否有任何有效的方法可以缩放此数据? / edit:B_miner引起我注意的“ …

5
从许多自变量中检测出重要的预测变量
在两个非重叠人群(患者和健康人群,总计n=60n=60n=60)的数据集中,我想(从300300300独立变量中)找到连续因变量的重要预测因子。存在预测变量之间的相关性。我有兴趣了解是否有任何预测变量与“现实中”的因变量相关(而不是尽可能准确地预测因变量)。当我对众多可能的方法不知所措时,我想问一问最推荐哪种方法。 根据我的理解,不建议逐步加入或排除预测变量 例如,对每个预测变量分别运行线性回归,并使用FDR校正p值以进行多次比较(可能非常保守?) 主成分回归:难以解释,因为我无法讲述单个预测变量的预测能力,而只能讲述成分。 还有其他建议吗?


4
如何在R中使用PCA进行降维
我有一个大数据集,我想执行降维。 现在到处都有我可以使用PCA的信息。但是,在计算/执行PCA之后,我似乎仍然无所适从。在R中,可以通过命令轻松完成princomp。 但是计算完PCA后该怎么办?如果我决定要使用前主要成分,如何精确减少数据集?100100100
30 r  pca 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.