excel中如何对矩阵得对角线进行求和_学习笔记:矩阵SVD分解

1d5c194f5bbe65aa59b8b585035e7b93.png

特征值分解矩阵不能适用于所有矩阵,对于无法进行特征值分解的矩阵,我们使用SVD分解的方法。

对任意一个

矩阵
,一定可以进行SVD分解,数学形式为

其中,矩阵

的每一个列向量是左奇异向量,对应
的特征向量,矩阵
的每一个列向量(也就是矩阵
的每一个行向量)是右奇异向量,对应
的特征向量。

另外,矩阵

有可能是“高瘦型”,也有可能是“矮胖型”,这取决于矩阵
的形状,但是不论形状如何,矩阵
只有在主对角线上存在非零元素,这些元素是
的特征值的算数平方根,也是
的特征值的算数平方根,称为矩阵
的奇异值。

Python中的Numpy库有SVD分解方法。

>>> 

首先定义一个2行4列的矩阵,其中元素的值随意。

>>> 

可以看出左右奇异向量所在的矩阵的形状。特别注意,中间的矩阵

只保存了主对角线上的非零元素,并且是按照由大到小的顺序排列。

矩阵SVD分解是为了减少大矩阵在计算机中的存储,提高矩阵运算速度。我们需要在数学表达上进一步讨论。

其中,求和表达式中的

是矩阵
的非零奇异值个数,也是矩阵
的秩,
是奇异值。求和表达式展开后,我们只保留了矩阵
主对角线上的非零奇异值,并按照
降序排列每一项,保留系数大的项,舍去系数小的项,实现近似,减少需要存储的值。如果只需要保留前
项,则可以写为

在应用中,例如推荐系统中,由于用户和商品数量极其庞大,由用户和商品构成的矩阵也非常庞大,矩阵中每一个元素表达了某个用户对某个商品的评价或喜好。对于一个用户,使用他对每一个商品的评价构成的向量作为描述这个用户的特征,同样对一个商品,我们使用每一用户对它的评价作为这个商品的特征。在使用了SVD分解并近似后,其实是舍弃了小奇异值所对应的“特征”向量(这里的特征向量是描述用户或商品特征的向量),减少了运算量。

在Python中,Numpy的SVD分解方法,返回的奇异值已经降序排序,奇异向量也对应调整过位置,运用矩阵切割就可以实现近似。

矩阵的SVD分解主要运用在利用协同过滤方法实现推荐系统中,充分利用奇异值和奇异向量,对没有直接关联的用户和商品,预测出用户对商品的评价,据此选择是否推荐。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值