推荐系统中的SVD算法
来源:互联网 发布:淘宝小二布置作业短信 编辑:程序博客网 时间:2024/05/20 13:09
很多人认为推荐系统的趋势是深度学习,我也非常同意这种观点,今年的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。
- 推荐系统中的SVD算法
- SVD在推荐系统中的应用详解以及算法推导
- SVD在推荐系统中的应用详解以及算法推导
- SVD在推荐系统中的应用详解以及算法推导
- SVD在推荐系统中的应用详解以及算法推导
- 推荐系统构建中的PCA和SVD算法
- SVD在推荐系统中的应用详解以及算法推导
- SVD在推荐系统中的应用详解以及算法推导
- SVD在推荐系统中的应用详解以及算法推导
- 推荐系统中的SVD分解
- SVD在推荐系统中的应用【推荐】
- 推荐系统相关算法(1):SVD
- 推荐系统相关算法(1):SVD
- 推荐系统相关算法(1):SVD
- 推荐系统相关算法(1):SVD
- 推荐系统相关算法(1):SVD
- 推荐系统相关算法(1):SVD
- 推荐系统的相关算法SVD
- yum国内镜像配置
- win7下caffe的编译(包括caffe_python接口配置)以及python27下numpy、matplotlib、scipy等的安装
- Android Animation动画总结
- 快速多目标检测——YOLO9000
- JavaBeans规范
- 推荐系统中的SVD算法
- java基础的集合图
- ActiveMQ讯息传送机制以及ACK机制
- int main(int argc, char *argv[])
- Application、Activity Stack 和 Task的区别
- 成为Java高手的25个学习要点
- (2017年1月4日)解决Android studio无法更新和无法下载genymotion插件问题http://blog.csdn.net/narunishino/article/details/5
- 架构组织形式的讨论,以及架构师之路的建议
- Laravel 在 with 查询中只查询个别字段