推荐系统


大纲:

一、推荐系统是什么

二、推荐系统发展历史

三、推荐系统架构

四、推荐系统流程

五、推荐系统算法

六、推荐系统评价指标

七、推荐系统经典数据集

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、推荐系统是什么

1.1 概念根据用户行为信息进行推荐,找到用户感兴趣的物品。

  要区分的三个概念:

  • 分类目录——覆盖少量热门网址站。如 Hao123、Yahoo
  • 搜索引擎——用户有明确需求,知道自己想要什么,通过关键词搜索。如 Google、Baidu
  • 推荐系统——用户没有明确需求,不确定想要什么,通过分析用户的历史行为给用户的兴趣进行建模,进而为用户推荐可能感兴趣的内容。

1.2 分类:在线推荐系统、离线推荐系统

1.3 组成:用户建模模块、推荐对象建模模块、推荐算法模块

1.4 产生原因:信息过载——互联网的出现和普及,给用户带来了大量的信息,满足了用户在信息时代的对信息的需求,但是随着网络的迅速发展而带来的 网上信息量的大幅增长使用户在面对如此庞大的信息时无法获得对自己真正有用的信息,对信息的使用率反而下降,即信息过载;

            ②用户需求不明确   

1.5 作用:①高效连接用户和商品,发现长尾商品

          

           ②留住用户和内容生产者,实现商业目标——推荐系统让用户停留的时间更长,让用户买得更多...       

二、推荐系统发展历史(1964——)

  • 1964年:“信息过载”首次提出;
  • 1990年:“推荐系统(Recommendation System RS)”概念被提及;
  • 1992年:“协同过滤(Collaborative Filtering CF)”概念被提及 ;
  • 1994年:基于用户的CF方法被提出;
  • 1997年:基于内容的推荐系统CB(Content-based recommendations CB)被提出;
  • 2001年:基于物品的CF方法(Item-Based CF)被提出;
  • 2003年:Item-Based CF出现,Amazon的推荐系统被广为人知,使得CF成为主流推荐模型;
  • 2006年:著名Netflix设下百万赏金求更高性能推荐算法,推动了推荐系统的发展;同年SVD,FunkSVD,BiasSVD(奇异值分解)用更高效的矩阵分解做推荐系统;
  • 2007年:RBCF出现,深度学习和推荐系统的首次结合;
  • 2010年:FM(Factor Machine)算法摆脱了稀疏场景下人工提取特征的烦恼;
  • 2011年:  SLIM(Sparse Linear Methods--SVD)被Top-N推荐的稀疏线性模型;
  • 2013年:微软提出DSSM(Deep Structured Semantic Mode)双塔模型,利用深度神经网络把文本(句子,Query,实体等)表示成向量,应用于文本相似度匹配场景下的一个算法,信息检索、文本排序、问答、图片描述、及机器翻译等中有广泛应用;
  • 2014年:Facebook提出GBDT(GradientBoostingDecisionTree梯度提升决策树)自动提取特征再利用LR进行点击率评估;GBDT是机器学习算法,XGBoost(Extreme Gradient Boosting极限梯度提升)是该算法的工程实现;
  • 2016年:基于NLP,item2vec(Vector)把用户当做句子学习;
  • 2017年:NCF(Net CF基于神经网络的协同过滤)结合矩阵分解和MLP(Multi-Layer Perception)多层感知机;
  • 2019年:深度学习在推荐邻域的如火如荼;

三、推荐系统架构

业务构架

技术构架

四、推荐系统流程

五、常见推荐系统算法

  • 5.1 CF——协同过滤系统——物以类聚人以群分

 5.1.1 基于内存的CF

 5.1.1.1 UserCF

推荐系统中最古老的算法,标志着推荐系统的诞生;

向用户推荐与其兴趣相似的用户喜欢且目标用户不知道的项目;

通过用户的历史行为相似度来衡量;

举例

基于用户的协同过滤推荐简单的说,如果 A、B 两个用户都购买了 x、y、z 三本图书,并且给出了 5 星的好评。那么 A 和 B 就属于同一类用户。可以将 A 看过的图书 w 也推荐给用户 B。

 

缺点

    1、UserCF 需要维护一个用户兴趣相似度的矩阵,随着用户数目增多,维护用户兴趣相似度矩阵的代价越大。计算用户兴趣相似度矩阵的运算时间复杂度和空间复杂度的增长和用户数的增长*似于*方关系。

    2、当数据发生变化的时候,之前计算出的用户之间的相似度不稳定。

    3、基于用户的协同过滤很难对推荐结果作出解释。

 

实用场景 —— 新闻推荐:

 

  1、个性化新闻推荐更加强调抓住新闻热点,热门程度和时效性是个性化新闻推荐的重点,而个性化相对于这两点略显次要。

 

  2、新闻的更新非常快,物品相关度的表也需要很快更新,虽然 UserCF 对于新用户也需要更新相似度表,但在新闻网站中,物品的更新速度远远快于新用户的加入速度,而且对于新用户,完全可以给他推荐最热门的新闻。

 

 5.1.1.2 ItemCF

向用户推荐与他之前喜欢项目相似的项目;

通过分析用户的行为记录计算项目之间的相似度;

举例

基于物品的协同过滤推荐简单的说,如果用户 A 同时购买了商品 x 和商品 y,那么说明商品 x 和商品 y 的相关度较高。当用户 B 也购买了商品 x 时,可以推断他也有购买商品 y 的需求。

 

缺点

   1、ItemCF 需要维护一个物品相似度矩阵,随着物品数目增多,维护物品相似度矩阵的代价越大。

实用场景 —— 图书、电子商务和电影网站:

    1、在这些网站中,用户的兴趣是比较固定和持久的。这些系统中的用户大都不太需要流行度来辅助他们判断一个物品的好坏,而是可以通过自己熟 悉领域的知识自己判断物品的质量。

   2、这些网站的物品更新速度不会特别快,一天一次更新物品相似度矩阵对它们来说不会造成太大的损失,是可以接受的。

 

5.1.2 基于模型的CF

根据已有的数据应用统计和机器学习构建一个用户偏好模型,通过得到的模型对测试数据或真实数据的协同过滤任务与预测用户对项目的潜在爱好;

包括:基于分类算法、回归算法、聚类算法;

    基于矩阵分解的推荐;

    基于神经网络算法;

    基于图模型的算法;

基于协同过滤推荐系统优点:

1、模型通用性强:模型不需要太多对应数据领域的专业知识。
2、简单易用:工程实现简单且效果不错。

基于协同过滤推荐系统缺点:

1、用户的冷启动:当没有新用户任何数据的时候,无法较好的为新用户推荐物品。
2、物品的冷启动:当新物品没有用户行为数据是,无法通过协同过滤的方式进行推荐。
3、没有考虑到情景的差异:比如根据用户所在的场景进行推荐。
4、无法得到一些小众的独特喜好:这块是基于内容的推荐比较擅长的。
  • 5.2 CB——基于内容的推荐系统

主要根据用户已经选择或评分的项目来发掘其他内容上相似的项目推荐。

基于内容的推荐方法源于信息检索和过滤研究。

过程

1、给出物品表示:为每个物品抽取出一些特征来表示此物品;
2、学习用户偏好:利用一个用户过去喜欢(及不喜欢)的物品的特征数据,来学习出此用户偏好;
3、生成推荐列表:根据候选物品表示和用户偏好,为该用户生成其最可能感兴趣的 n 个物品。

 基于内容的推荐系统优点:

1、用户之间的独立性:既然每个用户的用户偏好都是依据他本身对物品的喜好获得的,自然就与他人的行为无关。而协同过滤推荐刚好相反,协同过滤推荐需要利用很多其他人的数据。基于内容推荐的这种用户独立性带来的一个显著好处是别人不管对物品如何作弊(比如利用多个账号把某个产品的排名刷上去)都不会影响到自己。

2、好的可解释性:如果需要向用户解释为什么推荐了这些产品给他,你只要告诉他这些产品有某某属性,这些属性跟你的品味很匹配等等。

3、新的物品可以立刻得到推荐:只要一个新的物品加进物品库,它就马上可以被推荐,被推荐的机会和老的物品是一致的。而协同过滤推荐对于新的物品就很无奈,只有当此新的物品被某些用户喜欢过(或打过分),它才可能被推荐给其他用户。所以,如果一个纯协同过滤推荐的推荐系统,新加进来的物品就永远不会被推荐。

基于内容的推荐系统缺点:

1、物品的特征抽取一般很难:如果系统中的物品是文档,那么我们现在可以比较容易地使用信息检索里的方法来“比较精确地”抽取出物品的特征。但很多情况下我们很难从物品中抽取出准确刻画物品的特征,比如电影推荐中物品是电影,社会化网络推荐中物品是人,这些物品属性都不好抽。其实,几乎在所有实际情况中我们抽取的物品特征都仅能代表物品的一些方面,不可能代表物品的所有方面。这样带来的一个问题就是可能从两个物品抽取出来的特征完全相同,这种情况下基于内容的方法就完全无法区分这两个物品了。

2、无法挖掘出用户的潜在兴趣:既然基于内容推荐只依赖于用户过去对某些物品的喜好,它产生的推荐也都会和用户过去喜欢的物品相似。如果一个人以前只看与推荐有关的文章,那基于内容推荐只会给他推荐更多与推荐相关的文章,它不会知道用户可能还喜欢数码。

3、无法为新用户产生推荐:新用户没有喜好历史,自然无法获得他的用户偏好,所以也就无法为他产生推荐了。当然,这个问题协同过滤推荐也有。

  • 5.3 混合推荐系统

  由于CF、CB都有各自的局限性,因此在实际推荐系统中大多把不同的推荐算法进行结合,提出混合推荐算法;且根据实际情况提出的混合推荐系统具有比上述独立的推荐系统更好的准确率;目前最常见的推荐系统是基于协同过滤和基于内容的,也有其他类型的组合。

六、推荐系统评价指标

6.1 测评方法

在线评价:设计在线用户实验,根据用户在线实时反馈或事后问卷调查等结果来衡量推荐系统的表现;

离线评价:将训练集的信息作为算法的输入进行推荐,然后将推荐结果和测试集的信息进行比较并利用已有的评价指标来衡量推荐系统的表现;

6.2 推荐算法的评价指标

衡量的指标很多,不需要都去了解,按需要

6.2.1 预测评分的准确度

   指标很多,这类指标思路简单,即计算预测评分和真实评分的差异

6.2.1.1 MAE——*均绝对误差

           

6.2.1.2 MSE——*均*方误差

           

6.2.1.3 RMSE——均方根误差

          

6.2.1.4 NMAE——标准*均绝对误差

          

6.2.2 分类准确度——衡量推荐系统能够真正预测用户喜欢或者不喜欢某个商品的能力。

  

上述一系列指标对于没有二分喜好的系统不适用

引入AUC指标来衡量推荐系统的准确性

优势:AUC不受推荐系统列表长度和喜好阈值影响,所以该指标被广泛应用于推荐系统中

含义:ROC曲线下的面积

七、推荐系统经典数据集

  1. MovieLens
  2. BookCrossing
  3. Jester Joke
  4. Usenet Newsgroups
  5. Netflix

文中不少借鉴此处:https://zhuanlan.zhihu.com/p/351493402

相关