![1d5c194f5bbe65aa59b8b585035e7b93.png](https://img-blog.csdnimg.cn/img_convert/1d5c194f5bbe65aa59b8b585035e7b93.png)
特征值分解矩阵不能适用于所有矩阵,对于无法进行特征值分解的矩阵,我们使用SVD分解的方法。
对任意一个
其中,矩阵
另外,矩阵
Python中的Numpy库有SVD分解方法。
>>>
首先定义一个2行4列的矩阵,其中元素的值随意。
>>>
可以看出左右奇异向量所在的矩阵的形状。特别注意,中间的矩阵
矩阵SVD分解是为了减少大矩阵在计算机中的存储,提高矩阵运算速度。我们需要在数学表达上进一步讨论。
其中,求和表达式中的
在应用中,例如推荐系统中,由于用户和商品数量极其庞大,由用户和商品构成的矩阵也非常庞大,矩阵中每一个元素表达了某个用户对某个商品的评价或喜好。对于一个用户,使用他对每一个商品的评价构成的向量作为描述这个用户的特征,同样对一个商品,我们使用每一用户对它的评价作为这个商品的特征。在使用了SVD分解并近似后,其实是舍弃了小奇异值所对应的“特征”向量(这里的特征向量是描述用户或商品特征的向量),减少了运算量。
在Python中,Numpy的SVD分解方法,返回的奇异值已经降序排序,奇异向量也对应调整过位置,运用矩阵切割就可以实现近似。
矩阵的SVD分解主要运用在利用协同过滤方法实现推荐系统中,充分利用奇异值和奇异向量,对没有直接关联的用户和商品,预测出用户对商品的评价,据此选择是否推荐。