推荐系统实践:基于用户的协同过滤算法原理及实现(含改进算法)

总体思路:

1.利用余弦相似度对两两用户计算相似度

   1.1 建立物品-用户倒排表

         左半部分为训练数据格式,ABCD等是用户,abc等是对应用户喜欢的物品

         右半部分物品-用户倒排表,如对于物品a,喜欢它的有用户A和B

       

   1.2 建立用户相似度矩阵

         利用物品-用户倒排表,构建用户相似度矩阵,其中的值,如 matrix[A][B]表示用户A和用户B共同喜欢的电影的数量。

        

   1.3 计算用户相似度

         遍历用户相似度矩阵中所有的两两用户,根据两两用户共同喜欢的电影的数量,计算用户相似度

         计算用户相似度的公式如下:

         其中_{}W_{uv}表示用户u与v的相似度,作为matrix[u][v]的值,

         N(u)表示用户u增有过正反馈的物品集合,N(u)表示用户u增有过正反馈的物品集合。

            

例如:

          

          或使用改进的用户相似度计算公式:

          该公式惩罚了用户u和v共同喜欢的物品中热门物品对他们相似度的影响,以图书为例,如果两个用户都曾经买过《新华字典》,这丝毫不能说明他们的兴趣相似,因为绝大多数中国人小时候都买过《新华字典》。但如果两个用户都买过《数据挖掘导论》,那可以认为他们的兴趣比较相似,因为只有研究数据挖掘的人才会买这本书。换句话说,两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度。

           i表示用户u和用户v都有过正反馈的物品集合,N(i)表示对物品i有过正反馈的用户数

           即分子部分表示   “用户u和v有正反馈的物品数”

           

 

 

2. 针对目标用户u,找到其最相似的K个用户,产生N个推荐

   K表示与用户u兴趣相似的用户个数,N表示为用户u推荐的物品数

   首先,对用户u,在用户相似度中找到与其相似度最高的K个用户

   利用如下的公式计算用户u对物品i的感兴趣程度p(u, i)

   其中,S(u, k)包含和用户u兴趣最接近的K个用户,

  • 21
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值