文章目录

  • 1. 奇异值分解
    • 1.1 SVD求解
    • 1.2 行基和列基转换
  • 2. Ax图像表示
  • 3. 极坐标表示
  • 4. 小结

1. 奇异值分解

现在我们用的是一个m行n列的矩阵A,那么我们计算下特征值方程:

A

m

×

n

x

n

×

1

=

λ

x

n

×

1

;

b

m

×

1

=

A

m

×

n

x

n

×

1

\begin{equation} A_{m imes n}x_{n imes 1}=\lambda x_{n imes 1};b_{m imes 1}=A_{m imes n}x_{n imes 1} \end{equation}

Am×nxn×1=λxn×1;bm×1=Am×nxn×1

  • m

    n

    m
    eq n

    m=n时,

    b

    m

    ×

    1

    λ

    x

    n

    ×

    1

    b_{m imes 1}
    eq \lambda x_{n imes 1}

    bm×1=λxn×1,所以当A为长方形矩阵的时候,由于向量大小的原因,我们无法使用

    A

    x

    =

    λ

    x

    Ax=\lambda x

    Ax=λx公式,为了解决如下问题,我们引入奇异值分解SVD。

    A

    m

    ×

    n

    =

    U

    m

    ×

    m

    Σ

    m

    ×

    n

    V

    n

    ×

    n

    T

    ,

    U

    U

    T

    =

    I

    m

    ×

    m

    ,

    V

    V

    T

    =

    I

    n

    ×

    n

    \begin{equation} A_{m imes n}=U_{m imes m}\Sigma_{m imes n}V^T_{n imes n},UU^T=I_{m imes m},VV^T=I_{n imes n} \end{equation}

    Am×n=Um×mΣm×nVn×nT,UUT=Im×m,VVT=In×n

1.1 SVD求解

假设我们有任意矩阵A,可以得到SVD分解,

A

=

U

Σ

V

T

A=U\Sigma V^T

A=UΣVT,那么我们可以构造对称矩阵进行求解;

U

U

T

=

I

,

V

V

T

=

I

UU^T=I,VV^T=I

UUT=I,VVT=I

A

A

T

=

U

Σ

V

T

V

Σ

T

U

T

=

U

(

Σ

Σ

T

)

U

T

\begin{equation} AA^T=U\Sigma V^TV\Sigma^TU^T=U(\Sigma\Sigma^T)U^T \end{equation}

AAT=UΣVTVΣTUT=U(ΣΣT)UT

  • 我们可以把

    A

    A

    T

    AA^T

    AAT看作是矩阵A右乘一个矩阵

    A

    T

    A^T

    AT,所以可以得到

    A

    A

    T

    AA^T

    AAT为矩阵A的列向量的线性组合,所以得到的U肯定在A的列向量空间中。这样可以得到

    U

    ,

    Σ

    U,\Sigma

    U,Σ

    A

    T

    A

    =

    V

    Σ

    T

    U

    T

    U

    Σ

    V

    T

    =

    V

    (

    Σ

    T

    Σ

    )

    V

    T

    \begin{equation} A^TA=V\Sigma^TU^TU\Sigma V^T=V(\Sigma^T\Sigma) V^T \end{equation}

    ATA=VΣTUTUΣVT=V(ΣTΣ)VT

  • 我们可以把

    A

    T

    A

    A^TA

    ATA看作是矩阵A左乘一个矩阵

    A

    T

    A^T

    AT,所以可以得到

    A

    T

    A

    A^TA

    ATA为矩阵A的行向量的线性组合,所以得到的V肯定在A的行向量空间中。这样可以得到

    V

    ,

    Σ

    V,\Sigma

    V,Σ

  • 最后我们通过验证

    A

    v

    =

    σ

    u

    Av=\sigma u

    Av=σu来验证

    σ

    \sigma

    σ 的符号。
    -奇异值SVD分解后矩阵向量分布情况如图:
    线性代数|机器学习-P7SVD奇异值分解插图

  • 我们发现,对于矩阵A的分解来说,有部分向量

    u

    r

    +

    1

    u

    m

    u_{r+1}\cdots u_m

    ur+1um对于与

    σ

    r

    +

    1

    =

    =

    σ

    n

    =

    0

    \sigma_{r+1}=\cdots=\sigma_n=0

    σr+1==σn=0,所以这部分的向量其实是

    N

    (

    A

    T

    )

    N(A^T)

    N(AT)零空间向量,所以我们希望更一步进行压缩矩阵,我们本身希望用非零的特征值,具体公式如下:

    A

    v

    1

    =

    σ

    1

    u

    1

    ,

    A

    v

    2

    =

    σ

    2

    u

    2

    ,

    A

    v

    r

    =

    σ

    r

    u

    r

    \begin{equation} Av_1=\sigma_1 u_1,Av_2=\sigma_2 u_2,\cdots Av_r=\sigma_r u_r \end{equation}

    Av1=σ1u1,Av2=σ2u2,Avr=σrur

  • 整理可得如下:

    A

    [

    v

    1

    v

    2

    v

    r

    r

    o

    w

    s

    p

    a

    c

    e

    ]

    =

    [

    u

    1

    u

    2

    u

    r

    c

    o

    l

    u

    m

    n

    s

    p

    a

    c

    e

    ]

    [

    σ

    1

    σ

    2

    σ

    r

    ]

    A

    V

    r

    =

    U

    r

    Σ

    r

    \begin{equation} A\begin{bmatrix}v_1&v_2&\cdots&v_r\\&row-space\end{bmatrix}=\begin{bmatrix}u_1&u_2&\cdots&u_r\\&column-space\end{bmatrix}\begin{bmatrix}\sigma_1&\\&\sigma_2\\&&\ddots\\&&&\sigma_r\end{bmatrix}\rightarrow AV_r=U_r\Sigma_r \end{equation}

    A

    v1v2rowspacevr

    =

    u1u2columnspaceur

    σ1σ2σr

    AVr=UrΣr

1.2 行基和列基转换

  • 这样

    A

    V

    r

    =

    U

    r

    Σ

    r

    AV_r=U_r\Sigma_r

    AVr=UrΣr中的均无零向量和零值了。真神奇的想法!!那么行空间的基向量通过上面公式就可以映射到列空间的基向量上,具体如图所示 :
    线性代数|机器学习-P7SVD奇异值分解插图(1)

  • 证明当

    v

    1

    v

    2

    v_1\perp v_2

    v1v2,经过

    A

    v

    =

    σ

    u

    Av=\sigma u

    Av=σu时,

    u

    1

    u

    2

    u_1\perp u_2

    u1u2

    u

    1

    =

    A

    v

    1

    σ

    1

    ,

    u

    2

    =

    A

    v

    2

    σ

    2

    ,

    u

    1

    T

    u

    2

    =

    (

    A

    v

    1

    σ

    1

    )

    T

    A

    v

    2

    σ

    2

    =

    v

    1

    T

    A

    T

    A

    v

    2

    σ

    1

    σ

    2

    \begin{equation} u_1=\frac{Av_1}{\sigma_1},u_2=\frac{Av_2}{\sigma_2},u_1^Tu_2=(\frac{Av_1}{\sigma_1})^T\frac{Av_2}{\sigma_2}=\frac{v_1^TA^TAv_2}{\sigma_1\sigma_2} \end{equation}

    u1=σ1Av1,u2=σ2Av2,u1Tu2=(σ1Av1)Tσ2Av2=σ1σ2v1TATAv2

  • 我们之前得到如下结论

    A

    T

    A

    v

    2

    =

    v

    2

    σ

    2

    2

    A^TAv_2=v_2\sigma_2^2

    ATAv2=v2σ22,代入可得:

    u

    1

    T

    u

    2

    =

    v

    1

    T

    A

    T

    A

    v

    2

    σ

    1

    σ

    2

    =

    v

    1

    T

    σ

    2

    2

    v

    2

    σ

    1

    σ

    2

    =

    σ

    2

    v

    1

    T

    v

    2

    σ

    1

    =

    0

    u

    1

    u

    2

    \begin{equation} u_1^Tu_2=\frac{v_1^TA^TAv_2}{\sigma_1\sigma_2}=\frac{v_1^T\sigma^2_2v_2}{\sigma_1\sigma_2}=\frac{\sigma_2v_1^Tv_2}{\sigma_1}=0\rightarrow u_1\perp u_2 \end{equation}

    u1Tu2=σ1σ2v1TATAv2=σ1σ2v1Tσ22v2=σ1σ2v1Tv2=0u1u2

2. Ax图像表示

假设我们有一个矩阵A,进行分解后得到

A

=

U

Σ

V

T

A=U\Sigma V^T

A=UΣVT,那么可得:

A

x

=

U

Σ

V

T

x

\begin{equation} Ax=U\Sigma V^Tx \end{equation}

Ax=UΣVTx

  • step1:

    V

    T

    x

    V^Tx

    VTx将图像旋转

  • step2:

    Σ

    V

    T

    x

    \Sigma V^Tx

    ΣVTx将图像沿轴拉伸

  • step3:

    U

    Σ

    V

    T

    x

    U\Sigma V^Tx

    UΣVTx将图像旋转

  • 小结,Ax的本质是将向量的基进行旋转,拉伸,旋转作用
    线性代数|机器学习-P7SVD奇异值分解插图(2)

3. 极坐标表示

我们希望将任意一个矩阵A分解为一个对称矩阵S和正交矩阵Q的形式,可以进行如下变形:

A

=

U

Σ

V

T

=

(

U

Σ

U

T

)

(

U

V

T

)

,

S

=

U

Σ

U

T

,

Q

=

U

V

T

\begin{equation} A=U\Sigma V^T=(U\Sigma U^T) (UV^T),S=U\Sigma U^T,Q=UV^T \end{equation}

A=UΣVT=(UΣUT)(UVT),S=UΣUT,Q=UVT

4. 小结

通过SVD奇异值分解可得,我们将任意矩阵分解后,可以挑选出r个重要的非零特征值的矩阵。

A

=

σ

1

u

1

v

1

T

+

σ

2

u

2

v

2

T

+

+

σ

r

u

r

v

r

T

,

σ

1

σ

2

σ

r

;

\begin{equation} A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_ru_rv_r^T,\sigma_1\geq\sigma_2\geq\cdots\geq\sigma_r; \end{equation}

A=σ1u1v1T+σ2u2v2T++σrurvrT,σ1σ2σr;

  • 所以可得得到矩阵A中最重要的信息在

    σ

    1

    u

    1

    v

    1

    T

    +

    +

    σ

    k

    u

    k

    v

    k

    T

    \sigma_1u_1v_1^T+\cdots+\sigma_ku_kv_k^T

    σ1u1v1T++σkukvkT上。其他的部分因为

    σ

    k

    +

    1

    u

    k

    +

    1

    v

    k

    +

    1

    T

    +

    +

    σ

    r

    u

    r

    v

    r

    T

    \sigma_{k+1}u_{k+1}v_{k+1}^T+\cdots+\sigma_ru_rv_r^T

    σk+1uk+1vk+1T++σrurvrT中的

    σ

    \sigma

    σ太小而可以忽略,这样就起到以小的矩阵组合来表示原始矩阵的方式,这个就是我们的 主成分分析PCA,真神奇!!!

本站无任何商业行为
个人在线分享 » 线性代数|机器学习-P7SVD奇异值分解
E-->