精华内容
下载资源
问答
  • PCA主成分分析实现方法Matlab;详细请查看博客资料:http://blog.csdn.net/guyuealian/article/details/68487833
  • PCA主成分分析java实现

    2018-07-01 20:49:34
    用java实现的主成分分析算法,用了Jama.Matrix,用的是Jama-1.0.2.jar。代码有备注,希望有帮助。
  • from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.svm import SVC import matplotlib.pyplot as plt import numpy as np ...
  • PCA主成分分析代码

    2014-08-01 10:26:04
    实现PCA主成分分析,保留前N个主成分,返回投影坐标系,内有详尽说明。
  • 线性降维主成分分析PCA的matlab图像压缩仿真代码,还包括了与奇异值分解进行对比的程序,基于matlab2018写的,可直接运行。
  • 自己写的一个PCA主成分分析,使用三维的形式进行演示的,非常好用哦。
  • PCA,python实现,包含手工写的PCA完整实现过程,以及直接从sklearn调用包进行PCA降维,前者可以帮助理解PCA的理论求解过程,后者可以直接替换数据迅速上手,里面还包含一个案例,降维到二维空间以后的散点图。...
  • PCA主成分分析法_特征提取,pca主成分分析应用,Python源码
  • 实现pca主成分分析,从高维数据降至低维数据
  • PCA主成分分析

    2019-11-12 17:18:37
    主成分分析: 1.主成分:将样本作图,数据变化剧烈程度最大的方向就是主成分所在的方向。就是说,数据在某个方向上的投影上的方差最大,那么这个方向就是主成分的方向。 2.通过特征值和特征向量来求主成分,对数据...

    相关概念:

    1. 高斯分布:就是正态分布


    主成分分析:

    1.主成分:将样本作图,数据变化剧烈程度最大的方向就是主成分所在的方向。就是说,数据在某个方向上的投影上的方差最大,那么这个方向就是主成分的方向。

    2.通过特征值和特征向量来求主成分,对数据做相应的变化(比如在将数据沿某轴缩放,然后旋转),然后计算样本协方差矩阵,求这个协方差矩阵的特征值和特征向量,特征值最大的就对应最主要的主成分,其对应的特征向量就是样本投影的方向。

     

    第三张图中的椭圆的长轴方向就是最大的特征值对应的特征向量的方向


    通过主成分分析降维(将数据由n维降到m维):

    1.数据预处理:

    在降维之前,需要对数据进行预处理,最常见的方法就是,将数据减去均值再除以标准差,这样子可以避免不同维度之间的数据差距过大带来的不良影响。

    2.降维步骤:

    • 首先求n维数据的协方差矩阵(n*n维)
    • 计算协方差矩阵的特征值和对应的特征向量
    • 挑选前面最大的m个特征值,然后分别将样本投影到相应的m个方向(特征向量在的方向),即可得到m维数据

    3.降维后的数据处理

    • 其实这里暗藏一个线性代数中的知识,就是变换后的数据,每一维度的的标准差就是对应特征值的开方(标准差是特征值的开方),所以可以做下面公式的处理:

     

     

    公式中的是处理后的数据,是处理前的数据,是本维度数据对应的特征值。

    • 实际中,如果选取的主成分多而且数据本身维度之间相关度较高,那么排在后面的特征值会很小,这样子处理后的数据就会过大,那么需要做如下处理:

    数据中心的是一个很小的值,用以减小计算后的值,这个操作叫做白化


     

    展开全文
  • 主成分分析pcaTL;DR: PCA cannot handle categorical variables because it makes linear assumptions about them. Nonlinear PCA addresses this issue by warping the feature space to optimize explained ...

    pca 主成分分析

    TL;DR: PCA cannot handle categorical variables because it makes linear assumptions about them. Nonlinear PCA addresses this issue by warping the feature space to optimize explained variance. (Key points at bottom.)

    TL; DR: PCA无法处理分类变量,因为它对它们进行了线性假设。 非线性PCA通过扭曲特征空间以优化解释的方差来解决此问题。 (关键点在底部。)

    Principal Component Analysis (PCA) has been one of the most powerful unsupervised learning techniques in machine learning. Given multi-dimensional data, PCA will find a reduced number of n uncorrelated (orthogonal) dimensions, attempting to retain as much variance in the original dataset as possible. It does this by constructing new features (principle components) as linear combinations of existing columns.

    主成分分析(PCA)是机器学习中最强大的无监督学习技术之一。 给定多维数据,PCA将发现数量减少的n个不相关(正交)维,尝试在原始数据集中保留尽可能多的方差。 它通过将新功能(原理组件)构造为现有列的线性组合来实现。

    However, PCA cannot handle nominal — categorical, like state — or ordinal — categorical and sequential, like letter grades (A+, B-, C, …) — columns. This is because a metric like variance, which PCA explicitly attempts to model, is an inherently numerical measure. If one were to use PCA on data with nominal and ordinal columns, it would end up making silly assumptions like ‘California is one-half New Jersey’ or ‘A+ minus four equals D’, since it must make those kinds of relationships to operate.

    但是,PCA无法处理名义(类别,如状态)或排序(类别和顺序),如字母等级(A +,B-,C等)的列。 这是因为PCA明确尝试建模的类似方差的度量标准是固有的数字度量。 如果要在具有标称和序数列的数据上使用PCA,最终将做出愚蠢的假设,例如“加利福尼亚州是新泽西州的一半”或“ A +减去四等于D”,因为它必须使这种关系起作用。

    Image for post

    Rephrased in relation to a mathematical perspective, PCA relies on linear relationships, that is, the assumption that the distance between “strongly disagree” and “disagree” is the same as the difference from “disagree” to “neutral”. In almost every real-world dataset, these sorts of linear relationships do not exist for all columns.

    从数学角度重新描述,PCA依赖于线性关系,即“强烈不同意”和“不同意”之间的距离与“不同意”到“中立”的差异相同的假设。 在几乎每个现实世界的数据集中,并非所有列都存在此类线性关系。

    Additionally, using one-hot encoding — that is, converting categorical data into vectors of ones and zeroes — results in an extremely sparse and information-parched multidimensional space that PCA cannot perform well on, since several features contain only two unique values.

    此外,使用一键编码(即将分类数据转换为一和零的向量)会导致PCA无法很好地执行的极为稀疏且信息匮乏的多维空间,因为多个功能仅包含两个唯一值。

    Nonlinear PCA rectifies this aspect of PCA by generalizing methods to approach dimensionality reduction not only for numerical features, but for categorical and ordinal variables. This is done through categorical quantification.

    非线性PCA通过泛化方法来修正PCA的这一方面,不仅针对数字特征,而且针对分类和有序变量也都采用降维方法。 这是通过分类量化完成的。

    Categorical quantification (CQ) is exactly what its name suggests: it attaches a numerical representation to each category, converting categorical columns into numerical ones, such that the performance of the PCA model (like explained variance) is maximized. CQ optimally places categories on a numerical dimension instead of making assumptions about them.

    分类量化(CQ)正是其名称的含义:它将数字表示形式附加到每个类别,将分类列转换为数字列,从而使PCA模型的性能(如解释的方差)最大化。 CQ最佳地将类别放在数字维度上,而不是对其进行假设。

    Image for post

    This information can be very enriching. For instance, we might be able to say that Washington and Idaho have very similar structures in other parts of the data because they are placed so closely, or that California and Virginia are nowhere similar because they are placed far apart. In this sense, CQ is not only enriching the PCA model with categorical data but also giving us a look into the structures of the data by state.

    这些信息可以非常丰富。 例如,我们也许可以说,华盛顿和爱达荷州在数据的其他部分具有非常相似的结构,因为它们放置得太近了;或者,加利福尼亚和弗吉尼亚州的相似之处在于它们的位置很远。 从这个意义上讲,CQ不仅用分类数据丰富了PCA模型,而且使我们可以按状态查看数据的结构。

    An alternative view of CQ is through a line plot. Although in the case of nominal data, the order of columns is arbitrary and there do not need to be connecting lines, it is visualized in this way to demonstrate the nominal level of analysis. If a feature’s level is specified as nominal, it can take on any numerical value.

    CQ的替代视图是通过折线图。 尽管在名义数据的情况下,列的顺序是任意的,并且不需要连接线,但可以通过这种方式将其可视化以展示名义分析水平。 如果将特征级别指定为标称值,则它可以采用任何数值。

    Image for post

    On the other hand, if a feature level is specified as ordinal, the restriction is that the order must be preserved. For instance, the relation between ‘A’ and ‘B’ in that ‘A’ is better than ‘B’ must be kept, which can be represented with A=0 and B=5 (assuming 0 is the best) or A=25 and B=26, as long as B is never less than A. This helps retain the structure of ordinal data.

    另一方面,如果将要素级别指定为序数,则限制是必须保留顺序。 例如,必须保持“ A”与“ B”之间的关系,因为“ A”优于“ B”,可以用A=0B=5 (假设0为最佳)或A=25B=26 ,只要B永远不小于A。这有助于保留序数数据的结构。

    Image for post
    Note that the next data point is always larger or equal to the previous data point. This is a restriction on ordinal-level features.
    请注意,下一个数据点始终大于或等于前一个数据点。 这是对序数级功能的限制。

    Like CQ for nominal data, this is tremendously insightful. For instance, we notice that within pluses and minuses of letter grades (A+, A, A-), there is not much difference, but the difference between X- and Y+ (X and Y being sequential letters) always leads to a large jump, particularly the difference between D and F. To reiterate the point above — this chart is generated by finding optimal values for categories such that the PCA model performs best (explained variance is highest).

    就像名义数据的CQ一样,这是非常有见地的。 例如,我们注意到在字母等级(A +,A,A-)的正负之间并没有太大差异,但是X-Y +之间的差异( XY是顺序字母)总是导致重申以上几点-通过查找类别的最佳值以使PCA模型表现最佳(解释方差最高)来生成此图。

    Note that because CQ determines the space between data points (e.g. that the difference between A and A- is much less than that of D and F), it warps the space in which these points lie. Instead of assuming a linear relationship (A and A- are as close as D and F), CQ distorts the distances between common intervals — hence, nonlinear PCA.

    请注意,由于CQ决定了数据点之间的间隔(例如,A和A-之间的差远小于D和F的差),因此它将扭曲这些点所在的空间。 CQ不会假设线性关系(A和A-与D和F接近),而是会扭曲公共间隔之间的距离,因此会扭曲非线性 PCA。

    To give an idea of the nonlinearities that can arise when the distance between sequential intervals are altered, here’s a 3 by 3 square in distorted space:

    为了让人们理解当顺序间隔之间的距离改变时可能出现的非线性,这里是一个3 x 3平方的扭曲空间:

    Image for post

    By using categorical quantification, the feature space is distorted — in a good way! Intervals are selectively chosen such that the performance of PCA is maximized. Nonlinear PCA, in this sense, not only can be thought of as an encoding method for ordinal and nominal variables but also increases the global strength of the PCA model.

    通过使用分类定量,可以很好地扭曲特征空间! 选择间隔以使PCA的性能最大化。 从这个意义上讲,非线性PCA不仅可以看作是序数和名义变量的编码方法,而且可以提高PCA模型的整体强度。

    Although the mathematics behind Nonlinear PCA is very rich, generally speaking, NPCA uses the same methods as PCA (like eigenvalue solving, etc.), but uses CQ to derive the most information and benefit to the model.

    尽管非线性PCA背后的数学非常丰富,但通常来说,NPCA使用与PCA相同的方法(例如特征值求解等),但是使用CQ来获得最多的信息并从模型中受益。

    关键点 (Key Points)

    • PCA cannot handle nominal (categorical) or ordinal (sequential) columns because it is an inherently numerical algorithm and makes silly linear assumptions about these types of data.

      PCA无法处理标称(分类)或序数(顺序)列,因为它是固有的数值算法,并且对这些类型的数据进行了愚蠢的线性假设。
    • Nonlinear PCA uses categorical quantification, which finds the best numerical representation of unique column values such that the performance (explained variance) of the PCA model using the transformed columns is optimized.

      非线性PCA使用分类量化,它可以找到唯一列值的最佳数值表示形式,从而可以优化使用转换列的PCA模型的性能(解释方差)。
    • Categorical quantification is a very insightful data mining method, and can give lots of insight into the structures of the data through the lens of a categorical value. Unfortunately, using Nonlinear PCA means that the coefficients of principal components are less interpretable (but still understandable, just to a less statistical rigor).

      分类量化是一种非常有见地的数据挖掘方法,可以通过分类价值的镜头深入了解数据的结构。 不幸的是,使用非线性PCA意味着主成分的系数难以解释(但仍然可以理解,只是对统计的严格要求较低)。

    All images created by author.

    作者创作的所有图像。

    翻译自: https://medium.com/analytics-vidhya/beyond-ordinary-pca-nonlinear-principal-component-analysis-54a93915a702

    pca 主成分分析

    展开全文
  • PCA主成分分析实验报告 (附MATLAB代码)
  • PCA主成分分析,中文论文。对于特征与成分分析有参考价值。
  • Sklearn 实现4.1 主成分可视化参考文献 相关文章: 机器学习 | 目录 1. 降维 假设你在使用一组数据来预测房价,你的数据包含以下特征: 房子面积 房间数量 附近学校排名 社区安全 ...


    相关文章:

    机器学习 | 目录

    无监督学习 | PCA 主成分分析之客户分类

    1. 降维

    假设你在使用一组数据来预测房价,你的数据包含以下特征:

    1. 房子面积

    2. 房间数量

    3. 附近学校排名

    4. 社区安全

    但是可以看出,1、2 在于描述房子的大小,而 3、4 在描述周边环境。因此我们可以用两个新的特征来预测房价:1. 房子大小;2. 周边环境,我们称之为潜在变量。现在可能我们有很多可测量的特征,但或许只有少量的潜在特征,其中包含大部分的信息。

    在本文中,我们主要讨论的是如何将维度降低,降低维度的方法有两种:1.特征选择,2. 特征提取

    特征选择指的是从已有变量中选择较少的变量,如用“房子面积”来描述“房子大小”,用“社区安全”来描述“周边环境”,如逐步回归,在 Sklearn 中用 SelectKBest 选择K个最合适的特征,或用 SelectPercentile 选取前百分比的特征。

    特征提取则是对同一类的变量进行融合,假设现在有很多特征可以使用,但只有一分布特征在驱动这个数据模式。因此我们希望找出一个组合特征(omposite feature,又称为主成分 principle component),从而将一大堆特征缩减至几个特征。如将“房子面积”和“房间数量”融合为“房子大小”,将“附近学校排名”和“社会安全”融合为“周边环境”,这就是降维,将维数从 4 降到了 2。

    主成分分析(Principal Component Analysis, PCA)是最常用的一种降维方法,除此之外还有增量主成分分析(IPCA)、核主成分分析(KPCA)、局部线性嵌入(LLE)、多维缩放(SDA)、等度量映射(Isomap)、t-分布随机近邻嵌入(t-SNE)和线性判别(LDA)。[1]

    2. PCA

    假设下面是房子面积和房间数量的散点图,X 轴为房子面积,Y 轴为房间数量:

    图1 房子面积与房间数量散点图

    首先我们可以画出他们的主成分,如下所示:

    图2 房子面积与房间数量的主成分

    这看起来像个回归问题,但并不是这样的。在回归中,我们的目的是预测与输入值对应的输出值,在这里,我们并不是要预测任何值,而是算出数据的大致方向,使得我们的数据能够在尽量少地损失信息的同时映射在该方向上。

    当我们找到了数据的主成分后,也就是向量的方向后,我们可以对数据进行一个映射,如下所示,我们的原始数据是二维的,但是,当我们把映射到主成分上之后,它就变成一维数据了。

    图3 数据映射

    下面,我将介绍如何确定主成分。

    2.1 最大化方差和最小化损失

    对于我们的数据,可以用一个椭圆,这个椭圆可以用两个参数来表示:短轴的距离和长轴的距离,可以看到,在长轴上,数据更加的分散,即方差更大。我们要做的就是找到方差最大的方向。

    图4 方差最大化

    为什么我们要找出具有最大方差的方向呢。换而言之,当我们在进行映射时,为什么要将所有数据点映射到方差最大的方向上呢?这是因为当我们沿着方差最大的方向进行映射时,它能够在最大程度上保留原有数据中所含信息。

    当我们对数据进行映射时,就会造成信息损失,信息的损失量就等于某个特定的点与它在这条线上的新位置之间的距离

    图5 信息损失

    可以看到,对于图 5 的右图而言,此时数据在该方向上映射的方差最小,但信息损失也就最大。因此当我们将方差最大化的同时,实际上是将点与其在该线上的投影之间的距离最小化,即最小化信息损失。

    2.2 坐标轴旋转

    PCA 实际上是先对坐标轴进行旋转,通过计算数据映射在每个方向上的后的方差,选取前 K 个方差最大的特征。

    3. PCA 推导

    3.1 PCA 算法推导

    假设输入样本为 Z = { Z 1 , Z 2 , . . . , Z m } Z=\{Z_1,Z_2,...,Z_m\} Z={Z1,Z2,...,Zm},我们要通过 PCA 从 m m m 维降至 k k k 维,首先对样本进行中心化,即对每个属性减去其对应的均值:

    X = { Z 1 − Z 1 ˉ , Z 2 − Z 2 ˉ , . . . , Z m − Z m ˉ } = { X 1 , X 2 , . . . , X m } (1) \begin{aligned} X & = \{Z_1-\bar{Z_1}, Z_2-\bar{Z_2}, ...,Z_m-\bar{Z_m} \} \\ & = \{X_1,X_2,...,X_m\}\\ \end{aligned}\tag{1} X={Z1Z1ˉ,Z2Z2ˉ,...,ZmZmˉ}={X1,X2,...,Xm}(1)

    假设经过旋转后新的坐标为 X T ⋅ W X^T \cdot W XTW,其中 W W W 为单位正交基向量矩阵( W T ⋅ W = E W^T \cdot W =E WTW=E),因此要最大化投影间隔,即最大化其方差 W T X X T W W^T X X^T W WTXXTW(中心化后均值为 0):

    max ⁡ W { W T X X T W } s . t . W T W = E (2) \begin{aligned} & \max \limits_{W} \{W^T X X^T W\} \\ & s.t. W^T W =E \\ \end{aligned}\tag{2} Wmax{WTXXTW}s.t.WTW=E(2)

    由拉格朗日乘数法得:

    W T X X T W + λ [ E − W T W ] (3) W^T X X^T W + \lambda [E-W^T W] \tag{3} WTXXTW+λ[EWTW](3)

    W W W 求导得:

    ∂ ∂ W { W T X X T W + λ [ E − W T W ] } = 2 X X T W − 2 λ E W = 0 (4) \frac{\partial}{\partial W}\bigg\{W^T X X^T W + \lambda [E-W^T W]\bigg\} = 2X X^T W - 2\lambda E W =0 \tag{4} W{WTXXTW+λ[EWTW]}=2XXTW2λEW=0(4)

    因此有:

    X X T w = λ W (5) XX^Tw=\lambda W \tag{5} XXTw=λW(5)

    ( λ E − X X T ) W = 0 (6) (\lambda E - XX^T)W=0 \tag{6} (λEXXT)W=0(6)

    其中 X X T XX^T XXT 为样本 Z Z Z 的协方差矩阵, λ \lambda λ X X T XX^T XXT 的特征值, W W W X X T XX^T XXT 的特征向量。

    将式 (5) 代入式 (2) 可得:

    m a x { W T X X T W } = m a x { W T λ W } = m a x { λ W W T } = m a x λ E (7) \begin{aligned} & max\{W^T X X^T W\} \\ = & max\{W^T\lambda W\} \\ = & max\{\lambda WW^T\} \\ = & max{\lambda E} \\ \end{aligned}\tag{7} ===max{WTXXTW}max{WTλW}max{λWWT}maxλE(7)

    于是,只需要对协方差矩阵 X X T XX^T XXT进行特征值分解,将求得的特征值排序: λ 1 ≥ , λ 2 ≥ , . . . , λ m \lambda_1 \geq,\lambda_2 \geq,...,\lambda_m λ1,λ2,...,λm,再取前 k k k 个特征值对应的特征向量构成投影矩阵 W = ( w 1 , w 2 , . . . , w k ) W = (w_1,w_2,...,w_k) W=(w1,w2,...,wk),这就是主成分分析的解。

    主成分所占整个信息的百分比可以用下式计算:

    ∑ i = 1 k λ i ∑ i = 1 m λ i (8) \frac{\sum_{i=1}^k \lambda_i}{\sum_{i=1}^m \lambda_i} \tag{8} i=1mλii=1kλi(8)

    PCA 算法描述如下图所示:

    图6 PCA 算法

    实践中常通过对 X 进行奇异值(SVD)分解来代替协方差矩阵的特征值分解。

    3.2 维数选择

    降维后低维空间的维数 k k k 通常是实现指定的,或通过在 k k k 值不同的低维空间中对 KNN 分类器(或其他开销较小的学习器)进行交叉验证来选去较好的 k k k 值。对 PCA,还可以从重构的角度设置一个重构阈值,例如 t = 95 % t=95\% t=95%,然后选择使下式成立的最小 k k k 值:[2]

    ∑ i = 1 k λ i ∑ i = 1 m λ i ≥ t (9) \frac{\sum_{i=1}^k \lambda_i}{\sum_{i=1}^m \lambda_i} \geq t \tag{9} i=1mλii=1kλit(9)

    显然,低维空间与原始高维空间必有不同,因为对应于最小的 m-k 个特征值的特征向量被舍弃了,这是降维导致的结果。但是舍弃这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据收到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度起到去除噪声的效果。

    4. Sklearn 实现

    sklearn.decomposition.PCA (n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)

    n_compoents:主成分数量,当为 0.0 到 1.0 之间的浮点数时,表示希望保留的方差比。


    Methods

    fit(self, X[, y]) Fit the model with X.

    fit_transform(self, X[, y]) Fit the model with X and apply the dimensionality reduction on X.

    get_covariance(self) Compute data covariance with the generative model.

    get_params(self[, deep]) Get parameters for this estimator.

    get_precision(self) Compute data precision matrix with the generative model.

    inverse_transform(self, X) Transform data back to its original space.

    score(self, X[, y]) Return the average log-likelihood of all samples.

    score_samples(self, X) Return the log-likelihood of each sample.

    set_params(self, **params) Set the parameters of this estimator.

    transform(self, X) Apply dimensionality reduction to X.


    查看 PCA 的详细信息:

    components_:主成分

    explained_variance_:解释方差

    explained_variance_ratio_:解释方差比

    4.1 主成分可视化

    first_pc = pca.components_[0]
    second_pc = pca.components_[1]
    
    transformed_data = pca.transform(data)
    for ii,jj in zip(transformed_data, data):
        plt.scatter( first_pc[0]*ii[0], first_pc[1]*ii[0], color="r")
        plt.scatter( second_pc[0]*ii[1], second_pc[1]*ii[1], color="c")
        plt.scatter( jj[0], jj[1], color="b")
       
    plt.xlabel("bonus")
    plt.ylabel("long-term incentive")
    plt.show()
    
    图7 安然数据集

    5. 在线可视化网站

    通过这个网站,你可以更直观的了解到 PCA 降维的含义。

    图8 3维数据主成分

    参考文献

    [1] Aurelien Geron, 王静源, 贾玮, 边蕤, 邱俊涛. 机器学习实战:基于 Scikit-Learn 和 TensorFlow[M]. 北京: 机械工业出版社, 2018: 191.

    [2] 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016: 53-56.229-233 .

    展开全文
  • 一文看懂PCA主成分分析

    千次阅读 2020-05-09 08:20:00
    前言NGS系列文章包括NGS基础、转录组分析(Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析(ChIP-seq基本分析流程)、单细胞测序分析(重磅...

    前言

    NGS系列文章包括NGS基础、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述))、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step) - Limma差异分析、火山图、功能富集)等内容。

    主成分分析简介

    主成分分析 (PCA, principal component analysis)是一种数学降维方法, 利用正交变换 (orthogonal transformation)把一系列可能线性相关的变量转换为一组线性不相关的新变量,也称为主成分,从而利用新变量在更小的维度下展示数据的特征。

    主成分是原有变量的线性组合,其数目不多于原始变量。组合之后,相当于我们获得了一批新的观测数据,这些数据的含义不同于原有数据,但包含了之前数据的大部分特征,并且有着较低的维度,便于进一步的分析。

    在空间上,PCA可以理解为把原始数据投射到一个新的坐标系统,第一主成分为第一坐标轴,它的含义代表了原始数据中多个变量经过某种变换得到的新变量的变化区间;第二成分为第二坐标轴,代表了原始数据中多个变量经过某种变换得到的第二个新变量的变化区间。这样我们把利用原始数据解释样品的差异转变为利用新变量解释样品的差异。

    这种投射方式会有很多,为了最大限度保留对原始数据的解释,一般会用最大方差理论或最小损失理论,使得第一主成分有着最大的方差或变异数 (就是说其能尽量多的解释原始数据的差异);随后的每一个主成分都与前面的主成分正交,且有着仅次于前一主成分的最大方差 (正交简单的理解就是两个主成分空间夹角为90°,两者之间无线性关联,从而完成去冗余操作)。

    主成分分析的意义

    1. 简化运算。

      在问题研究中,为了全面系统地分析问题,我们通常会收集众多的影响因素也就是众多的变量。这样会使得研究更丰富,通常也会带来较多的冗余数据和复杂的计算量。

      比如我们我们测序了100种样品的基因表达谱借以通过分子表达水平的差异对这100种样品进行分类。在这个问题中,研究的变量就是不同的基因。每个基因的表达都可以在一定程度上反应样品之间的差异,但某些基因之间却有着调控、协同或拮抗的关系,表现为它们的表达值存在一些相关性,这就造成了统计数据所反映的信息存在一定程度的冗余。另外假如某些基因如持家基因在所有样本中表达都一样,它们对于解释样本的差异也没有意义。这么多的变量在后续统计分析中会增大运算量和计算复杂度,应用PCA就可以在尽量多的保持变量所包含的信息又能维持尽量少的变量数目,帮助简化运算和结果解释。

    2. 去除数据噪音。

      比如说我们在样品的制备过程中,由于不完全一致的操作,导致样品的状态有细微的改变,从而造成一些持家基因也发生了相应的变化,但变化幅度远小于核心基因 (一般认为噪音的方差小于信息的方差)。而PCA在降维的过程中滤去了这些变化幅度较小的噪音变化,增大了数据的信噪比。

    3. 利用散点图实现多维数据可视化。

      在上面的表达谱分析中,假如我们有1个基因,可以在线性层面对样本进行分类;如果我们有2个基因,可以在一个平面对样本进行分类;如果我们有3个基因,可以在一个立体空间对样本进行分类;如果有更多的基因,比如说n个,那么每个样品就是n维空间的一个点,则很难在图形上展示样品的分类关系。利用PCA分析,我们可以选取贡献最大的2个或3个主成分作为数据代表用以可视化。这比直接选取三个表达变化最大的基因更能反映样品之间的差异。(利用Pearson相关系数对样品进行聚类在样品数目比较少时是一个解决办法)

    4. 发现隐性相关变量。

      我们在合并冗余原始变量得到主成分过程中,会发现某些原始变量对同一主成分有着相似的贡献,也就是说这些变量之间存在着某种相关性,为相关变量。同时也可以获得这些变量对主成分的贡献程度。对基因表达数据可以理解为发现了存在协同或拮抗关系的基因。

    因为原文是用Rmarkdown转码而来,格式显示不规范,请移步原文链接查看。

    你可能还想看

    高颜值免费在线绘图

    往期精品(点击图片直达文字对应教程)

    后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

    展开全文
  • 点云主成分分析和法向量计算的python源代码,可下载直接应用
  • 主成分分析,保证所选自变量的特性都能包含在新构造的变量中,实现对多个自变量降维,简化方程
  • PCA从特征的协方差出发,来找到比较好的投影方式,最后需要保留的特征维数可以自己选择。
  • 本文旨在能快速地用matlab实现pca主成分分析,并简单地了解其原理。该系列文章是个人在参加2021年暑假国赛数模的培训,自己记录的心得与体会,意在总结归纳自己的学习成果,也希望能帮助想在数模比赛中施展身手的...
  • 运用SPSS进行PCA主成分分析(因子分析)

    万次阅读 多人点赞 2020-03-10 20:37:55
    PCA主成分分析是以降维方式提取主成分,提取出的主成分是原始变量的综合考量,可简化数据的复杂度,便于后期处理。本文记录了如何利用SPSS中自带的因子分析进行主成分分析。以及如何计算权重。
  • R语言 PCA主成分分析前言统计学背景知识协方差相关系数函数总结实例讲解1.载入原始数据2.作主成分分析3.结果解读4.画主成分的碎石图并预测5.PCA结果绘制后记前言PCA分析大家肯定经常看到,但是你真的懂PCA分析的结果...
  • PCA主成分分析python实现

    万次阅读 多人点赞 2018-10-13 14:32:50
    PCA(principle component analysis) ,主成分分析,主要是用来降低数据集的维度,然后挑选出主要的特征。原理简单,实现也简单。关于原理公式的推导,本文不会涉及,你可以参考下面的参考文献,也可以去Wikipedia...
  • import numpy as np import matplotlib.pyplot as plt %matplotlib inline ...# pca 将数据属性变少,少量得数据可以代表原来比较多的数据 from sklearn.decomposition import PCA from sklearn.li...
  • PCA主成分分析(降维)

    千次阅读 2019-03-25 16:00:00
    PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维...
  • 前一篇提到的人脸识别中,我们在使用SVM支持向量机做人脸分类之前使用到PCA提取人脸数据中的主要成分,降低计算的维度,那么具体PCA是如何提取的呢?下文了解一下。 PCA is a method to project data in a higher ...
  • PCA主成分分析实战和可视化 | 附R代码和测试数据

    千次阅读 多人点赞 2019-01-18 21:16:15
    一文看懂PCA主成分分析中介绍了PCA分析的原理和分析的意义(基本简介如下,更多见博客),今天就用数据来实际操练一下。 在生信宝典公众号后台回复**“PCA实战”**,获取测试数据。 一、PCA应用 # 加载需要用到的R包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,531
精华内容 9,812
关键字:

pca主成分分析