广义奇异值分解(特征分解和奇异值分解的真正意义)

特征分解和奇异值分解在机器学习的应用中经常出现,在学习线性代数的时候也学习过。线性代数学完之后,之后去按照步骤去求解特征值和特征向量,也没搞明白特征值和特征向量究竟有什么作用。这篇文章的主要内容包括:

1、什么是特征分解

2、什么是奇异值分解

3、如何求解特征值和特征向量

4、特征值和特征向量有什么意义

广义奇异值分解(特征分解和奇异值分解的真正意义)(1)

一、特征分解

特征分解(eigendecomposition):是使用最广的矩阵分解之一,通过特征分解可以将矩阵分解成一组特征值和特征向量。方阵A的特征向量(eigenvector)是指与A相乘后相当于对该向量进行缩放的非零向量v

广义奇异值分解(特征分解和奇异值分解的真正意义)(2)

其中v就是方阵A的特征向量,λ就是A的特征值。如果v是A的特征向量,那么任何缩放后的向量s*v(s为任意实数,且不为0)也是A的特征向量。同时sv和v具有相同的特征值。所以,通常情况下我们都只考虑单位特征向量。通过将矩阵分解成为特征值和特征向量,来帮助我们分析矩阵。

二、奇异值分解

奇异值分解(singular value decomposition,SVD):是将矩阵分解成为特征值和特征向量的另一种方法,通过奇异值分解,可以将矩阵分解为奇异向量(singular vector)和奇异值(singular value)。通过奇异值分解,我们可以得到一些与特征分解相同类型的信息。而且,奇异值分解的应用非常广泛,如推荐系统、图片压缩等。每一个实数矩阵都有一个奇异值分解,但不一定有特征分解。非方阵的矩阵没有特征分解,此时我们只能使用奇异值分解。

假设A是一个m×n的矩阵,那么U是一个m×m的矩阵,D是一个m×n的矩阵,V是一个n×n的矩阵。其中,矩阵U和V都是正交矩阵,而矩阵D是对角矩阵。矩阵D不一定是方阵。

对角矩阵D对角线上的元素就是矩阵A的奇异值(singular value)。矩阵U的列向量是左奇异向量(left singular vector),矩阵V的列向量是右奇异向量(right singular vector)。

我们可以通过特征分解来解释奇异值分解,A的左奇异向量是A乘A的转置的特征向量,A的右奇异向量是A的转置乘A的特征向量。A的非零奇异值是A的转置乘A特征值的平方根,也是A乘A的转置特征值的平方根。

三、特征值和特征向量的求解

在线性代数中,有介绍过通过矩阵的运算来求解矩阵的特征值和特征向量,下面通过一个例子来介绍一下整个运算过程

广义奇异值分解(特征分解和奇异值分解的真正意义)(3)

广义奇异值分解(特征分解和奇异值分解的真正意义)(4)

下面我们通过numpy来对求解矩阵A的特征值和特征向量

广义奇异值分解(特征分解和奇异值分解的真正意义)(5)

广义奇异值分解(特征分解和奇异值分解的真正意义)(6)

通过对比可以发现,使用numpy求出来的特征向量好像与我们所求的有些不一样,那是因为numpy将特征向量进行了归一化。

四、特征值和特征向量的含义

其实在将矩阵分解成为特征值和特征向量的时候,在PCA和LDA中都有应用。我们将矩阵分解之后,按照特征值的大小对对应的特征向量进行排序,然后根据我们需要将原始矩阵降低到指定的维度,取前k个特征向量,组合成为一个映射矩阵,然后通过映射矩阵将原始矩阵映射到降维后的空间中。

其实,我们可以将矩阵的分解过程理解为一个力的分解,其中特征向量代表了分解力的方向,特征值代表分解的力在这个方向上的大小,我们也可以通过分解的力来得到合成力(矩阵)。在使用奇异值压缩图片的时候,正是使用了这一思想。在下一篇文章中,将介绍如何通过奇异值分解来设计推荐系统和实现图片的压缩。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页