Questions tagged «pca»

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

3
当我们仅能减少功能数量时,为什么使用PCA来加快学习算法?
在机器学习课程中,我了解到PCA(主成分分析)的一种常见用法是加快其他机器学习算法的速度。例如,假设您正在训练逻辑回归模型。如果您有一个从1到n 的训练集,结果证明向量x的维数很大(比如说维数),可以使用PCA获得较小的维度(比方说k个维度)特征向量z。然后,您可以在的训练集上从1到n 训练逻辑回归模型。训练此模型将更快,因为特征向量的维数较小。(z (i ),y (i ))(x(i),y(i))(x(i),y(i))(x^{(i)},y^{(i)})(z(i),y(i))(z(i),y(i))(z^{(i)},y^{(i)}) 但是,我不明白为什么不能仅通过随机选择k个特征并消除其余特征来将特征向量的维数减小为k个维。 z向量是特征向量的线性组合。由于z向量限制在k维表面上,因此您可以将ak个消除的特征值写为k个剩余特征值的线性函数,因此所有z都可以通过k个特征的线性组合来形成。因此,在具有消除特征的训练集上训练的模型是否不应该与在其维度被PCA缩减的训练集上训练的模型具有相同的功效?它是否仅取决于模型的类型以及是否取决于某种线性组合?

1
与PCA中完成的步骤相比,因素分析中完成的步骤
我知道如何执行PCA(主要成分分析),但是我想知道应该用于因子分析的步骤。 为了执行PCA,让我们考虑一些矩阵,例如:AAA 3 1 -1 2 4 0 4 -2 -5 11 22 20 我已经计算出其相关矩阵B = corr(A): 1.0000 0.9087 0.9250 0.9087 1.0000 0.9970 0.9250 0.9970 1.0000 然后,我完成了特征值分解[V,D] = eig(B),生成了特征向量: 0.5662 0.8209 -0.0740 0.5812 -0.4613 -0.6703 0.5844 -0.3366 0.7383 和特征值: 2.8877 0 0 0 0.1101 0 0 0 0.0022 PCA背后的总体思路是选择重要的分量,形成具有列特征向量的新矩阵,然后我们需要投影原始矩阵(在PCA中,它是零中心的)。但是在因子分析中,例如,我们应该选择具有大于奇异值的组件,然后我们还要使用因子旋转,请告诉我它是如何完成的?例如在这种情况下。111 请帮助我了解与PCA步骤相比的因素分析步骤。

4
使用AIC(或BIC)选择PCA模型
我想使用Akaike信息准则(AIC)选择要在PCA中提取的适当数量的因子。唯一的问题是我不确定如何确定参数数量。 考虑一个矩阵,其中代表变量数,代表观察数,这样。由于协方差矩阵是对称的,因此的最大似然估计可以将AIC中的参数数量设置为。X Ñ Ť X 〜Ñ (0 ,Σ ) Σ Ñ (Ñ + 1 )Ť× NT×NT\times NXXXñNNŤTTX〜ñ(0 ,Σ )X∼N(0,Σ)X\sim \mathcal N\left(0,\Sigma\right)ΣΣ\Sigmañ(N+ 1 )2N(N+1)2\frac{N\left(N+1\right)}{2} 可选地,在PCA,可以提取第一特征向量和特征值,叫他们和,然后计算 ,其中是平均残差。据我统计,如果你有因素,那么你会在参数,在参数,和参数。Σ β ˚F Λ ˚F Σ = β ˚F Λ ˚F β ' ˚F + 我σ 2 - [R σ 2 - [R ˚F ˚F Λ …

2
PCA和随机森林
对于最近的Kaggle竞赛,我(手动)为我的训练集定义了10个其他功能,然后将其用于训练随机森林分类器。我决定在具有新功能的数据集上运行PCA,以查看它们之间的比较。我发现〜98%的方差由第一个分量(第一个特征向量)承载。然后,我多次训练分类器,一次添加一个功能,然后使用交叉验证和RMS误差比较分类的质量。我发现,每增加一个附加功能,分类都会有所改善,并且最终结果(包含所有10个新功能)远远优于(带有)两个功能的首次运行。 鉴于PCA声称〜98%的方差在我的数据集的第一部分中,为什么分类的质量有了很大的提高? 这对其他分类器是否成立?RF跨多个内核扩展,因此训练速度比(例如)SVM要快得多。 如果将数据集转换到“ PCA”空间,然后在转换后的空间上运行分类器,该怎么办?我的结果将如何变化?

5
我可以使用PCA进行变量选择以进行聚类分析吗?
我必须减少变量数量以进行聚类分析。我的变量之间有很强的相关性,因此我考虑进行因素分析 PCA(主要成分分析)。但是,如果使用所得分数,则我的聚类不是很正确(与文献中以前的分类相比)。 题: 我可以使用旋转矩阵为每个组件/因子选择负荷最大的变量,而仅将这些变量用于聚类吗? 任何参考书目也将有所帮助。 更新: 一些澄清: 我的目标: 我必须通过SPSS使用两步算法进行聚类分析,但是我的变量不是独立变量,因此我考虑丢弃其中的一些变量。 我的数据集: 我正在研究100,000个案例的15个标量参数(我的变量)。一些变量具有高度相关性( Pearson)>0.9>0.9>0.9 我的疑问: 由于只需要独立变量,因此我想进行主成分分析(对不起:我在最初的问题中错误地谈到了因子分析,这是我的错误),并且只为每个组件选择负荷最大的变量。我知道PCA过程存在一些任意步骤,但是我发现此选择实际上类似于IT Jolliffe(1972&2002)提出的“ 方法B4 ”来选择变量,JR King和DA Jackson也在1999年提出了这种选择。 。 因此,我正在考虑以这种方式选择一些自变量子组。然后,我将使用这些组来运行不同的聚类分析,并将比较结果。

2
因子分析中的前因子最大化了什么?
在主成分分析中,前主成分是具有最大方差的正交方向。换句话说,选择第一主成分为最大方差的方向,选择第二主成分为与最大方差正交的方向,依此类推。ķķkkķkk 因子分析有类似的解释吗?例如,我认为前因子是最能解释原始相关矩阵的非对角分量的因子(例如,原始相关矩阵与由相关系数定义的相关矩阵之间的平方误差)因素)。这是真的吗(或者我们可以说类似的话)?ķkk

2
如何使用主成分分析选择变量进行回归?
我目前正在使用主成分分析来选择要在建模中使用的变量。目前,我在实验中进行了A,B和C测量-我真正想知道的是:我可以减少测量并停止记录C和/或B以节省时间和精力吗? 我发现所有这三个变量都在我的第一个主成分上加重了,这占我数据差异的60%。组件得分告诉我,如果我将这些变量按一定比率(aA + bB + cC)加在一起。我可以在数据集中为每种情况在PC1上获得一个分数,并且可以将此分数用作建模中的变量,但这不能让我停止测量B和C。 如果我对PC1上的A,B和C的负载求平方,我发现变量A占PC1方差的65%,变量B占PC1方差的50%,变量C也占50%,即有些每个变量A,B和C所占PC1方差的一个变量与另一个变量共享,但是A占更大的比例。 认为我可以选择变量A或在模型中使用变量(可能是aA + bB)是错误的,因为该变量描述了PC1中很大一部分的方差,而这又描述了PC1中很大一部分的方差。数据? 您过去采用哪种方法? 即使有其他重型装载机,单个变量在PC1上的负载也最重? 使用所有变量在PC1上的组件得分,即使它们都是重型装载机?

1
PCA和TruncatedSVD的scikit-learn实现之间的区别
我了解主成分分析和奇异值分解在代数/精确水平之间的关系。我的问题是关于scikit-learn的实现。 该文档说:“ [TruncatedSVD]与PCA非常相似,但是直接对样本矢量进行运算,而不是对协方差矩阵进行运算。 ”,这将反映两种方法之间的代数差异。但是,后来又说:“ 此估算器[TruncatedSVD]支持两种算法:快速随机SVD求解器,和“天真”算法,该算法使用ARPACK作为(X * XT)或(XT * X)上的特征求解器,高效。关于PCA,它表示:“使用数据的奇异值分解来投影以减少线性维数……”。PCA实施支持相同的两种算法(随机和ARPACK)求解器以及另一种算法LAPACK。查看代码,我可以看到PCA和TruncatedSVD中的ARPACK和LAPACK都对样本数据X进行了svd,ARPACK能够处理稀疏矩阵(使用svds)。 因此,除了具有不同的属性和方法之外,PCA还可以使用LAPACK进行精确的全奇异值分解,PCA和TruncatedSVD scikit-learn实现似乎是完全相同的算法。第一个问题:这是正确的吗? 第二个问题:即使LAPACK和ARPACK使用scipy.linalg.svd(X)和scipy.linalg.svds(X)作为X样本矩阵,它们也会计算或X的奇异值分解或特征分解∗ X T内部。虽然“随机化”的求解器不需要计算乘积。(这与数值稳定性有关,请参阅为什么通过数据的SVD对数据进行PCA?)。这个对吗?XT∗XXT∗XX^T*XX∗XTX∗XTX*X^T 相关代码:PCA行415。截断SVD行137。
12 pca  scikit-learn  svd  scipy 


2
如何对PCA执行交叉验证以确定主成分的数量?
我正在尝试编写自己的用于主成分分析的函数PCA(当然已经编写了很多东西,但我只是想自己实现一些东西)。我遇到的主要问题是交叉验证步骤和计算预测的平方和(PRESS)。我使用哪种交叉验证都没有关系,这主要是关于背后的理论的问题,但请考虑留一法交叉验证(LOOCV)。从理论上我发现,要执行LOOCV,您需要: 删除对象 扩展其余部分 使用一些组件执行PCA 根据(2)中获得的参数缩放删除的对象 根据PCA模型预测对象 计算该对象的压力 对其他对象重新执行相同的算法 汇总所有PRESS值 利润 因为我是该领域的新手,所以为了确定我是对的,我将结果与我所拥有的某些软件的输出进行比较(同样为了编写一些代码,我遵循该软件中的说明进行操作)。计算残差平方和,我得到完全相同的结果,但是计算PRESS是个问题。[R2[R2R^2 您能否告诉我在交叉验证步骤中实施的方法是否正确: case 'loocv' % # n - number of objects % # p - number of variables % # vComponents - the number of components used in CV dataSets = divideData(n,n); % # it is just a variable responsible …

4
仅使用距离矩阵执行PCA
我想将只有成对距离的海量数据集聚类。我实现了k-medoids算法,但是运行时间太长,因此我想首先通过应用PCA减小问题的范围。但是,我知道执行此方法的唯一方法是使用我在我的情况下没有的协方差矩阵。 有没有一种方法可以仅知道成对距离来应用PCA?

2
PCA解决方案是否独特?
在某些数据集上运行PCA时,给我的解决方案是否唯一? 即,我根据点间距离获得了一组二维坐标。是否有可能找到满足这些约束的至少另一种点排列方式? 如果答案是肯定的,我如何找到这种不同的解决方案?
12 pca 

4
如何对非常高维度的数据执行PCA?
要执行主成分分析(PCA),您必须从数据中减去每一列的均值,计算相关系数矩阵,然后找到特征向量和特征值。嗯,这是我在Python中实现的方法,只是它仅适用于小型矩阵,因为找到相关系数矩阵(corrcoef)的方法不允许我使用高维数组。由于我必须将其用于图像,因此我当前的实现并没有真正帮助我。 我已经读过,可以只使用数据矩阵并计算而不是,但这对我不起作用。好吧,除了它应该是矩阵而不是(在我的情况下为)之外,我不确定我是否理解它的含义。我在特征脸教程中读到了有关这些内容的文章,但似乎都没有一个能以我能真正理解的方式进行解释。d d ⊤ / Ñ d ⊤ d / Ñ Ñ × Ñ p × p p » ÑDDDD D⊤/ nDD⊤/nDD^\top/nd⊤D / nD⊤D/nD^\top D/nn × nn×nn \times np × pp×pp\times pp » Ñp≫np\gg n 简而言之,该方法是否有简单的算法描述,以便我可以遵循?
12 pca  python 


1
PCA和PLS中的“负荷”和“相关负荷”有什么区别?
做主成分分析(PCA)时,要做的一件事是相互绘制两个载荷以研究变量之间的关系。在随附的用于进行主成分回归和PLS回归的PLS R软件包的论文中,有一个不同的图,称为相关负荷图(请参见本文中的图7和第15页)。的相关性装载,因为它是解释的,是分数之间和实际观察到的数据的相关性(从PCA或PLS)。 在我看来,加载和相关加载非常相似,只是它们的缩放比例有所不同。使用内置数据集mtcars的R中的可重现示例如下: data(mtcars) pca <- prcomp(mtcars, center=TRUE, scale=TRUE) #loading plot plot(pca$rotation[,1], pca$rotation[,2], xlim=c(-1,1), ylim=c(-1,1), main='Loadings for PC1 vs. PC2') #correlation loading plot correlationloadings <- cor(mtcars, pca$x) plot(correlationloadings[,1], correlationloadings[,2], xlim=c(-1,1), ylim=c(-1,1), main='Correlation Loadings for PC1 vs. PC2') 这些图的解释有什么区别?哪种曲线图(如果有的话)最适合在实践中使用?

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.