zoukankan      html  css  js  c++  java
  • 主成分分析

    主成分分析是一种降维方法,主要用于数据压缩,数据可视化以及特征提取等方面。 现实中我们经常可以遇到维数很高的数据,如一张28*28的图片,可以看作维度为784。类似图片这样的高维数据,实际上各个维度之间具有高度的关联性,即维度之间并非完全独立的。通过进行主成分分析,可以将数据的主要特征提取出来,忽略非 重要特征,从而对数据进行压缩。这里的主成分代表一组规范正交基,每个基用表示,并且满足。假设X表示我们的观测数据矩阵,大小为N*D, 我们希望将其压缩到 N*M的矩阵Z。主成分分析有两种直观上的理解,并且可以 证明这两种直观理解是等价的。

    第一种方式,我们希望找到这样一组正交基,使得映射后的数据方差最大。这样的目标函数符合我们的直观认识,因为方差表示了数据的差异性,方差大表示数据的差异性大, 即信息量大。如果在某个方向上的方差太小,或者等于 0,那么该方向的信息量小,因此在要求不高的情况下,可以忽略这样的方向。主成分分析正是基于这样的直观认识进行处理的。为了书写简单,我们假设预测数据的均值是0,如果不是0,让每个数据减去均值。一个数据 映射到方向u后的坐标可以记为。 因此映射后在该方向上的方差为

        (1)

    其中

                  (2)

    为了使映射方差最大,使用拉格朗日乘子法最大化以下目标函数

                (3)

    对u进行求导,然后令其等于零,可以得到如下解,

                       (4)

    因此,u是数据协方差矩阵S的特征向量,进一步得到

                     (5)

    即λ是一个极值点。因此u对应的是最大特征值的 特征向量,并且方差的最大值是S的最大特征值。换句话

    说, S的各个特征值是数据在各个方向上映射方差的极值点。 另外计算一个矩阵A在某个方向u上的方差可

    以如下计算

         (6)

    即它表示u在各个正交基上的方差的加权和,权重就是相应方向的 特征值,如果u恰好是一个特征向量,那

    么该结果就变成了。 这说明了特征值和方差之间的内在关系。

    主成分分析的另一种解释是找到一组正交基使得映射后的误差 最小。同样我们用表示我们的正次基,并且假设我们的主成分空间大小为M,数据空间大小为D,那么对于每个点我们可以有如下近似,

                    (7)

    上面的近似理解为,对 于前M个向量,我们为每个数据每给出精确的映射坐标,而对于非主成分,所有数据的值都用一个常数表示。于是我们得到如下的损失函数,

                 (8)

    对损失函数求导后,得到以下解,

                       (9)

             (10)

             (11)

    然后将式(11)代入式(8)得到如下

         (12)

    从上面的形式可以看出,它与最大化方差的形式相同,即的形式, 只不过现在是最小化。通过简单求导即可导出,当u是特征向量,可以取得 极值λ, 因此为了使得上式最小可以选择特征值最小的特征向量作为非主成分,相应的特征值最大的特征向量作为主成分。

    上面给出了主成分分析的两种直观上的理解,一种是最大化方差,一种是最小化损失函数,无论用哪种方法,得到的结果是相同的。通过主成分分析我们发现,一个矩阵的特征值实际上是该矩阵在各个方向上方差的极值,并且在特征向量处取得。

    1. pattern recognition and machine learning              Christopher M.Bishop   p559-565

  • 相关阅读:
    近期C#小问题总结
    Arcgis由栅格数据提取等值线
    Arcgis由离散点制作核密度图
    用Arcgis为离散点区域生成格网(渔网)
    Arcengine合并面要素
    对离散点进行抽稀
    对离散点进行区域分割
    关于异常来自 HRESULT:0x80040351
    分布式缓存---Memcached 入门
    Mongodb安装 for windows7 64位
  • 原文地址:https://www.cnblogs.com/lijiankou/p/3400937.html
Copyright © 2011-2022 走看看