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

用户活跃度和物品流行度的关系

  我们认为,新用户倾向于浏览热门的物品,老用户会逐渐开始浏览冷门的物品。用户越活跃,越倾向于浏览冷门的物品。

  仅仅基于用户数据设计的推荐算法一般称为协同过滤算法,协同过滤算法也分为不同种类,比如基于邻域的方法隐语义模型基于图的随机游走算法等。其中应用的最广的是基于邻域的方法,而基于邻域的方法主要包括以下两种:

 

  • 基于用户的协同过滤算法:给用户推荐和他兴趣相似的用户喜欢的物品
  • 基于物品的协同过滤算法:给用户推荐和他之前喜欢的物品相似的物品

  简便起见,我们通常使用准确率、召回率、覆盖率和新颖度来对算法进行离线实验,覆盖率就用最简单的覆盖率定义,新颖度用推荐物品的平均流行度代替。

基于邻域的算法

基于用户的协同过滤算法

  基于用户的协同过滤算法主要包括两个步骤:

  • 找到和目标用户兴趣相似的用户集合
  • 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户

  第一步的关键就是找到和目标用户兴趣相似的用户,我们可以用两个用户兴趣的交集比上兴趣的并集来求得相似度(Jaccard相似度),或者利用余弦相似度计算。

  如果用余弦相似度:

  分子是两个用户兴趣交集的模,分母是两个用户兴趣的模的乘积的平方根。

  要注意的是,有很多用户之间根本就没有兴趣的交集,所以就不需要浪费时间在这种情况的计算上。

  得到用户之间的兴趣相似度之后,UserCF算法会推荐给用户和他兴趣最相似的K个用户最喜欢的若干个物品。

  判断该用户u对某一件物品i的感兴趣程度时的公式如下:

  也即用K个和他兴趣最相似用户的平均兴趣代表这个用户的兴趣。w代表两个用户兴趣之间的相似程度,r指感兴趣程度的大小,这里统一为1。Σ下面的意思是,K个和u兴趣最相似的用户,而且同时要对物品i有过行为。可以这么理解,如果这K个用户都没有对某个物品有过行为,那基本就可以认为他们对该物品都不感兴趣,就不应该加到式子中。

  换句话说,这K个用户,与用户u的相似度决定了他们的话语权,他们表决的方式就是自己是否对该物品有过正面行为。

  最后我们只需要取感兴趣程度TopN的物品出来推荐给用户就好了,当然还要去掉该用户已经有过行为的物品。

  K是UserCF算法的一个重要参数。K的选取会影响UserCF算法的结果。

  一般进行算法评测时,我们会有两个标准算法,分别是MostPopular和Random算法,一个是按最高流行度来,一个是完全随机,都只是简单的去掉用户有过行为的物品。

  UserCF算法的平均性能要远好于以上两个算法。

 

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

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