推荐系统实践

Posted 在那不遥远的地方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统实践相关的知识,希望对你有一定的参考价值。

推荐系统测评

 实验方法
  • 离线实验:准备训练数据测试数据并评估;
  • 用户调查:问卷方式、和用户满意度调查
  • 在线实验:AB测试:AB测试是一种很常用的在线评测算法的实验方法。它通过一定的规则将用户随机分成几组,
  • 并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标比较不同算
  • 法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能。
测评指标:
  • 用户满意度
  • 预测准确度:预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标
  • 评分预测: 均方根误差 RMSE  平均绝对误差MAE
  • TopN推荐:网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
  • 覆盖率:覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。
  • 信息熵度量:这里p(i)是物品i的流行度除以所有物品流行度之和。
  •  

  • 基尼系数度量: ij是按照物品流行度p()从小到大排序的物品列表中第j个物品
  • 多样性:,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。
  • 新颖性:新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。
  • 惊喜度:,如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高
  • 信任度:让用户对推荐结果产生信任是非常重要的。同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而以类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。
  • 实时性
  • 健壮性:而健壮性(即robust,鲁棒性)指标衡量了一个推荐系统抗击作弊的能力。
  • 商业目标:,网站评测推荐系统更加注重网站的商业目标是否达成,而商业目标和网站的盈利模式是息息相关的。
测评维度:
  • 用户维度  主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
  • 物品维度  包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
  • 时间维度  包括季节,是工作日还是周末,是白天还是晚上等。

 用户行为数据

  • 用户显性反馈数据:显性反馈行为包括用户明确表示对物品喜好的行为。主要方式就是评分和喜欢/不喜欢。
  • 用户隐性反馈数据:隐性反馈行为指的是那些不能明确反应用户喜好的行为。最具代表性的隐性反馈行为就是页面浏览行为。
 
用户活跃度和物品流行度:长尾分布
        一般来说,不活跃的用户要么是新用户,要么是只来过网站一两次的老用户。那么,不同活跃度的用户喜欢的物品的流行度是否有差别?一般认为,新用户倾向于浏览热门的物品,因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。
 
用户行为数据设计的推荐算法
  • 基于邻域的方法(neighborhood-based)
  • 隐语义模型(latent factor model)
  • 基于图的随机游走算法(random walk on graph)
其中最主要的方法为基于邻域的算法:
  • 基于用户的协同过滤算法  这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。
  • 基于物品的协同过滤算法  这种算法给用户推荐和他之前喜欢的物品相似的物品。
 
 
基于用户的协同过滤算法:
  • (1) 找到和目标用户兴趣相似的用户集合。(相似性计算,基于距离)
  • (2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
改进 1:
        如果对用户两两计算相似度,复杂度过高O(n*n) ,因此可以首先计算item-user的倒排表,然后计算用户相似度,这样可以过滤掉共同物品为0的用户
 
改进 2:
        考虑物品本身的流行度,
 

 

 
 
基于物品的协同过滤算法
  • (1) 计算物品之间的相似度。
  • (2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。
  • 共现的概率
 
改进 1 :user-item倒排表 
 
改进 2 用户活跃度的影响
 
 

 

 

隐语义模型

        隐语义模型是最近几年推荐系统领域最为热门的研究话题,它的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品。
        隐含语义分析技术从诞生到今天产生了很多著名的模型和方法,其中和该技术相关且耳熟能详的名词有pLSA、LDA、隐含类别模型(latent class model)、隐含主题模型(latent topic model)、矩阵分解(matrix  factorization)。这些技术和方法在本质上是相通的,其中很多方法都可以用于个性化推荐系统。
 
        隐性反馈数据中,没有负样本 只有正样本;在隐性反馈数据集上应用LFM解决TopN推荐的第一个关键问题就是如何给每个用户生成负样本。
  • 对于一个用户,用他所有没有过行为的物品作为负样本。
  • 对于一个用户,从他没有过行为的物品中均匀采样出一些物品作为负样本。
  • 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,但采样时,保证每个用户的正负样本数目相当。
  • 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,但采样时,偏重采样不热门的物品。
        对于第一种方法,它的明显缺点是负样本太多,正负样本数目相差悬殊,因而计算复杂度很高,最终结果的精度也很差。对于另外3种方法,Rong  Pan在文章中表示第三种好于第二种,而第二种好于第四种。
  • 对每个用户,要保证正负样本的平衡(数目相似)。
  • 对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品。
LFM和基于邻域的方法的比较
  • 理论基础  LFM具有比较好的理论基础,它是一种学习方法,通过优化一个设定的指标建立最优的模型。基于邻域的方法更多的是一种基于统计的方法,并没有学习过程。
  • 离线计算的空间复杂度 :LFM大量节省了训练过程中的内存
  • 离线计算的时间复杂度:在一般情况下,LFM的时间复杂度要稍微高于UserCF和ItemCF,这主要是因为该算法需要多次迭代。但总体上,这两种算法在时间复杂度上没有质的差别。
  • 在线实时推荐:  UserCF和ItemCF在线服务算法需要将相关表缓存在内存中,然后可以在线进行实时的预测。
  • 推荐解释:  ItemCF算法支持很好的推荐解释,它可以利用用户的历史行为解释推荐结果。但LFM无法提供这样的解释,它计算出的隐类虽然在语义上确实代表了一类兴趣和物品,却很难用自然语言描述并生成解释展现给用户。
 

推荐系统冷启动问题

  • 用户冷启动
  • 物品冷启动
  • 系统冷启动
 
利用用户注册信息
  • 人口统计学信息  包括用户的年龄、性别、职业、民族、学历和居住地。
  • 用户兴趣的描述  有一些网站会让用户用文字描述他们的兴趣。
  • 从其他网站导入的用户站外行为数据  比如用户通过豆瓣、新浪微博的账号登录,就可以在得到用户同意的情况下获取用户在豆瓣或者新浪微博的一些行为数据和社交网络数据。
选择合适的物品启动用户的兴趣
        一般来说,能够用来启动用户兴趣的物品需要具有以下特点
  • 比较热门
  • 具有代表性和区分性
  • 启动物品集合需要有多样性
 
利用物品的内容信息
发挥专家的作用
 

利用用户标签数据

        用户用标签来描述对物品的看法,因此标签是联系用户和物品的纽带,也是反应用户兴趣的重要数据源,如何利用用户的标签数据提高个性化推荐结果的质量是推荐系统研究的重要课题
 

 

数据稀疏性
 
        对于新的物品或者用户,标签数量非常少,此时需要对标签进行扩展 ---基于标签的相似性
 
标签清理:除去词频很高的停止词、同义词  等;类比自然语言处理 
 
 

## 利用上下文信息

时间上下文信息
  • 用户兴趣是变化的
  • 物品也是有生命周期的
  • 季节效应
 
系统时间特性的分析:
  • 数据集每天独立用户数的增长情况
  • 系统的物品变化情况 :网站新闻增长情况,商品增长情况等
  • 用户访问情况: 用户的平均活跃天数
 
时间上下文推荐算法:
 
  • 最近热门推荐
  • 时间上下文itemCF算法: 最常用的是基于物品的个性化推荐系统
    • 物品相似度
    • 在线推荐 : 用户近期行为更关键
  • 时间上下文相关的userCF算法
    • 用户兴趣相似度
    • 相似兴趣用户最近行为
  • 地点上下文
   
 
 

以上是关于推荐系统实践的主要内容,如果未能解决你的问题,请参考以下文章

《推荐系统实践》 5. 推荐系统实例

《推荐系统算法实践》

推荐系统实践(项亮)— 后记

Spark推荐系统实践

[论文解毒]优酷推荐系统实践:个性化惊喜推荐系统PURS

推荐系统学习大纲与实践!