简易网站建设维护,wordpress加邮箱代码,wordpress 栏目插件,电子科技东莞网站建设转载自 UserCF,基于用户的协同过滤算法UserCF#xff1a;User Collaboration Filter#xff0c;基于用户的协同过滤
算法核心思想#xff1a;在一个在线推荐系统中#xff0c;当用户A需要个性化推荐时#xff0c;可以先找到和他有相似兴趣的其它用户#xff0c;然后…转载自 UserCF,基于用户的协同过滤算法UserCFUser Collaboration Filter基于用户的协同过滤
算法核心思想在一个在线推荐系统中当用户A需要个性化推荐时可以先找到和他有相似兴趣的其它用户然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A这种方法称为基于用户的协同过滤算法。
可以看出这个算法主要包括两步
一、找到和目标用户兴趣相似的用户集合——计算两个用户的兴趣相似度
二、找到这个集合中的用户喜欢的且目标用户没有听说过的物品推荐给目标用户——找出物品推荐下面分别来看如何实现这两步
一、计算两个用户的兴趣相似度
给定用户u和用户v令N(u)表示用户u感兴趣的物品集合N(v)表示用户v感兴趣的物品集合那么可以通过Jaccard公式或者通过余弦相似度公式计算
...Jaccard公式...余弦相似度公式举例下图表示用户A对物品{a,b,d}有过行为用户B对物品{a,c}有过行为利用余弦相似度计算可得
用户A和用户B的兴趣相似度为同理但是需要注意的是这种方法的时间复杂度是O(U^2)因为我们需要计算每一对用户之间的相似度事实上很多用户相互之间并没有对同样的物品产生过行为所以很多时候当分子为0的时候没有必要再去计算分母所以这里可以优化即首先计算出|N(u) 并 N(v)| ! 0 的用户对(u,v)然后对这种情况计算分母以得到两个用户的相似度。针对此优化需要2步
1建立物品到用户的倒查表T表示该物品被哪些用户产生过行为
2根据倒查表T建立用户相似度矩阵W在T中对于每一个物品i设其对应的用户为j,k在W中更新相应的元素值w[j][k]w[j][k]1w[k][j]w[k][j]1以此类推扫描完倒查表T中的所有物品后就可以得到最终的用户相似度矩阵W这里的W是余弦相似度中的分子部分然后将W除以分母可以得到最终的用户兴趣相似度。得到用户相似度后就可以进行第二步了。二、给用户推荐和他兴趣最相似的K个用户喜欢的物品。
公式如下其中p(u,i)表示用户u对物品i的感兴趣程度S(u,k)表示和用户u兴趣最接近的K个用户N(i)表示对物品i有过行为的用户集合Wuv表示用户u和用户v的兴趣相似度Rvi表示用户v对物品i的兴趣这里简化所有的Rvi都等于1。
根据UserCF算法可以算出用户A对物品c、e的兴趣是以上就是UserCF最简单的实现方法。我们还可以在此基础上进行改进改进思想是两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度。
比如两个用户都买过《新华词典》并不能说明两个人的兴趣相似而如果两个人都买过《数据挖掘导论》则可以认为他们的兴趣相似。
公式如下可以看到如果一个物品被大多数人有过行为则这样的信息参考价值不大权重变小。
以上内容参考自《推荐系统实践》