推荐系统(基于用户的协同过滤)入门总结

           最近百度有一个推荐系统算法创新大赛,由于我的研究生课题是和推荐系统相关的,所以做实验就比较方便简单。身边有一些人会问到我一些关于推荐的方法,就想要总结一个推荐系统的编写入门,也算是对自己知识的检验吧。中间有很多引用,会给出链接供大家参考。

        总体来说,目前我比较熟悉的推荐算法是协同过滤(Collabrative Filter)算法,而协同过滤算法包括基于用户的CF和基于物品的CF。而本文将基于用户的CF算法给大家进行一下科普。

        基于用户的协同过滤算法,基于如下假设:对于用户u,和用户u有相同兴趣的用户喜欢的物品,u也比较喜欢。如此,就可以将推荐算法分为两个步骤:

(1). 找到与用户兴趣相似的用户(邻居)集合。

(2). 根据这个集合中的用户喜欢的,且目标用户没有看过的的物品推荐给目标用户。

        步骤明确了,然后就可以做实验了。


        拿百度这次比赛给的数据集为例子,我将具体说一下算法的流程。

        百度的最终目的是用户给没听过的部分项目打分,提供的数据格式为:‘userid’ ‘itemid’ ?。这里面“?”是由算法给出来的,范围是1到5,数字越大表示用户越喜欢该项目。

        按照上面所说的步骤,给定一个用户userid,首先照出与该用户相似的用户集合。相似性如何进行评价,有不同的评价标准,我们这里使用 Pearson 相关系数计算用户相似度。评价公式为:


上述公式的计算依赖于数据集中的训练集,此次百度数据集中的训练集给定的是如下格式:userid itemid rating。根据这些数据,我们就可以计算出任意两个用户之间的相似度。根据相似度大小,我们可以得到和目标用户u最相关的N个用户,用这些用户对目标项目的打分形成目标用户对目标项目的最终打分,打分公式为:



注意,上述公示中的预测评分公式的分母可以适当的进行一下修正,不然容易出现比较大的打分值。最后打分有可能超过5,可以将超过五的打分统一赋值为五。


References

1. 项亮: 推荐系统实践 2012

 2. zh's note    http://blog.csdn.net/wuzh670/




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值