Eigendecomposition, SVD and PCA

来源:互联网 发布:3ds max模型导出优化 编辑:程序博客网 时间:2024/05/09 07:16

特征值分解, SVD 和 PCA

特征值分解

特征值与特征向量

Av=λv

注意矩阵A是一个线性变换。那么这个公式是说,该线性变换作用在向量v上,相当于仅仅对向量v进行拉伸,拉伸的幅度为λ. 求解一个矩阵的特征值和特征向量,就是找到所有的这些向量和常数,使得A对他们来说只是一个拉伸操作。

特征值分解

A=QΛQ1

既然A这个线性变换在某些向量上的作用仅仅是拉伸,那么我们可以把这个线性变换分成三步:
1. 基变换,把原来的向量用所有的单位特征向量作为基来表示(左乘Q1
2. 拉伸,在新的坐标系下,线性变化A只是对坐标轴进行不同程度的拉伸(左乘对角矩阵Λ)
3. 再转回原来的坐标系(左乘Q)。

SVD

当矩阵A不是方阵或者不满秩,那么我们就没办法找到那么多个基,来进行这样的变换分解。而SVD可以用于任意的矩阵。

A=UΣVT

SVD也是将一个线性变换拆成三步:
1. 由于VT是标准正交矩阵(orthonormal), 左乘VT相当于一次坐标旋转。
2. 左乘Σ还是拉伸
3. 左乘U再次旋转

PCA

如果A的每一列表示一条数据,每一行代表每一个feature。但是通常情况下,各个feature之间是相关的。如果我们可以把feature做一次转换,使每个feature互相正交,那么我就可以舍弃一些方差小的feature(极端情况就是方差为0,那么这个feature就什么信息也没有提供给我们)达到降维的目的。

所以我们的目标是找到一个矩阵W, 使得:

WX(WX)T=Λ 

Λ是一个对角矩阵(假设每个feature都是zero-mean的,那么方差协方差矩阵可以写成XXT)。
变换一下可得:
XXT=W1Λ(W1)T

于是对方差协方差矩阵进行了特征分解,可以解出W。
X应用一下SVD:
XXT=UΣVT(UΣVT)T=UΣ2UT

因此也可以用SVD来计算PCA.