Eigendecomposition, SVD and PCA

特征值分解, 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.

你可能感兴趣的:(math)