IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]SVD推荐算法(二)

    linger2012liu发表于 2015-04-24 20:17:05
    love 0
    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

    用到的损失函数是



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


    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



沪ICP备19023445号-2号
友情链接