@haoqiang
2018-01-11T08:56:49.000000Z
字数 1668
阅读 80
机器学习
奇异值分解 (Singular Value Decomposition, SVD) 不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。
特征值和特征向量的定义如下:
其中是一个的矩阵,是一个维向量,则我们说是矩阵的一个特征值,而是矩阵的特征值所对应的特征向量。
求出特征值和特征向量有什么好处呢?就是我们可以将矩阵A特征分解。如果我们求出了矩阵A的个特征值,以及这个特征值所对应的特征向量那么矩阵A就可以用下式的特征分解表示:
其中是这个特征向量所张成的维矩阵,而为这个特征值为主对角线的维矩阵。
一般我们会把的这个特征向量标准化,即满足,或者说,此时的个特征向量为标准正交基,满足,即,也就是说为酉矩阵。
注意到要进行特征分解,矩阵必须为方阵。那么如果不是方阵,矩阵分解需用到SVD。
奇异值的定义:对于一个矩阵,有:
那么向量就是的右奇异向量。并且:
奇异值:
左奇异向量:
SVD并不要求要分解的矩阵为方阵。假设矩阵是一个的矩阵,那么定义矩阵的SVD为:
其中是一个的矩阵;是一个的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,通常按从大到小排列;是一个的矩阵。和都是酉矩阵,即满足,。

可以看出的特征向量组成的是SVD中的矩阵。类似的方法可以得到的特征向量组成的就是SVD中的矩阵。还可以看出特征值矩阵等于奇异值矩阵的平方,可以通过求出的特征值取平方根来求奇异值。
V:将方阵进行特征分解,得到的特征值和特征向量满足下式:
可以得到矩阵的个特征值和对应的个特征向量了。将的所有特征向量张成一个的矩阵,即SVD公式里面的矩阵了。一般我们将中的每个特征向量叫做的右奇异向量。
U:将方阵进行特征分解,得到的特征值和特征向量满足下式:
可以得到矩阵的个特征值和对应的个特征向量了。将的所有特征向量张成一个的矩阵,即SVD公式里面的矩阵了。一般我们将中的每个特征向量叫做的左奇异向量。
Σ:由于除了对角线上是奇异值其他位置都是0,那我们只需要求出每个奇异值。通过求出的特征值取平方根来求奇异值。
在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上。也就是说,我们也可以用最大的个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说:
