协同过滤算法——入门

协同过滤算法——入门

    

    协同过滤算法(Collaborative Filtering, CF)是推荐系统算法中的重头,也是推荐系统算法的入门必备,这篇我们入门一下,主要说它的两大分支:

  • 基于用户的协同过滤算法(user based CF);
  • 基于物品的协同过滤算法(item based CF)。

1. 基于用户的协同过滤算法


    这类方法的基本思想是:把A用户相邻用户的偏好物品推荐给A。这里的相邻是计算用户之间的相似性,计算用到的特征是每个用户标注偏好物品的偏好值;


    详细点说,收集许多用户的历史日志log,得到它们标注的偏好物品,以及对应的偏好值。给定一个用户A,我们也已经有了他的历史log,包括A的偏好物品和偏好值。

    这时,我们要用A用户的特征,计算其和所有用户的特征之间的相似性,记为similarity_i,i表示用户A和第i个邻居用户的相似性。

    最后,让邻居用户偏好的物品构成需要推荐的物品集合(除去用户A已经偏好的物品),让邻居用户对第k个物品的偏好值,乘以对应的用户A和他的相似性值,求和得到第k个物品需要推荐给用户A的“得分”。

    这样也就得到了所有需要推荐的物品的推荐值。

   

   这样过程可以用下图来表示:



    分析:基于用户的CF方法给你推荐的物品是和你相似的人偏好的东西,也就是说,和你相似的人也看了这本书,所以他推荐给你这本书了。如果要是能够把和你相似的人特点给出来,展示给你看,让你找到共鸣,这样你就会对这本书的兴趣会大大增加。但是,每个用户的特征只是自己偏好物品的偏好值,而用户的数量是远远大于偏好物品数量的,这个方法样本的特征维数太少了,效果不一定很好。


2. 基于物品的协同过滤算法


    这类方法的基本思想是:把用户A已经偏好的物品的相似物品推荐给A。这里的特征是物品被所有用户标注的偏好值。


    详细点说,根据用户A的log,我们已经知道了他标注的偏好物品的偏好值,我们需要计算这些已经被偏好的物品和其余物品的相似性,然后推荐给A。如何计算相似性呢?

    首先,我们收集每个物品在所有用户下的历史log,得到所有用户对每个物品的偏好值,这样就可以计算得到候选被推荐物品p和A用户已经偏好物品q之间的相似性,记为similarity_q. 我们就可以计算出候选被推荐物品与A用户所有已经偏好物品之间的相似性。

    然后,我们用这个计算好的候选被推荐物品p和A用户已经偏好物品q之间的相似性similarity_q值,乘以A用户对偏好物品q的偏好值。这样把所有乘积再相加,得到候选被推荐物品p的“推荐值”得分。


    这样子,基于物品的CF算法就完成了。


    这个过程可以也通过一个图来表示:



分析:基于用户的CF方法计算相似性是每个物品被所有用户的偏好值,特征长度是用户数量,这样子特征就比上面基于用户的CF方法要丰富,效果理论上较好。



参考:

http://my.oschina.net/BreathL/blog/62519

http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html

http://www.cnblogs.com/zhangchaoyang/articles/2664366.html

http://www.cnblogs.com/luchen927/archive/2012/02/01/2325360.html


  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值