《推荐系统实践》读书笔记

第1章 好的推荐系统

---1.1 什么是推荐系统

  • 推荐系统的任务就是联系用户和物品,用于在用户没有明确目的的时候帮助他们发现感兴趣的内容.
  • 推荐系统能够用于解决信息过载问题.

---1.2 个性化推荐系统的应用

  • 推荐系统通常由前台的展现界面,后台的日志系统以及推荐算法系统3部分构成的.
  • 推荐系统在电商平台(如Amazon),电影和视频网站(如Netflix,YouTube),音乐电台,社交网络(如Facebook),个性化阅读(Google Reader)都有大量应用.

---1.3 推荐系统评测

  • 一个好的推荐系统是可以令用户,物品提供者和提供推荐系统的网站三方双赢的系统.它不只能准确预测用户的行为,还要可以扩展用户的视野.
  • 推荐系统中主要有3种评测推荐效果的实验方法,最终上线前通常要依次完成:
  1. 离线实验:经过日志系统得到用户行为数据,并用离线指标评测算法在测试集上的预测结果.缺点是没法计算商业上关注的指标.
  2. 用户调查:直接询问用户,来得到用户的主观感觉.缺点是调查成本高,并且很难保证统计意义.
  3. 在线实验:将新算法上线作AB测试,即对不一样用户采用不一样算法,进行比较.缺点是周期比较长,而且对大型网站的多层架构来讲可能会相互干扰.
  • 推荐系统经常使用的评测指标有:
  1. 用户满意度:通常经过用户调查或在线实验得到,主要经过对用户行为的统计获得.
  2. 预测准确度:能够经过离线实验计算,使用训练集和测试集.根据不一样的研究方向分为评分预测(RMSE,MAE),TopN推荐(准确率,召回率).
  3. 覆盖率:描述一个推荐系统对物品长尾的发掘能力,最简单的定义为推荐系统可以推荐出来的物品占总物品集合的比例.较详细的定义采用信息熵基尼系数.
  4. 多样性:描述了推荐列表中物品两两之间的不类似性,若是s(i,j)表示物品i和j之间的类似度,那么某一用户u的推荐列表R(u)的多样性.不一样的类似度对应不一样的多样性.
  5. 新颖性:尽可能给用户推荐他们之前没有据说过的物品.
  6. 惊喜度:指推荐给用户与他的历史兴趣不类似,但却让他以为满意的物品.
  7. 信任度:指用户对推荐系统的信任程度.提升方法是增长透明度(提供推荐解释)和考虑用户的社交网络信息.
  8. 实时性:一方面实时地更新推荐列表,另外一方面须要将新加入系统的物品推荐给用户.
  9. 健壮性:先用经常使用的攻击方法向数据集中注入噪声数据,而后再次生成推荐列表,若结果变化不大就说明算法健壮性强.另外也能够使用代价比较高的用户行为,以及使用数据前先进行攻击检测.
  10. 商业目标:根据不一样的网站有不一样的商业目标.

第2章 利用用户行为数据

  • 推荐算法须要自动发掘用户行为数据,从用户的行为中推测出用户的兴趣.
  • 基于用户行为分析的推荐算法称做协同过滤算法.

---2.1 用户行为数据简介

  • 用户行为数据最简单的存在形式是日志.
  • 用户行为按反馈的明确性分为显性反馈行为隐性反馈行为.若是按反馈的方向还能够分为正反馈负反馈.
  • 一个用户行为能够用6部分表示:产生行为的用户,行为的对象,行为的种类,产生行为的上下文,行为的内容和权重.

---2.2 用户行为分析

  • 互联网上的不少数据分布都知足长尾分布f(x)=ax^k,也就是少部分物品占据了大多数出现次数,
  • 用户越活跃,越趋向于浏览冷门的物品.

---2.3 实验设计和算法评测

  • 采用K折交叉验证进行离线实验.
  • 采用召回率(有多少比例的评分记录包含在最终的推荐列表中),准确率(最终的推荐列表中有多少比例是发生过的评分记录),覆盖率(最终的推荐列表中包含多大比例的物品)和新颖度(推荐列表中物品的平均流行度)做为评测指标.

---2.4 基于邻域的算法

  • 基于邻域的算法分为基于用户的协同过滤和基于物品的协同过滤.
  • 基于用户的协同过滤(UserCF):
  1. 基础算法:找到和目标用户兴趣类似的用户集合,找到这个集合中的用户喜欢的,且目标用户没有据说过的物品推荐给目标用户.能够经过Jaccard类似度余弦类似度计算兴趣类似度.
  2. 计算余弦类似度的过程当中,能够创建物品到用户的倒排表,每一个物品都保存对该物品产生过行为的用户列表.对于其中每一个物品对应的用户列表,将其中的两两用户对应的稀疏矩阵C[u][v]加1,就获得了全部用户之间不为0的C[u][v]
  3. 获得用户之间的兴趣类似度后,经过兴趣类似度和对应用户对物品的兴趣加权计算获得物品列表,选取其中目标用户没有过行为的物品进行推荐.
  4. UserCF的一个重要参数是类似用户数K.它与准确率和召回率没有线性关系,与流行度成正比,与覆盖率成反比.
  5. 用户类似度的改进:两个用户对冷门物品采起过一样的行为更能说明他们兴趣的类似度,所以应该惩罚热门物品对类似度的影响:.
  6. UserCF的实际使用并很少.算法

  • 基于物品的协同过滤(ItemCF):
  1. ItemCF的优势是计算难度小于UserCF,并且容易对推荐结果做出解释,是目前业界应用最多的算法.
  2. 基础算法:计算物品类似度,根据物品的类似度和用户的历史行为给用户生成推荐列表.
  3. 物品类似度能够简单地计算喜欢物品i的用户中喜欢物品j的比例,但问题是会形成热门物品和其余任何物品都有很大类似度.所以须要惩罚物品j的权重.其中蕴含的假设是每一个用户的兴趣都局限在某几个方面,因此两个物品的类似度高就意味着它们极可能属于同一个领域.
  4. 相似地,使用用户-物品倒排表来求类似度矩阵.而后计算用户u对物品的兴趣列表和某物品与该兴趣列表中物品类似度的加权和来获得物品列表.
  5. ItemCF的一个重要参数是物品数量K.它与准确率和召回率没有线性关系,与流行度在必定范围内正相关,与覆盖率负相关.
  6. 在实际使用中,活跃用户对物品类似度的贡献应该小于不活跃的用户,并且为了不类似度矩阵太稠密,过于活跃的用户会直接被忽略.这称为ItemCF-IUF,能够明显提升覆盖率,下降流行度.
  7. 物品类似度的归一化能够提升推荐的准确率,覆盖性和多样性.由于热门物品的类内物品类似度通常比较大,而归一化使得同类物品之间的类似度相等.
  • UserCF的推荐更社会化,反映了用户所在的小兴趣群体中物品的热门程度,须要维护一个用户类似度矩阵.ItemCF的推荐更个性化,反映了用户本身的兴趣传承,须要维护一个物品类似度矩阵.所以UserCF适合新闻推荐这种注重热门程度时效性,且物品更新速度很快的内容,而ItemCF则适合图书,电影,电商网站这种用户兴趣比较固定和持久,且物品更新速度不会太快的内容.
  • ItemCF的问题是,即便惩罚热门物品的权重,它仍会得到较大的相 似度.解决方法是继续加大对热门物品的惩罚,好比,a取[0.5,1].或人为引入物品的内容数据.

--2.5 隐语义模型

  • 隐语义模型的核心思想是经过隐含特征联系用户兴趣和物品.