• 特征值分解和奇异值分解


    前言

    线性代数中介绍了方阵的特征值分解,将其一般化到任意形状的矩阵对应奇异值分解。

    本文暂时假设所有矩阵都为实矩阵。

    特征值分解(Eigenvalue Decomposition, EVD)

    线性代数中的相似对角化

    对于方阵(A_{n imes n}),求解其特征值(lambda_1, ..., lambda_n)和对应的特征向量(xi_1, ..., xi_n)

    当特征向量(xi_1, ..., xi_n)线性无关时,可以对A进行特征分解(也就是相似对角化),得到:

    [A = P Lambda P^{-1} ]

    其中,(P)是由特征向量按列拼接构成的方阵,(Lambda)是主对角线由特征值构成的主对角矩阵,二者的顺序一一对应。

    [P = [xi_1, ..., xi_n] ]

    [Lambda = diag(lambda_1, ..., lambda_n) ]

    一般将特征值和特征向量作调整:(1)特征值从大到小排列:(lambda_1 geq lambda_2 geq cdots geq lambda_n);(2)对特征向量(xi_1, ..., xi_n)进行单位化。

    特殊地,当A为对称阵时,P为正交阵,即P的列向量为一组单位正交基,且有:

    [egin{aligned} A & = P Sigma P^{-1}\ & = P Sigma P^{T}\ & = egin{bmatrix}xi_1, ..., xi_nend{bmatrix} egin{bmatrix} lambda_1 & &\ & ddots &\ & & lambda_nend{bmatrix} egin{bmatrix} xi_1^T\ vdots\ xi_n^T end{bmatrix}\ & = egin{bmatrix}lambda_1xi_1, ..., lambda_nxi_nend{bmatrix}egin{bmatrix} xi_1^T\ vdots\ xi_n^T end{bmatrix}\ & = lambda_1xi_1xi_1^T + ... + lambda_1xi_nxi_n^T end{aligned} ]

    不足:特征值分解的要求A能够相似对角化,即A必须为方阵,且特征向量线性无关,现实很难满足。

    特征值和特征向量的应用

    图片压缩:在(Lambda)中保留前k个特征值不变,其余都用零替代,得到(A)近似处理的(A')

    [A' = P egin{bmatrix} lambda_1 & & \ & ddots & &\ & & lambda_k & \ & & & f O end{bmatrix} P^{-1} ]

    发散思维:前k个最大的特征值可以还原出近似的原矩阵,从这点上正好对应本身名字"特征值"。

    数据降维:把(A)看成是n个n维的样本点构成的数据集,只取前k个特征值和其对应的特征向量,得到的降维后数据(A')

    [A'_{n imes k} = A_{n imes n}P_{n imes k} ]

    奇异值分解(Singular Value Decomposition, SVD)

    对于普通的矩阵(A_{m imes n})根据奇异值分解得到:

    [A_{m imes n} = U_{m imes m} Sigma_{m imes n} V^T_{n imes n} ]

    其中(U = [u_1, ..., u_m])(V = [v_1, ..., v_n])都是酉矩阵[^1],即(U^{-1} = U^{T}, UU^{-1} = UU^T = I)(u_i)称为左奇异向量(v_i)称为右奇异向量(Sigma)(m imes n)的对角矩阵,其主对角线上的元素称为奇异值

    推导如下:

    [egin{aligned} A & = U Sigma V^T \ AA^T & = U Sigma V^T (V Sigma^T U^T) = U Sigma^2 U^T\ A^TA & = (V Sigma^T U^T)U Sigma V^T = V Sigma^2 V^T end{aligned} ]

    (AA^T)(A^TA)都是方阵,还是对称阵,也就应证了U和V是酉矩阵的陈述,而奇异值就是(AA^T)的特征值:

    [AA^T cdot u_i = lambda_i u_i ]

    其中(U = [u_1, ..., u_i, ..., u_m])(Sigma = diag(lambda_1, ..., lambda_i, ..., lambda_{min{m, n}})),式中(AA^T)(u_i)对应用(A^TA)(v_i)也成立。

    同样,如果只取前r个最大的特征值,可以得到近似的(A):

    [A approx U_{m imes r}Sigma_{r imes r}V^T_{r imes n} ]

    从向量空间去理解EVD和SVD

    矩阵(A)左乘向量(x)就是对(x)进行缩放和旋转。

    假设(A)为二阶方阵,(A)左乘向量(x)就是在(xi_1)(xi_2)两个方向上对(x)做缩放,缩放因子分为(lambda_1)(lambda_2),这里的的(lambda_1, lambda_2)就是(A)的两个特征值,而(xi_1, xi_2)则是两个特征值对应的特征向量。

    如果(x = kxi_1),k不为0,此时(x)与其中一个特征向量共线,那么A只在(xi_1)上对向量进行缩放,缩放因子为(lambda_1),即(Ax = lambda_1 x),而矩阵A的另一个特征向量在当前特征向量上投影为0,所以不起任何作用。

    如果A为对称阵,那么(xi_1)(xi_2)正交,那么这个时候(xi_1)(xi_2)就是一组单位正交基。

    另外,特殊地,如果矩阵由两个单位正交基组成,它对向量就只有一个旋转的作用了(经过正交矩阵变换的向量,在向量空间中长度不变,所以正交阵对向量的作用只是变换了向量空间,但是不改变向量形状)。

    再来看看SVD,其实就是把A分解成:旋转(V起作用)--> 缩放((Sigma)起作用)--> 再旋转(U起作用)。

  • 相关阅读:
    numpy 基础 —— np.linalg
    图像旋转后显示不完全
    opencv ---getRotationMatrix2D函数
    PS1--cannot be loaded because the execution of scripts is disabled on this system
    打开jnlp Faild to validate certificate, the application will not be executed.
    BATCH(BAT批处理命令语法)
    oracle vm virtualbox 如何让虚拟机可以上网
    merge 实现
    Windows batch,echo到文件不成功,只打印出ECHO is on.
    python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte
  • 原文地址:https://www.cnblogs.com/YoungF/p/12802412.html
Copyright © 2020-2023  润新知