主成分分析推导
主成分分析推导
前言
在数据分析中,有些特征可能是冗余的,即使不是冗余的也可以通过特征的变换,构造更好且更少的一组特征来描述数据的性质。
主成分分析原理
可以把一个具有n个特征的记录视为一个高维空间上的向量,它每个特征上的取值视为在该维度下的坐标。众多的点形成点集。同样可以找到另外一个基(n个单位基向量),由它们来表示数据。这样数据在新的基下某些维度值为固定值,或者变化很小。我们就可以把这些维度舍去,把记录在新的基里其他维度的取值,作为他们新的特征。
推导
书上有详细的推导,但有些地方过于简略,稍作补充便于理解
定义和假设
- 所有的向量默认均为列向量
- 原始数据有N个特征,每个纪录表示为一个向量\(x = (x_1,x_2,..,x_N)^T\)
- 一组基向量为\(T_1, T_2, ...,T_N\),它们大小为1,互相正交.设\(T=(T_1,T_2,...,T_N)\)
- 每个纪录在新的基下表示为 $y = (y_1,y_2,...,y_N) $
- 相关矩阵为\(R_x=E[x*x^T]\)
推导过程
-
\(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} \] -
只取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} \] -
使得误差最小
设\(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 \] -
特征提取方法
- 计算出\(R_x\)
- 找到\(R_x\)的特征向量和对应的特征值,并按特征值从大到小排序\(\{(T_1,\lambda_1),...(T_n,\lambda_n)\}\)
- 利用前M个向量构造变换矩阵\(T=(T_1,T_2,..T_m)\)
- 求得\(y=T^Tx\)