[置顶] SVD推荐算法(二)

SVD推荐算法(二)

这次讲解的是model-based的SVD推荐算法。

跟ALS推荐算法一样,都是矩阵分解的推荐算法,只不过求解的方式不同而已。

 

假如评分矩阵是R,那么我们希望拟合这样一个模型

R=U*M

其中U是user特征,M是item特征。

假如一个user的特征是u,一个item的特征是i,那么这个user对这个item的评分就是

u*i(两个特征的内积)。

 

损失函数是:


然后我们的目标就是最小化这个E了。

 

这是SVD矩阵分解预测评分最基本的一种方法。

基于这个思想,各种最优化的方式和损失函数的改造也随之提出来了,来优化这个算法。

 

最小化损失函数,我们可以用Batch Gradient Descent,Stochastic Gradient Descent等。

损失函数,我们可以加上正则项防止过拟合。

矩阵分解模型上,我们可以加上user评分偏差和item评分偏差。

 

我用了论文《A Guide to Singular Value Decomposition for Collaborative Filtering

》的一种方法,实现了一个单机版的SVD矩阵分解预测评分。

https://github.com/linger2012/svd-for-recommendation-implemented-by-java

 

用到的损失函数是

[置顶] SVD推荐算法(二)_第1张图片

求解用SGD,对于每个已知user-item的评分,都更新一次模型。

[置顶] SVD推荐算法(二)_第2张图片

1000次遍历训练集,对于测试集的rmse能达到0.96,还是不错的。

用到的数据集是movielens的一个。

代码和数据集都可以在上面我提供的github地址下载到。

 

 

 

参考资料:

 

 

A Guide to Singular Value Decomposition forCollaborative Filtering

http://www.csie.ntu.edu.tw/~r95007/thesis/svdnetflix/report/report.pdf

 

Collaborative Filtering for Netflix

https://classes.soe.ucsc.edu/cmps242/Fall09/proj/mpercy_svd_paper.pdf

 

在MovieLens数据集上用SVD进行评分预测

http://blog.csdn.net/daer520/article/details/19929523

 

基于矩阵分解的推荐算法,简单入门 - kobeshow

http://itindex.net/detail/48960-%E7%9F%A9%E9%98%B5%E5%88%86%E8%A7%A3-%E6%8E%A8%E8%8D%90%E7%AE%97%E6%B3%95-kobeshow

 

 


本文作者:linger
本文链接:http://blog.csdn.net/lingerlanlan/article/details/45250831

你可能感兴趣的:(java,机器学习,推荐系统,推荐算法,SVD)