浅谈线性变换、PCA和SVD

矩阵变换:

先来看下几何意义,这些图来源于知乎上的高赞回复
方阵和向量相乘,从几何意义上来讲,就是对向量作 旋转、伸缩 变换。
比如对角矩阵M作用在任何一个向量上
这里写图片描述
其几何意义为在水平x方向上方向上拉伸3倍,y方向保持不变的线性变换。换言之对角矩阵起到作用是将水平垂直网格作水平拉伸(或者反射后水平拉伸)的线性变换。
这里写图片描述
这里写图片描述
如果M不是对角矩阵,而是一个对称矩阵
这里写图片描述
那么,我们也总可以找到一组网格线,使得矩阵作用在该网格上仅仅表现为(反射)拉伸变换,而没有旋转变换
这里写图片描述
这里写图片描述
下面这个图更直观的,下图中单位圆上不同颜色的点,在与一般的非对称矩阵 [ 1 3 − 3 2 ] \left[ \begin{matrix} 1&3 \\ -3 &2 \end{matrix} \right ] [1332]相乘后,进行了相应***旋转(rotating)和拉伸(stretching)***变换。
这里写图片描述

0.特征值分解

向量v是是方阵A的特征向量,则 A v = λ v Av=\lambda v Av=λv,其中 λ λ λ是特征值, v v v就是对应的特征向量。
特征值分解是将一个矩阵分解成下面的形式:
这里写图片描述
其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。
不同特征值对应的特征向量是线性无关的,特别的,实对称矩阵的特征向量相互正交 Q T Q = D Q^TQ=D QTQ=D
其中D为对角矩阵。因此实对称矩阵的特征分解为 A = Q ∑ Q T A=Q\sum Q^T A=QQT

1.PCA

PCA的目的就是通过线性变换将原始数据变换为一组各维度线性无关的表示,以此来提取数据的主要线性分量,各维度线性无关可以理解为协方差矩阵为对角矩阵
Y = X W Y =X W Y=XW
假设X每一列的均值都为0, 转换后 Y Y Y的协方差矩阵为 D = 1 m − 1 Y T Y = 1 m − 1 ( X W ) T X W = 1 m − 1 W T X T X W = W T ( 1 m − 1 X T X ) W D =\frac 1{m-1}Y^TY =\frac1{m-1}(XW)^TXW=\frac1{m-1}W^TX^TXW=W^T(\frac1{m-1}X^TX)W D=m11YTY=m11(XW)TXW=m11WTXTXW=WT(m11XTX)W,而 1 m − 1 X T X \frac1{m-1}X^TX m11XTX是原始数据的协方差矩阵,原始矩阵的协方差矩阵为实对称矩阵,而实对称矩阵归属不同特征值对应的特征向量必然正交, 实对称矩阵可以分解成 A = Q Λ Q T , Q T = Q − 1 A=Q \Lambda Q^T,Q^T=Q^{-1} A=QΛQT,QT=Q1,此时的W就是满足条件的线性转换,为原始数据的协方差矩阵特征值按照从大到小排列后对应的特征向量。

总结一下PCA的算法步骤:

  1. X X X的每一列按均值做归一化,使归一化后的 X X X的每一列均值为0
  2. 求出协方差矩阵 1 m − 1 X T X \frac1{m-1}X^TX m11XTX
  3. 求出协方差矩阵的特征值 d i a g = { λ 1 , λ 2 , . . . λ n } diag=\{ \lambda_1,\lambda_2,...\lambda_n\} diag={λ1,λ2,...λn}以及特征矩阵 W W W
  4. Y = X W Y =X W Y=XW
2.奇异值分解

在上面矩阵变换的几何意义几个图,当为对称矩阵时,总可以找到一组网格线(正交基)使得变换之后的网格线仍然是正交的。那么当矩阵为非对称矩阵时呢,此时就找不到一组网格线,使得矩阵作用在上面只进行伸缩变换。我们退而求其次,找一组网格,使得矩阵作用在该网格上之后允许有拉伸变换和旋转变换,但要保证变换后的网格依旧互相垂直。即对任意m×n的矩阵,能否找到一组正交基使得经过它变换后还是正交基,这就是SVD奇异值的精髓所在。
这里写图片描述
这里写图片描述
下面这个公式推论来自这篇博文
这里写图片描述

深入探索svd

这里写图片描述
一个例子:

A = np.array([[4,4,5],[4,5,5],[3,3,2],[4,5,4],[4,4,4],[3,5,4],[4,4,3],[2,4,4],[5,5,5]])
U,S,V = np.linalg.svd(A)

A是93的矩阵,最后生成的U是一个99的矩阵
这里写图片描述
实际上,U的后4到9列(m-n)只是随便找的一个正交基补全的
这里写图片描述
值得注意的是:
这里写图片描述
这里写图片描述
这个求A^TA的特征值和特征向量可以看出,特征值是奇异值的平方,这个地方求得特征向量实际上是numpy中svd求得V的转置

参考sklearn中的svd
这里写图片描述
这里写图片描述
这里truncatedSVD保留的特征必须小于min(m,n)。

参考博文:
1、理解PCA和SVD
2、https://www.zhihu.com/question/22237507
3、漫谈奇异值分解
4、矩阵奇异值分解(SVD)及其应用
5、图文并茂的PCA教程

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值