精华内容
下载资源
问答
  • PCA主成分分析

    2017-10-30 15:55:03
    PCA主成分分析的算法具体讲解,以及实现方法,对PCA更加熟悉
  • PCA主成分分析算法(Principal Components Analysis)是一种最常用的降维算法。能够以较低的信息损失(以样本间分布方差衡量)减少特征数量。PCA算法可以帮助分析样本中分布差异最大的成分(主成分),有助于数据可视化...

    8a840ae7e09eb95607be0ef717c2a1ae.png

    PCA主成分分析算法(Principal Components Analysis)是一种最常用的降维算法。能够以较低的信息损失(以样本间分布方差衡量)减少特征数量。

    PCA算法可以帮助分析样本中分布差异最大的成分(主成分),有助于数据可视化(降低到2维或3维后可以用散点图可视化),有时候还可以起到降低样本中的噪声的作用(丢失的信息有部分是噪声)。

    一,PCA算法的直觉理解

    从直觉上看,PCA主成分分析类似于依次寻找一群样本点的各个位置差异最大的方向长轴。

    f82c3d6806f83c62d23d5b2d032a4836.png

    假定把一个人身上的所有细胞看成一个一个的样本点。这些样本点可以用3个坐标来表示,从左到右为x方向,从前到后为y方向,从下到上为z方向。

    那么它们的第一个主成分是什么呢?第一个主成分对应的长轴是沿着人的脚到头的方向,也就是通常的上下方向,即z方向。这个方向是最主要的长轴。这些样本点的位置差异基本上70%以上来自于这个方向上的差异。

    它们的第二个主成分是什么呢?第二个主成分对应的方向是沿着人的左臂到右臂的方向,也就通常的左右方向,即y方向。这个方向和第一个主成分长轴垂直,这些样本点的位置差异大概有20%左右来自这个方向上的差异。

    它们的第三个主成分是什么呢?第三个主成分方向是沿着人的前胸到后背的方向,也就是通常的前后方向,即x方向。这个方向和前两个主成分长轴垂直,样本点的位置差异有一般只有不到10%来自这个方向的差异,当然,有些身材比较圆润的同学除外。

    现在,如果要将这些样本点的坐标减少到用2个来表示,并尽可能多的保留样本点之间位置差异的信息,那么,显然,应该保留第一个主成分坐标和第二个主成分坐标。

    现在,假定这个人躺在一个斜的躺椅上,那么现在这些样本点的第一主成分显然不再是从下到上的z方向。我们应该将我们的坐标系作一个旋转,让z轴和斜着的躺椅方向一致,这个新的z方向是这些样本点的第一主成分方向。类似地,也需要旋转x轴和y轴得到新的第二主成分方向和第三主成分方向。

    这个旋转旧坐标系以找到主成分方向的过程就是PCA主成分分析。

    二,PCA算法的数学说明

    PCA主成分分析(Principal Components Analysis)是一种通过正交线性组合方式,最大化保留样本间方差降维方法。

    用几何观点来看,PCA主成分分析方法可以看成通过正交变换,对坐标系进行旋转和平移,并保留样本点投影坐标方差最大的前几个新的坐标。

    这里有几个关键词需要说明:

    • 降维:将样本原来的m维特征用更少的k个特征取代。降维算法可以理解成一种数据压缩方法,它可能会丢失一些信息。
    • 正交线性组合:k个新特征是通过对m个旧特征进行线性组合产生的,并且k个线性组合的系数向量为单位向量,且彼此相互正交。
    • 最大化保留样本间方差:第1个主成分特征最大化样本间特征方差,第2个主成分特征在满足与第1个主成分正交约束条件下最大化样本间特征方差,……。

    16f0a80d3636d31fa00ff68b1502665f.png

    三,PCA算法的调包范例

    下面的范例我们调用sklearn中的PCA降维算法接口,对波士顿房价数据集进行降维(13维降到7维)。

    import numpy as np
    import pandas as pd
    
    import matplotlib.pyplot as plt
    from sklearn import datasets
    
    boston = datasets.load_boston()
    dfdata = pd.DataFrame(boston.data,columns = boston.feature_names)
    dfdata.head()

    fc63c475d19f79173b0d943acae00126.png
    # 不同特征取值范围相差较大,我们首先进行标准正态归一化
    # 归一化的结果作为 PCA降维的输入
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    scaler.fit(dfdata.values)
    X_input = scaler.transform(dfdata.values)
    
    # 我们的输入有506个样本,13维特征
    print(X_input.shape)

    (506, 13)

    # 应用PCA进行降维
    
    from sklearn.decomposition import PCA
    pca = PCA(n_components=7)
    pca.fit(X_input)
    X_output = pca.transform(X_input)
    
    # 降维后,只有7维特征
    print(X_output.shape)

    (506, 7)

    # 查看各个主成分对应的方差大小和占全部方差的比例
    # 可以看到前7个主成分已经解释了样本分布的90%的差异了。
    
    print("explained_variance:")
    print(pca.explained_variance_)
    
    print("explained_variance_ratio:")
    print(pca.explained_variance_ratio_)
    
    print("total explained variance ratio of first 7 principal components:")
    print(sum(pca.explained_variance_ratio_))
    

    explained_variance:

    [6.1389812 1.43611329 1.2450773 0.85927328 0.83646904 0.65870897

    0.5364162 ]

    explained_variance_ratio:

    [0.47129606 0.11025193 0.0955859 0.06596732 0.06421661 0.05056978

    0.04118124]

    total explained variance ratio of first 7 principal components:

    0.8990688406240493

    #可视化各个主成分贡献的方差
    %matplotlib inline
    %config InlineBackend.figure_format = 'svg'
    
    import matplotlib.pyplot as plt
    plt.figure()
    plt.plot(np.arange(1,8),pca.explained_variance_,linewidth=2)
    plt.xlabel('components_n', fontsize=16)
    plt.ylabel('explained_variance_', fontsize=16)
    plt.show()

    101f806b113a4c765fd96401404278ed.png
    # 查看降维对应的正交变换矩阵,即各个投影向量
    W = pca.components_
    # 验证正交关系
    np.round(np.dot(W,np.transpose(W)),6)
    

    输出如下:

    array([[ 1.,  0., -0., -0., -0.,  0., -0.],
           [ 0.,  1., -0.,  0.,  0., -0., -0.],
           [-0., -0.,  1.,  0., -0.,  0., -0.],
           [-0.,  0.,  0.,  1., -0., -0.,  0.],
           [-0.,  0., -0., -0.,  1.,  0.,  0.],
           [ 0., -0.,  0., -0.,  0.,  1., -0.],
           [-0., -0., -0.,  0.,  0., -0.,  1.]])
    # 对降维后的数据的前两维进行散点图可视化
    
    %matplotlib inline
    %config InlineBackend.figure_format = 'svg'
    
    plt.scatter(X_output[:,0],X_output[:,1])
    plt.xlabel("components_1")
    plt.ylabel("components_2")
    plt.show()

    4c8c714095448d9179f4deeab88b0f2d.png

    四 ,PCA算法的数学原理

    前方高数提醒。

    下面进行PCA算法的数学原理推演,证明第k个主成分投影向量恰好是样本的协方差矩阵的第k大特征值对应的特征向量。

    下面的推演会会用到高等数学中的一些线性代数知识和微积分知识。

    没有相关数学基础的同学可以跳过,在实践中只要掌握PCA算法的直觉概念和调包使用方法,基本就够用了。

    假定样本特征用矩阵

    表示, 其每一行表示一个样本,每一列表示一个特征。

    假定

    维的,即
    个样本,
    维特征。

    现在寻找

    的第一个主成分。

    假定第一个主成分投影向量是

    ,它是一个单位列向量,维数为

    投影后的坐标是

    投影后的样本间的坐标方差可以表示为

    杠杠表示对样本求平均,由于

    与样本无关,可以化简为:

    注意到

    恰好为
    的协方差矩阵。

    下面我们要让这个坐标方差最大化,同时

    要满足单位长度约束:

    对于含有约束条件的极值条件求解,我们可以应用微积分中的拉格朗日乘子法。构造如下拉格朗日函数。

    可以利用下标表示方法证明,对于二次型,存在如下向量求导公式:

    可以推导得到:

    可以看出,

    协方差矩阵的特征值,
    为对应的特征向量。由于协方差矩阵为实对称矩阵,其特征值必定大于等于0。

    同时,投影后的样本间的坐标方差可以表示为:

    为了最大化样本间的坐标方差,

    应当取
    协方差矩阵的最大的特征值,则
    应为
    协方差矩阵最大特征值对应的特征向量。

    类似地,可以证明第k个主成分投影向量为

    协方差矩阵的第k大特征值对应的特征向量。

    由于矩阵不同特征值的特征向量相互正交,因此这些投影向量满足正交条件。

    dc528b094e1999c3aba76d16768a5cf9.png
    展开全文
  • pca主成分分析

    2015-08-07 17:03:44
    pca主成分分析,用于人脸识别中,提取特征点后,进行降维。
  • PCA主成分分析算法(Principal Components Analysis)是一种最常用的降维算法。能够以较低的信息损失(以样本间分布方差衡量)减少特征数量。PCA算法可以帮助分析样本中分布差异最大的成分(主成分),有助于数据可视化...

    cf90e9f3-7b13-eb11-8da9-e4434bdf6706.png

    PCA主成分分析算法(Principal Components Analysis)是一种最常用的降维算法。能够以较低的信息损失(以样本间分布方差衡量)减少特征数量。

    PCA算法可以帮助分析样本中分布差异最大的成分(主成分),有助于数据可视化(降低到2维或3维后可以用散点图可视化),有时候还可以起到降低样本中的噪声的作用(丢失的信息有部分是噪声)。

    一,PCA算法的直觉理解

    从直觉上看,PCA主成分分析类似于依次寻找一群样本点的各个位置差异最大的方向长轴。

    d090e9f3-7b13-eb11-8da9-e4434bdf6706.png

    假定把一个人身上的所有细胞看成一个一个的样本点。这些样本点可以用3个坐标来表示,从左到右为x方向,从前到后为y方向,从下到上为z方向。

    那么它们的第一个主成分是什么呢?第一个主成分对应的长轴是沿着人的脚到头的方向,也就是通常的上下方向,即z方向。这个方向是最主要的长轴。这些样本点的位置差异基本上70%以上来自于这个方向上的差异。

    它们的第二个主成分是什么呢?第二个主成分对应的方向是沿着人的左臂到右臂的方向,也就通常的左右方向,即y方向。这个方向和第一个主成分长轴垂直,这些样本点的位置差异大概有20%左右来自这个方向上的差异。

    它们的第三个主成分是什么呢?第三个主成分方向是沿着人的前胸到后背的方向,也就是通常的前后方向,即x方向。这个方向和前两个主成分长轴垂直,样本点的位置差异有一般只有不到10%来自这个方向的差异,当然,有些身材比较圆润的同学除外。

    现在,如果要将这些样本点的坐标减少到用2个来表示,并尽可能多的保留样本点之间位置差异的信息,那么,显然,应该保留第一个主成分坐标和第二个主成分坐标。

    现在,假定这个人躺在一个斜的躺椅上,那么现在这些样本点的第一主成分显然不再是从下到上的z方向。我们应该将我们的坐标系作一个旋转,让z轴和斜着的躺椅方向一致,这个新的z方向是这些样本点的第一主成分方向。类似地,也需要旋转x轴和y轴得到新的第二主成分方向和第三主成分方向。

    这个旋转旧坐标系以找到主成分方向的过程就是PCA主成分分析。

    二,PCA算法的数学说明

    PCA主成分分析(Principal Components Analysis)是一种通过正交线性组合方式,最大化保留样本间方差降维方法。

    用几何观点来看,PCA主成分分析方法可以看成通过正交变换,对坐标系进行旋转和平移,并保留样本点投影坐标方差最大的前几个新的坐标。

    这里有几个关键词需要说明:

    • 降维:将样本原来的m维特征用更少的k个特征取代。降维算法可以理解成一种数据压缩方法,它可能会丢失一些信息。
    • 正交线性组合:k个新特征是通过对m个旧特征进行线性组合产生的,并且k个线性组合的系数向量为单位向量,且彼此相互正交。
    • 最大化保留样本间方差:第1个主成分特征最大化样本间特征方差,第2个主成分特征在满足与第1个主成分正交约束条件下最大化样本间特征方差,……。

    d190e9f3-7b13-eb11-8da9-e4434bdf6706.png

    三,PCA算法的调包范例

    下面的范例我们调用sklearn中的PCA降维算法接口,对波士顿房价数据集进行降维(13维降到7维)。

    import 

    d290e9f3-7b13-eb11-8da9-e4434bdf6706.png
    # 不同特征取值范围相差较大,我们首先进行标准正态归一化
    

    (506, 13)

    # 应用PCA进行降维
    
    

    (506, 7)

    # 查看各个主成分对应的方差大小和占全部方差的比例
    

    explained_variance:

    [6.1389812 1.43611329 1.2450773 0.85927328 0.83646904 0.65870897

    0.5364162 ]

    explained_variance_ratio:

    [0.47129606 0.11025193 0.0955859 0.06596732 0.06421661 0.05056978

    0.04118124]

    total explained variance ratio of first 7 principal components:

    0.8990688406240493

    #可视化各个主成分贡献的方差
    

    d590e9f3-7b13-eb11-8da9-e4434bdf6706.png
    # 查看降维对应的正交变换矩阵,即各个投影向量
    

    输出如下:

    array([[ 1.,  0., -0., -0., -0.,  0., -0.],
           [ 0.,  1., -0.,  0.,  0., -0., -0.],
           [-0., -0.,  1.,  0., -0.,  0., -0.],
           [-0.,  0.,  0.,  1., -0., -0.,  0.],
           [-0.,  0., -0., -0.,  1.,  0.,  0.],
           [ 0., -0.,  0., -0.,  0.,  1., -0.],
           [-0., -0., -0.,  0.,  0., -0.,  1.]])
    # 对降维后的数据的前两维进行散点图可视化
    
    

    d690e9f3-7b13-eb11-8da9-e4434bdf6706.png

    四 ,PCA算法的数学原理

    前方高数提醒。

    下面进行PCA算法的数学原理推演,证明第k个主成分投影向量恰好是样本的协方差矩阵的第k大特征值对应的特征向量。

    下面的推演会会用到高等数学中的一些线性代数知识和微积分知识。

    没有相关数学基础的同学可以跳过,在实践中只要掌握PCA算法的直觉概念和调包使用方法,基本就够用了。

    假定样本特征用矩阵

    表示, 其每一行表示一个样本,每一列表示一个特征。

    假定

    维的,即
    个样本,
    维特征。

    现在寻找

    的第一个主成分。

    假定第一个主成分投影向量是

    ,它是一个单位列向量,维数为

    投影后的坐标是

    投影后的样本间的坐标方差可以表示为

    杠杠表示对样本求平均,由于

    与样本无关,可以化简为:

    注意到

    恰好为
    的协方差矩阵。

    下面我们要让这个坐标方差最大化,同时

    要满足单位长度约束:

    对于含有约束条件的极值条件求解,我们可以应用微积分中的拉格朗日乘子法。构造如下拉格朗日函数。

    可以利用下标表示方法证明,对于二次型,存在如下向量求导公式:

    可以推导得到:

    可以看出,

    协方差矩阵的特征值,
    为对应的特征向量。由于协方差矩阵为实对称矩阵,其特征值必定大于等于0。

    同时,投影后的样本间的坐标方差可以表示为:

    为了最大化样本间的坐标方差,

    应当取
    协方差矩阵的最大的特征值,则
    应为
    协方差矩阵最大特征值对应的特征向量。

    类似地,可以证明第k个主成分投影向量为

    协方差矩阵的第k大特征值对应的特征向量。

    由于矩阵不同特征值的特征向量相互正交,因此这些投影向量满足正交条件。

    d790e9f3-7b13-eb11-8da9-e4434bdf6706.png
    展开全文
  • 点击上方“计算机视觉cv”即可“进入公众号”重磅干货第一时间送达PCA主成分分析法简介主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的...

    点击上方“计算机视觉cv”即可“进入公众号”

    重磅干货第一时间送达f29c6e2805695350f5e520e06ae2813c.png

    PCA主成分分析法简介

    主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。

    PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到这些维度上,使降维后信息量损失最小。

    总而言之,PCA的概念很简单:减少数据集的维数,同时保留尽可能多的主要信息。

    PCA主要步骤

    • 去除平均值
    • 计算协方差矩阵
    • 计算协方差矩阵的特征值和特征向量
    • 将特征值排序
    • 保留前N个最大的特征值对应的特征向量
    • 将原始特征转换到上面得到的N个特征向量构建的新空间中(最后两步,实现了特征压缩)

    标准化

    此步骤的目的是标准化输入数据集,使数据成比例缩小。

    更确切地说,在使用PCA之前必须标准化数据的原因是PCA方法对初始变量的方差非常敏感。也就是说,如果初始变量的范围之间存在较大差异,那么范围较大的变量占的比重较大,和较小的变量相比(例如,范围介于0和100之间的变量较0到1之间的变量会占较大比重),这将导致主成分的偏差。通过将数据转换为同样的比例可以防止这个问题。

    求每一个特征的平均值,然后对于所有的样本,每一个特征都减去自身的均值。

    经过去均值处理之后,原始特征的值就变成了新的值,在这个新的norm_data的基础上,进行下面的操作。

    计算协方差矩阵

    此步骤的目的是了解输入数据集的变量相对于彼此平均值变化,换句话说,查看它们是否存在关系。因为有时候,变量由于高度相关,这样就会包含冗余信息。因此,为了识别变量的相关性,我们计算协方差矩阵。

    下面以二维矩阵为例:

    上述矩阵中,对角线上分别是特征x1和x2的方差,非对角线上是协方差。协方差大于0表示x1和x2。若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。

    计算协方差矩阵的特征值和特征向量

    求协方差矩阵的特征值λ和相对应的特征向量(每一个特征值对应一个特征向量):

    特征值λ会有个,每一个λ对应一个特征向量,将特征值λ按照从大到小的顺序排序,选择最大的前k个,并将其相对应的k个特征向量拿出来,我们会得到一组{(λ1,u1),(λ2,u2),...,(λk,uk)}。

    将原始特征投影到选取的特征向量上,得到降维后的新K维特征

    这个选取最大的前k个特征值和相对应的特征向量,并进行投影的过程,就是降维的过程。对于每一个样本,原来的特征是,投影之后的新特征是 ,新特征的计算公式如下:

    118df95c82300515ffce2d9d8f983386.png

    PCA算法的主要优点

    • 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
    • 各主成分之间正交,可消除原始数据成分间的相互影响的因素。
    • 计算方法简单,主要运算是特征值分解,易于实现。

    PCA算法的主要缺点

    • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。

    • 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

    参考

    • https://zhuanlan.zhihu.com/p/58663947
    • https://blog.csdn.net/lanyuelvyun/article/details/82384179

    0154303c6e1266db07458194368ba717.png

    f3a3576d375b3df96fe23775f841690c.png

    展开全文
  • 主成分分析( Principal Component Analysis, PCA) 是将原本鉴定到的所有代谢物重新线性组合,形成一组新的综合变量,同时根据所分析的问题从中选取2-3个综合变量,使它们尽可能多地反映原有变量的信息,从而达到...

    ab1029b4060f801c0e8fe072856a0878.png

    主成分分析( Principal Component Analysis, PCA) 是将原本鉴定到的所有代谢物重新线性组合,形成一组新的综合变量,同时根据所分析的问题从中选取2-3个综合变量,使它们尽可能多地反映原有变量的信息,从而达到降维的目的。同时,对代谢物进行主成分分析还能从总体上反应组间和组内的变异度。总体样本 PCA 分析采用 PCA 的方法观察所有各组样本之间的总体分布趋势,找出可能存在的离散样本,综合考虑各种因素(样品数,样品珍贵程度,离散程度)决定离散点的除去与否。

    提到PCA,一般情况我们都会说这是降维分析。大家多多少少都看过前几年大热的三体,里面的降维攻击大家基本都是有所了解,这里就不多做降维这个词的解释了。虽然PCA图看起来容易简单,但是其后面的机制却不简单。在实际问题中,我们会发现测序数据有很多指标,比如说基因的表达量,SNP数据,SSR数据等等。

    如:百泰派克生物平台采用 XCMS 软件对代谢物离子峰进行提取。将 25 个实验样本和 QC 样本提取得到的峰,归一化后进行 PCA 分析, 样本紧密聚集在一起,表明本次试验的仪器分析系统稳定性较好,试验数据稳定可靠,在试验中获得的代谢谱差异能反映样本间自身的生物学差异。

    PCA(principal component analysis)主成分分析是生物信息分析的常规分析内容,一般说来,PCA图可以反映表示以下几个问题:

    1)检测样本的重复性和离群样本。很显然,正常情况下,生物学重复样本或者同一分组的样本应该是聚在一起的。出现离群样本时要对此进行评估。

    2)生物学意义。在重测序中,能表示各亚群间的进化关系。可以观察到三个不同颜色的+表示的样本区域是重叠的,这意味着它们之间具有较多的基因交流或者是同一起源。在转录组测序中,我们可以判断不同的实验处理的效应大小,以及相应的样本面对处理的应对情况等等。PCA图的生物学意义要根据你的研究内容而定。

    PCA主成分分析可以应用在任何多样本多变量的数据分析中,在生物信息分析中,基因表达量,SNP,16s多样性等等都可以用PCA进行分析。生态学中的地理调查,多环境指标也常用PCA进行分析。

    参考资料来源:

    图片资料来源--百泰派克生物平台

    内容资料来源--百泰派克生物平台、各处网络资料

    展开全文
  • 看点01主成分分析(PCA)主成分分析(Principal Component Analysis,PCA)是一种无监督学习的多元统计分析方法。PCA分析的主要原理是将高维数据投影到较低维空间,提取多元事物的主要因素,揭示其本质特征。它可以高效...
  • PCA 主成分分析

    千次阅读 2018-11-01 22:27:28
    主成分分析
  • 对于PCA:Principal Components Analysis 主成分分析维基百科是这样定义的:在多元统计分析中,主成分分析(英语:Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集...
  • PCA主成分分析MATLAB实现代码
  • 矩阵——MATRIX,很容易让人们想到那部著名的科幻电影——《骇客帝国》。事实上,我们又何尝不是真的生活在MATRIX中。机器学习处理的大多数数据,都是以“矩阵”形式存储的。...下一篇我们将阐述PCA降维的原理和依据。
  • PCACreated: Apr 26, 2020 4:40 PMPCA 简介PCA是一种降维算法属性:- 在数据集中保留了最多的信息,同时将数据转换到较低维的子空间- 主要的成分彼此正交(方差最大)- 有损数据压缩,特征提取和数据可视化等应用程序...
  • 原理简单介绍PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。更多详细的理解,可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,855
精华内容 2,742
关键字:

pca主成分分析