推荐系统中的SVD算法

很多人认为推荐系统的趋势是深度学习,我也非常同意这种观点,今年的ACM recsys首次开了deep learning work shop,youtube更是全面使用了深度学习来进行推荐。但不管怎么样(这神转折),SVD作为推荐系统领域非常经典的算法,还是值得和应该学习的。在查阅了一些资料后,我总结了SVD的三个套路。

(1) 用SVD对评分矩阵(预先对未评分项进行填充)进行分解,得到三个矩阵,取最重要的k个奇异值降维,然后三个矩阵再相乘重构出评分矩阵,此时评分矩阵是每个都有值的,可以根据评分值大小来做推荐。这是属于Model-based的推荐算法。

(2) 降维之后得到的U(m x k)和I(k x n)矩阵,可以分别用来做user-based(基于user的k个feature来进行相似度计算)和item-based的推荐(基于item的k个feature来进行相似度计算)。SVD降维的过程不仅是降低了维度,还进行了自动的特征提取。这是属于Memory-based的推荐算法。

(3) 没有利用到传统SVD的分解方法,用了梯度下降来求分解的矩阵。首先假设评分矩阵能被分解为U(m x k)和I(k x n)矩阵,k是超参数,然后初始化U和I的值,U和I相乘得到评分矩阵(m x n)然后与真实的评分进行比较(未评分项不需考虑,因此也不用纠结怎么填充未评分项),计算loss的梯度(还要加上正则项,这里为什么加正则项我不太理解),根据loss的梯度反复迭代更新U和I直到RMSE开始上升为止。这是属于Model-based的推荐算法。参考论文《A Guide to Singular Value Decomposition for Collaborative Filtering》
另外,有个ALS推荐算法(spark里面用到)也是基于这样的模型,但求解参数的思路不同,它是分别对每个u、i参数直接求解(令偏导=0),因此迭代的次数是m x k + k x n。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值