首页 > 编程语言 > 详细

使用SVD++进行协同过滤(算法原理部分主要引用自他人)

时间:2015-05-22 18:37:19      阅读:19149      评论:1      收藏:0      [点我收藏+]

标签:算法   class   style   log   com   使用   http   src   si   

 

    SVD++是基于SVD(Singular Value Decomposition)的一种改进算法。SVD是一种常用的矩阵分解技术,是一种有效的代数特征提取方法。SVD在协同过滤中的主要思路是根据已有的评分情况,分析出评分者对各个因子的喜好程度以及电影包含各个因子的程度,最后再反过来分析数据得出预测结果。

其在协同过滤中的具体应用方法是先对user_movierating矩阵的缺失值用随机数据予以填充,然后将预处理之后的矩阵作为SVD算法的输入,进行迭代求解。

为了更好的说明SVD算法,需要首先对matrix factorization modelBaseline Predictors进行简单的介绍。

matrix factorization model:

技术分享

 

图表 1评分矩阵形式(引用)

评分矩阵U(形式如上图)可被分解为两个矩阵相乘

 技术分享

 

将这种分解方式体现协同过滤中,即有:

          技术分享 (matrix factorization model )

 

        在这样的分解模型中,Pu代表用户隐因子矩阵(表示用户u对因子k的喜好程度),Qi表示电影隐因子矩阵(表示电影i在因子k上的程度)。

 

Baseline Predictors:

Baseline Predictors使用向量bi表示电影i的评分相对于平均评分的偏差,向量bu表示用户u做出的评分相对于平均评分的偏差,将平均评分记做μ

          技术分享 (Baseline Predictors)

SVD:

SVD就是一种加入Baseline Predictors优化的matrix factorization model

SVD公式如下:

    技术分享

加入防止过拟合的 λ 参数,可以得到下面的优化函数:

     技术分享

对上述公式求导,我们可以得到最终的求解函数:

 

     技术分享

     

     

     

SVD++:

SVD算法是指在SVD的基础上引入隐式反馈,使用用户的历史浏览数据、用户历史评分数据、电影的历史浏览数据、电影的历史评分数据等作为新的参数。

   技术分享

      求解公式如下:

      

      技术分享

      

      使用用户的历史评价数据作为隐式反馈,算法流程图如下:

      技术分享

      

      

 

 

【Reference】

   【1】从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现http://blog.csdn.net/dark_scope/article/details/17228643     

使用SVD++进行协同过滤(算法原理部分主要引用自他人)

标签:算法   class   style   log   com   使用   http   src   si   

原文:http://www.cnblogs.com/Xnice/p/4522671.html

(6)
(2)
   
举报
评论 一句话评论(1
2016-04-07 16:37:05
请问博主,你知道怎么使用wooflix软件吗?woofilx中有svd  的源代码
回复
 (4)
 (0)
1条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号