主成分分析推导

主成分分析推导

前言

在数据分析中,有些特征可能是冗余的,即使不是冗余的也可以通过特征的变换,构造更好且更少的一组特征来描述数据的性质。

主成分分析原理

可以把一个具有n个特征的记录视为一个高维空间上的向量,它每个特征上的取值视为在该维度下的坐标。众多的点形成点集。同样可以找到另外一个基(n个单位基向量),由它们来表示数据。这样数据在新的基下某些维度值为固定值,或者变化很小。我们就可以把这些维度舍去,把记录在新的基里其他维度的取值,作为他们新的特征。

推导

书上有详细的推导,但有些地方过于简略,稍作补充便于理解

定义和假设

  1. 所有的向量默认均为列向量
  2. 原始数据有N个特征,每个纪录表示为一个向量\(x = (x_1,x_2,..,x_N)^T\)
  3. 一组基向量为\(T_1, T_2, ...,T_N\),它们大小为1,互相正交.设\(T=(T_1,T_2,...,T_N)\)
  4. 每个纪录在新的基下表示为 $y = (y_1,y_2,...,y_N) $
  5. 相关矩阵为\(R_x=E[x*x^T]\)

推导过程

  1. \(y和x的关系\)

    \[ \because由基向量定义得T_i*T_j = \begin{cases}1,i=j\\0,i\neq j\end{cases} \]

    \[ \therefore T*T^T = I,T^{-1}=T^T \]

    \[ \because y=T^Tx \therefore y_i = T_i^Tx = x^TT_i \]

    \[ \therefore x = Ty = \Sigma_{i=1}^N{y_iT_i} \]

  2. 只取y的前M项特征,计算误差

    \[ \begin{aligned} 令\hat{x} &= \Sigma_{i=1}^my_iT_i\\ 均方误差为e &= E[(x- \hat{x})^T(x-\hat{x})]\\ &=E[(\Sigma_{i=M+1}^Ny_iT_i)^T*\Sigma_{i=M+1}^Ny_iT_i]\\ &=E[\Sigma_{i=M+1}^Ny_i^2] = \Sigma_{i=M+1}^NE[y_i^2] ,&\text{由1式得}\\ &=\Sigma_{i=M+1}^NE[T_i^Tx*x^TT_i], &\text{由3式得}\\ &=\Sigma_{i=M+1}^NT_i^TR_xT_i \end{aligned} \]

  3. 使得误差最小

    \(T_i\)为变元,因为他们受1式条件限制是个条件极值。所以不能直接求偏导,而是要用拉格朗日乘数法,(具体请看高数)
    \[ 设L(x)=\Sigma_{i=M+1}^NT_i^TR_xT_i+\Sigma_{i=M+1}^N\lambda_i(T_i^TT_i-1), (不应该还有N*(N-1)/2个有正交条件吗?)\\ \therefore 当\partial L/\partial T_i = 0,且T_I满足1式条件时取极值\\ \because \partial L/\partial T_i = 2(R_x-\lambda_i)T_i = 0,时有极值\\ \therefore T_i 为R_x特征矢量,\lambda_i为特征值\\ \therefore e = \Sigma_{i=M+1}^NT_i^T\lambda_iT_i = \Sigma_{i=M+1}^N\lambda_i \]

  4. 特征提取方法

    1. 计算出\(R_x\)
    2. 找到\(R_x\)的特征向量和对应的特征值,并按特征值从大到小排序\(\{(T_1,\lambda_1),...(T_n,\lambda_n)\}\)
    3. 利用前M个向量构造变换矩阵\(T=(T_1,T_2,..T_m)\)
    4. 求得\(y=T^Tx\)

猜你喜欢

转载自www.cnblogs.com/Merodach/p/9033734.html