zoukankan      html  css  js  c++  java
  • 机器学习--PCA与SVD

    一、主成分分析(PCA)

      主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1。之后对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成由若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差的和(所需要保存的信息量)最大的,方差表示在新变量上信息的大小。将新变量依次称为第一主成分、第二主成分等。

    1.1 基本定义

      假设$x = (x_{1},x_{2},...,x_{m})^T$是$m$维随机变量,其均值为$mu$

      协方差矩阵为$sum$

      考虑由$m$维随机变量$x$到m维随机变量$y = (y_{1},y_{2},...y_{m})^T$的线性变换:

      其中$a_{i}^T = (a_{1i},a_{2i},...,a_{mi}), i = 1,2,...,m$。由随机变量的性质可知:

      给定一组随机变量$y = (y_{1},y_{2},...y_{m})^T$,如果它们满足以下三个条件:

    1. 系数向量$a_{i}^T$是单位向量,即$a_{i}^{T}a_{i} = 1, i = 1,2,...,m$;
    2. 变量$y_{i}$与变量$y_{j}$互不相关,既$cov(y_{i},y_{j}) = 0 (i eq j)$;
    3. 变量$y_{1}$是$x$的所有线性变换中方差最大的;$y_{2}$是与$y_{1}$不相关的$x$的所有线性变换中方差最大的;一般地,$y_{i}$是与$y_{1},y_{2},...,y_{i-1}$都不相关的$x$的所有线性变换中方差最大的;

      这时分别称$y_{1},y_{2},...,y_{m}$为$x$的第一主成分、第二主成分、...第$m$主成分。

    1.2 主要性质以及证明

      假设$x$是$m$维随机变量,$sum$是$x$的协方差矩阵,$sum$的特征值分别是$lambda_{1} geq lambda_{2} geq ... geq lambda_{m} geq 0$,特征值对应的单位特征向量分别是$a_{1},a_{2},...a_{m}$,则$x$的第$k$个主成分为:  

      $x$的第$k$个主成分的方差为:

      即协方差矩阵$sum$的第$k$个特征值。下面用拉格朗日乘子法给出证明:

      首先求$x$的第一主成分$y_{1} = a_{1}^{T}x$,既求系数向量$a_{1}$。由于系数向量是单位特征向量,则第一主成分的$a_{1}$是在$a_{1}^{T}a_{1}$条件下,$x$的所有线性变换方差$var(a_{1}^{T}x) = a_{1}^{T} sum a_{1} $达到最大。那么求解第一主成分就是求解约束最优化问题:  

      定义拉格朗日函数:

      其中$lambda$是拉格朗日乘子。将拉格朗日函数对$a_{1}$求导,并令其为0,得:

       因此,$lambda$是$sum$的特征值,$a_{1}$是对应的单位特征向量。于是,目标函数:

      假设$a_{1}$是$sum$的最大特征值$lambda_{1}$对应的特征向量,显然$a_{1}$与$lambda_{1}$是最优化问题的解。接下来求解$x$的第二主成分,第二主成分除了要保证自己是单位特征向量之外,还需要与$y_{1}$线性无关,求解$x$的第二主成分等价于如下约束最优化问题:

      注意到:

      以及:

      定义拉格朗日函数:

      其中$lambda,phi$是拉格朗日乘子。对$a_{2}$求导,并令其为0,得:

      将方差左乘$a_{1}^{T}$有:

      此式前两项为0,且$a_{1}^{T}a_{1} = 1$,导出$phi = 0$,因此有:

      由此可知$a_{2},lambda_{2}$是以上问题的最优解。按照上述方法可依次证明第$k$个主成分由协方差矩阵$sum$的特征向量构成,证毕。

    1.3 主成分分析求解过程

      假设对$m$维随机变量$x = (x_{1},x_{2},...,x_{m})^T$进行$n$次独立观测,$x_{1},x_{2},...,x_{n}$表示观测样本,其中$x_{j} = (x_{1j},x_{2j},...,x_{jm})^T$表示第$j$个样本,$x_{ij}$表示第$j$个观测样本的第$i$个变量,$j = 1,2,..,n$。观测数据样本用样本矩阵$X$表示,极作:

     

       给定样本矩阵$X$,可以估计出均值以及样本方差。样本均值向量$ar{x}$为:

      样本协方差矩阵为:

      其中$ar{x}_{i}$表示第$i$个变量的均值。样本的相关矩阵$R$为:

      在实际使用$PCA$的时候,一般假设样本是规范化的,即对样本矩阵作如下变换:

      其中:

      为了方便描述,把规范化之后的样本矩阵记作$X$。这时样本方差矩阵$S$就是样本相关矩阵$R$:

      样本协方差矩阵$S$是总体协方差矩阵$sum$的无偏估计,样本相关矩阵R是总体相关矩阵的无偏估计。$S$的特征值和特征向量是$sum$的特征值和特征向量的极大似然估计。接下来介绍求解$R$的$k$个特征值和对应的$k$个单位特征向量的方法(即使用奇异值分解的方式求解PCA)。

      对于$m x n$实矩阵,假设其秩为$r$,$0 < k < r$,则可以将矩阵$A$进行阶段奇异值分解:

      上式中$U_{k}$为$m x k$矩阵,$V_{k}$是$n x k$矩阵,$sum_{k}$是$k$阶对角矩阵;$U_{k}$,$V_{k}$分别取自$A$的完全奇异值分解的矩阵$U$,$V$的前$k$列,$sum_{k}$为$A$的完全奇异值分解的矩阵$sum$的前$k$个对角线元素得到。定义一个新的$n x m$矩阵$X^{’}$:

      $X^{’}$的每一列均值为零。不难得知:

      即$X^{'T}X^{'}$等于$X$的协方差矩阵$S_{X}$。

      所以问题转化为求矩阵$X^{'T}X^{'}$的特征值以及对应的单位特征向量。假设$X^{'}$的截断奇异值分解为$X^{'} = U{sum}V^{T}$,那么$V$的列向量就是$S_{X} = X^{'T}X^{'}$的单位特征向量。因此,$V$的列向量就是$X$的主成分。于是,求$X$主成分可以通过求$X^{'}$的奇异值分解来实现。算法流程如下:

     

     

    二、SVD(待整理)

     

  • 相关阅读:
    python-发送邮件
    python-操作Excel表格
    PLSQL 删表 恢复
    ajax
    List<Object>
    Java String 转成 二位数组
    js-sequence-diagrams > 时序图
    Highcharts › 自由绘图
    高德地图 JS API (jsp + miniui(子页面数据返回父页面并设值) + 单个点标记 + 点标记经纬度 + 回显 + 限制地图显示范围+搜索)
    突然奋斗的开发
  • 原文地址:https://www.cnblogs.com/z1141000271/p/12776828.html
Copyright © 2011-2022 走看看