aihot  2017-11-07 06:03:23  机器学习 |   查看评论   

  当然UserCF算法也有改进的空间,比如在计算用户相似度的时候,大家同样购买了热门物品其实没有什么说服力,并不能以此说明两个用户就相似了,所以我们需要对热门物品进行降权,如下式:

  该公式与原公式相比,惩罚了用户u和用户v共同兴趣列表中热门物品对他们相似度的影响。这里先提一下TF-IDF,后面还要提,《浅谈机器学习基础》中讲K-means的时候就讲过TF-IDF,TF-IDF里的这个IDF,就是对出现在几乎所有文档中的热门词进行降权惩罚。

基于物品的协同过滤算法

  基于物品的协同过滤算法是目前业界应用最多的算法。

  如果网站的用户数目增加较快,计算用户兴趣的相似度矩阵就越来越难。而ItemCF算法不计算用户兴趣的相似度矩阵,而是计算物品之间的相似度。还有,我们前面说过基于邻域的这两个算法都是协同过滤算法,协同过滤算法的定义就是只使用用户行为数据,所以这里所定义的物品的相似度,不利用物品本身的内容信息去计算,而是主要通过分析用户的行为记录计算物品之间的相似度。

  如果喜欢A的用户大多都喜欢B,那么A和B可以讲拥有一定的相似性。或者说,就算不相似,那我们把B推荐给喜欢A的用户也是没错的。

  基于物品的协同过滤算法主要分为两步:

 

  • 计算物品之间的相似度
  • 根据物品的相似度和用户的历史行为给用户生成推荐列表

  我们可以用下面的公式定义物品之间的相似度:

  意思就是,买了i的用户有多少也买了j。如果两者的用户群重合比例越大,那么认为ij就更相似。

  但是还有个问题,就是如果按照上面的公式算,所有的物品都和热门商品相似,如果j是大热门商品的话,基本上喜欢i的全都喜欢j,这样就有问题,为了提高覆盖率,我们要对热门物品进行惩罚:

  上面的式子就对热门物品的权重进行了惩罚。

  得到物品的相似度之后,ItemCF通过如下公式计算用户u对物品i的兴趣:

  与UserCF对比着来说,UserCF是用K个和用户u兴趣最相似用户的平均兴趣代表这个用户u的兴趣;ItemCF就是用K个和物品j最相似的物品来代表这个物品j。UserCF是,这K个用户,与用户u的相似度决定了他们的话语权,他们表决的方式就是自己是否对该物品有过正面行为;ItemCF是,这K个物品,与物品j的相似度决定了他们的话语权,他们表决的方式就是自己是否被该用户有过正面行为。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈推荐系统基础

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]