推荐系统入门介绍

前言

由于最近的研究内容与推荐系统相关,因此学习相关的概念。所总结的内容大多来自于网上推荐系统的相关内容,在文后会列出参考地址。

1. 推荐系统的产生

推荐系统是在互联网快速发展(特别是移动互联网)之后的产物,随着用户规模的爆炸增长以及供应商提供的物品的种类越来越多(淘宝上有几千万商品),用户身边充斥着大量信息,这时候推荐系统就发挥了用武之地。推荐系统本质上是在用户需求不明确的情况下, 从海量的信息中为用户寻找其感兴趣的信息的技术手段。推荐系统结合用户的信息(地域,年龄,性别等),物品信息(价格,产地等),以及用户过去对物品的行为(是否购买,是否点击,是否播放等),利用机器学习技术构建用户兴趣模型,为用户提供精准的个性化推荐。

推荐系统广泛用于各类互联网公司,基于上面的介绍,只要存在大量的“供用户消费的商品”的互联网产品,推荐系统就有用武之地。其广泛应用于电商网站、视频、音乐、资讯类、生活服务类、交友类。

推荐系统的定义如下:不需要用户提供明确的需求,通过分析用户的历史行为给用户的兴趣进行建模,从而主动给用户推荐能够满足他们兴趣和需求的信息,与搜索不同的是搜索引擎需要的是精准的关键词,而推荐与之不同的是不需要用户提出精准的需求,而是根据用户的使用历史对他的兴趣进行建模,从而主动给用户推荐满足他们需求和兴趣的信息。

推荐系统的前提

  • 信息过载
  • 用户需求不明确

推荐系统的目标

  • 高效连接用户和物品,发现长尾商品
  • 留住用户和内容生产者,实现商业目标

推荐系统适应的场景非常的多,可以包括电商、电影视频、阅读、音乐、广告等等场景。而相应不同的业务场景关心的优化目标是不一样的,没有一套标准的流程答案,而且完整的推荐系统是由前台的展示页面、后台的日志系统以及推荐算法等多个方面构建而成,所以推荐系统实际效果是受到多方面的影响的,不单单就考虑推荐算法的问题,有可能是展示界面的问题等等。

总结:

  1. 推荐系统是一项工程技术解决方案,要将推荐系统落地到业务上需要大量的工程开发,涉及到日志打点,日志收集,ETL,分布式计算,特征工程,推荐算法建模,数据存储,提供接口服务,UI展示与交互,推荐效果评估等各个方面,推荐系统是一项庞大复杂的体系工程;

  2. 推荐系统是机器学习的一个分支应用,推荐系统大量使用机器学习技术,利用各种算法构建推荐模型, 提升推荐的精准度,惊喜度,覆盖率等,甚至是实时反馈用户的兴趣变化(如今日头条APP下拉展示新的新闻,实时反馈用户的兴趣变化);

  3. 推荐系统是一项交互式产品功能,产品为推荐系统提供载体,用户通过使用产品触达及触发推荐系统,推荐系统为用户提供个性化的推荐, 从而提升用户体验;

  4. 推荐系统是一种为用户提供感兴趣信息的便捷渠道,通过为用户提供信息创造商业价值;

2. 推荐系统三要素

推荐系统中的三个要素:三要素指的是挖掘用户兴趣的信息源。

主要分为三个方面:

用户特征:年龄(如新闻,视频推荐 不同年龄的人关注内容不一样),职业(职业不同,关注内容也不一样),地域,性别等。这些我们都可以统称为用户的画像特征。这些用户画像中特征的变化性有不同的特点:如年龄是逐年稳定增加,职业(因人而变,有的长久不变,有的经常变化),性别(基本不变),地域(也会变化)。

商品特征:类型(车,手机,体育新闻,娱乐新闻等),商品内容(车的品牌,颜色,大小;手机的品牌,智能程序;足球新闻,篮球新闻;某明星娱乐新闻;歌曲的演唱者等),商品展示的位置(置顶,边框,角落),展示的方式等。这些我们称为商品特征

行为(用户对商品的行为 )特征:购买。长时间阅读某新闻;点击某广告并快速关闭或长时间停留;完事听完某歌 曲并短时间内重复听。这些特征称为用户对商品行为特征,简称行为特征。

3. 推荐系统算法

3.1 基于内容 collaborative filtering based recommendation(CB)

系统向用户推荐与他们过去兴趣相似的物品。在这种方法中,系统会事先对物品标记上相应的属性特征,然后提取用户已购买物品的属性特征作为用户的偏好。当需要产生推荐时,系统会计算待推荐物品的属性特征与已购买物品的属性特征之间的相似度,然后取相似度最高的N个物品产生推荐。这类方法是从物品的信息上进行推荐的,拿视频推荐来说,视频有标题、国别、年代、演职员、标签等信息,用户以前看过的视频,就代表用户对这些视频有兴趣,比如用户偏好恐怖,科幻类的电影,我们就可以根据这些兴趣特征为用户推荐恐怖科幻类的电影。

优点在于说不需要以来于用户对物品进行评价信息,可以做到比较精准的推荐
缺点在于较为依赖于物品的标签质量,而且不具有非常强的泛化能力。

3.1.1 基于Logistic regression的推荐

这是最简单,工业中最广泛使用,有效的baseline方法。在广告点击中应用广泛,最简单的思路:用One-hot方法把用户特征和商品特征变成向量表示,将二者拼接起来,作为一个分类器和预测器的输入。

优点:
模型简单有效

缺点:
1)假设用户的兴趣是不变的,
2)输入维度超高(千万级以上的稀疏向量)。对于高维向量采用一些降维的方法,通过模型学习低维的用户特征向量和商品特征向量。
3)简单的特征拼接方法对特征的表示性的不足。15-17年采用因式分解的方法,将两个基本特征关联起来组成二阶的高级特征,如两个用户特征。年龄20,性别女,传统的方法是分别编码成向量然后拼接起来成一个向量;而FM的方法则将二者联合起来,即一个年龄20岁的女性用户。这一高级特征。

3.1.2 基于深度学习中的DNN的方法

如facebook中的基于音乐内容的推荐,Ali的基于广告图片内容的推荐,分别采用基于DNN和CNN的方法去学习商品的内容。它解决Logistic regression方法中需要大量手工提取特征的方法。以音乐内容推荐来说,如果想采用Logistic regression(LR)的方法,我们会手工提取音乐风格,旋律节奏,音高音低,乐器等来表示一首歌曲,这需要非常丰富的经典,而且需要很多音频处理方法。而如果采用DNN或CNN的方法就简单很多,只需要把音频文件转化成向量输入到DNN或CNN模型中,模型自动学习一个高等级的稠密特征向量,该向量比手工提取的特征向量更好的表达一首歌。这也是深度学习得以流行的根本原因。 基于DNN和CNN虽然也有处理用户兴趣随时间变化的能量,但毕竟模型本身不包含时间特征性(时间窗口很小),因此在这类问题上不如RNN性能后(后面会论述)。

总体来讲,DNN和CNN的自动特征提取能力在大多数应用上的推荐性能是超越传统手工方法和某些CF方法。即时性推荐上表现好。模型的训练时间较长,需要大量的有标签数据,高性能计算资源,一旦模型训练好后,推荐速度快,即时性好。可解释性表现差。因为深度学习模型是从最原始的样本特征中自动提取高等级的特征,提取出来的特征人很难去识别,也就无法解释。

3.1.3 基于RNN模型的推荐方法

RNN与DNN,CNN是深度学习中最基本的三个模型,其它模型都是这三类模型的特点。基中RNN的模型结构,类似于编程中的递归,RNN可看作是DNN模型在时间上的递归。这个时间维度可以达到数百。为什么要采用RNN模型来做推荐呢?是因为对用户兴趣的一个更合理的假设:用户的兴趣是随机时间而变化的(具体如何变化,具体的应用场景具体分析)。抓住这一变化过程,就得考虑用户历史行为的时间顺序性,因此,我们需要一种方法把这些历史行为表示成一个可计算的向量,而且考虑行为的顺序性,RNN的模型结构使它成为一个好的选择。

总体来讲,用户的兴趣:分为短期兴趣和长期兴趣。兴趣的变化依具体场景而分析。以新闻推荐为例。突然出现某明星爆炸性新闻,而你对新闻类型的总体的偏好是科技新闻,很少看娱乐新闻。短期兴趣是指大多数人都会关注爆炸性新闻,同样你也会点击该明星的新闻来看,虽然它不在你的长期兴趣偏好内。如果推荐算法能抓你短期的兴趣,再把该明星的其它新闻也推荐给你,能激发你继续阅读。这就是短期兴趣的挖掘。长期兴趣,指一个人固定性的偏好。同样以该新闻为例,如果不是该明星非常有名,事件有爆炸性,你也不会关注,而更好的推荐应该是根据你长期兴趣来,推荐一些科技新闻给你。

基于以上分析:一个较好的推荐系统,应该能抓住用户长期的兴趣和短期兴趣。长期兴趣与用户特征,商品特征,行为特征都有关。短期兴趣与这三要素也有关系,在大部分场景中与行为特征关系更为密切,即用户最近的行为。短期兴趣除了随时间变化,也随空间变化(如旅游场景中,到某一景点,基于位置的推荐),也有其它因素,这里不详述。

我们主要的关注点是用户的兴趣随时间变化。总体来讲,短期兴趣随时间变化快(热点新闻,突发新闻等都会引起用户的兴趣),长期兴趣随时间变化慢,是用户比较固有的一些兴趣,与性格等因素相关。

如何抓住短期兴趣(也称动态兴趣)?

将用户近一段时间内的行为以时间为序排成一个序列,组成用户最近行为序列,作为RNN模型的输入,得到向量,预测将来。这其中的一个问题“近一段时间”怎么确定时间范围。时间范围的确定依场景不同而定。电商以30分钟为一段时间,收集该时间段内的用户行为。有些场景以天,星期等时间段来收集用户行为。

短期兴趣适合匿名或不需要用户登录的场景,以及存在热门商品的情景

如何抓住长期兴趣(也称静态兴趣或变化较慢的兴趣)?

将用户特征,如性别,年龄,职业等;商品特征,如类别,风格等,用DNN或其它模型建模得到高等级的特征向量。这个向量是用户长期兴趣的向量表示,然后再作为分类器或预测器的输入,最终得到推荐结果。因为长期兴趣挖掘有较长的研究历史,因此,最近的研究通常会把短期兴趣挖掘模型作为长期兴趣挖掘模型的一个补充。

相对于短期兴趣,长期兴趣会用到许多用户特征(也称为user profile),因此比较适合需要用户登录,并填写相关资料的场景。

3.2 协同过滤 content based recommendation(CF)

协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息。

其过滤的原理分为两种:

  • 一种是基于用户的协同过滤,是找到与用户A有相同品味的用户B,然后将相似用户B过去喜欢的物品推荐给用户A。
  • 另一种是基于物品的协同过滤,其通过计算物品之间的相似性来代替用户之间的相似性。

基于物品的协同过滤所建立的一个基本的假设:”能够引起用户兴趣的物品,必定与其之前评分高的物品相似”。计算已购买物品i和待推荐物品j之间相似性的基本思想是首先将对两个物品共同做出评分的用户提取出来,如果这些用户对两个物品i和j的评分相近,那么两个物品相似度就高,反之则相似度低,之后将相似度高的待推荐物品放入推荐列表。协同过滤是现在推荐系统中使用较多的方法。

总结:
协同过滤(CF)的方法:协同过滤主要在Amazon中的商品推荐中而著名,主要有基于User-user相似性的协同过滤,基于item-item相似性的协同过滤和两者混合的协同过滤。最基本的协同过滤方法主要利用三要素中的行为特征。即用户的购买记录,对商品的评分记录等。

协同过滤牵涉到用户和商品的交互信息,也就是用户行为,而一般用户对于商品的行为反馈有:

  • 显性反馈行为——用户明确表现出对某项产品和的喜好,比如用户对商品的打分、评论等信息。

  • 隐性反馈行为——不能明确代表用户对产品喜好的行为,比如页面浏览行为等,这类数据量的比较多,常常伴有大量的噪音,需要经过处理和转化才可能有实际的用途。

3.2.1 基于用户的协同过滤算法(UserCF)

其基于的假设是——喜欢类似物品的用户可能有相同或者相似的口味和偏好。UserCF实现的步骤包括:

  • (1)找到与目标用户兴趣相似的用户群;
    假设用户u和v的正反馈的商品集合为N(u),N(v),那么两者兴趣相似度可以记为
    W u , v = ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ⋃ N ( v ) ∣ o r W u , v = ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ∣ ∣ N ( v ) ∣ W_{u,v}=\frac{|N(u)\bigcap N(v)|}{|N(u)\bigcup N(v)|} \quad or\quad W_{u,v}=\frac{|N(u)\bigcap N(v)|}{\sqrt{|N(u)||N(v)|}} Wu,v=N(u)N(v)N(u)N(v)orWu,v=N(u)N(v) N(u)N(v)
  • (2)找到这个集合中用户喜欢的,而目标用户没有听说过得商品推荐之;

UserCF提供的一个参数K表示要考虑目标用户兴趣最相似的人的个数,在保证精度的同时,K不宜过大,否则推荐结果会趋向于热门商品,流行度指标和覆盖度指标都会降低。

3.2.2 基于内容的协同过滤算法(ItemCF)

目前用的最广泛的推荐算法,不是通过商品本身,而是通过用户对商品的行为来计算商品之间的相似度,其假设能够引起用户兴趣的商品,必定与其之前评分高的商品相似。ItemCF的操作步骤包括:

  • (1)计算商品之间的相似度:
    W i , j = ∣ N ( i ) ⋂ N ( j ) ∣ ∣ N ( i ) ∣ o r W i , j = ∣ N ( i ) ⋂ N ( j ) ∣ ∣ N ( i ) ∣ ∣ N ( j ) ∣ W_{i,j}=\frac{|N(i)\bigcap N(j)|}{|N(i)|} \quad or\quad W_{i,j}=\frac{|N(i)\bigcap N(j)|}{\sqrt{|N(i)||N(j)|}} Wi,j=N(i)N(i)N(j)orWi,j=N(i)N(j) N(i)N(j)
    第二个式子比第一个式子好在可以惩罚过热产品j
  • (2)根据商品的相似度和用户的历史行为,给用户生成推荐列表。

3.2.3 基于模型的协同过滤算法

User-CF和Item-CF合称为memory-based CF,而model-based CF使用一般机器学习的方式,其基于样本的用户喜好信息,训练出一个推荐模型,然后根据实时的用户喜好的信息进行预测和计算推荐。

常用的模型包括LSI、贝叶斯网络等。

3.2.4 UserCF和ItemCF之间的比较

在现实的情况中,往往物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,可以离线完成工作量最大的相似性计算步骤,从而大大降低了在线计算量,基于用户的实时性更好一些。但是具体使用的场景,还需要根据具体的业务类型来区分,User-CF偏重于反应用户小群体热点,更具社会化,而Item-CF在于维持用户的历史兴趣,比如:

对于新闻、阅读类的推荐,新闻阅读类的信息是实时更新的,所以ItemCF在这种情况下需要不断更新,而用户对新闻的个性化推荐不是特别的强烈情况,用户有新行为不会导致相似用户的剧烈运动。

对于电子商务类别的,由于用户消费代价比较高,所以对个性化的精确程度要求也比较高,而一段用户有新的行为,也会导致推荐内容的实时变化

协同过滤的算法缺点也很明显,除了上面的冷启动之外,往往商家的用户数量和产品数量都很多,所以矩阵的计算量会非常的大,但某个具体的用户往往买的东西又有限,所以数据同时也是高度稀疏的。

3.2.5 协同过滤可能产生的问题

  1. 冷启动的问题。对新用户或新商品等缺乏购买或评分记录的情况,推荐性能很低。解决冷启动的主要思路是与content-based recommendation相结合。

  2. 推荐的不即时性。对于商品数量多或用户多,交易频繁的场景。要快速计算该用户与其它用户的相似性,对系统是一个很大的挑战。因此它固定周期更新全推荐系统,很难做到实时性。不仅需要高性能计算,而且需要快速计算相似性的方法提升推荐的即时性,比如基于矩阵分解的CF等方法。

  3. 不能解决用户兴趣随时间变化的问题。CF基于明确的购买记录和评分记录,但这些记录代表过去的行为与当前的用户兴趣之间有一定的时间差,在这个时间差中,用户有短期的兴趣变化。为了解决这一问题也有相关基于CF方法的变种,如考虑时序性因素,如temporal dependency。

  4. 不能解决高流行度商品影响相似性计算的问题。在有些场景中流行度高的商品几乎用户都会买,影响了相似性计算。解决方法降低商品流行度在计算中的权重。

  5. 个性化不足的问题。由于计算相似性只是基于商品的拥有量,求交集或并集等操作。并没有考虑用户特征等个性化特征。当然也有一些基于Personality的协同过滤方法。

CF方法在许多场景中得到较同的推荐性能,即时性虽有不足,但解释性较好,通常的解释理由:购买过商品A的用户还购买过B。

3.3 混合推荐系统

利用混合推荐算法更好地避免当前主流推荐算法存在的问题,比如:

  • 1冷启动问题
  • 2数据稀疏性问题
  • 3马太效应(头部”标的物“被越来越多的用户”消费“,而质量好的长尾”标的物“由于用户行为较少,自身描述信息不足而得不到足够的关注)
  • 4灰羊(gray sheep)效应(用户倾向性和偏好不太明显,一家人都用同一个电视,该电视行为比较宽泛,无任何特性)
  • 5投资组合效应(非常多的商家卖相同或者相似的商品,同一本书的不同版本、不同语言
  • 6稳定性(兴趣稳定后,仍是原来的 兴趣推荐,很难改变对用户的认知)

3.3.1 单体的(Monolithic)混合范式

整合多种推荐算法到同一个算法体系中,由这个整合的推荐算法统一提供推荐服务

(1) 特征组合(Feature Combination)混合
(2) 特征增强(Feature Augmentation)混合

第一个算法可能事先预处理第二个算法依赖的数据(如嵌入方法在推荐系统中的应用

3.3.2 并行的(Parallelized)混合范式

(3) 掺杂(Mixed)混合

掺杂方法将多个推荐算法的结果混合起来,最终推荐给某个用户,

(4) 加权(Weighted)混合
(5) 分支(Switching)混合

根据某个判别规则来决定在某种情况发生时,利用某个推荐算法的推荐结果

3.3.3 流水线(Pipelined)混合范式

一个推荐算法生成的推荐结果给到另外一个推荐算法作为输入

(6) 级联(Cascade)混合
(7) 元级别(Meta-level)混合

3.3.4 总结

如果对于特征层面我们无更多的其他知识和信息,单体范式是有价值的,它只需要对主推荐算法及数据结构进行极少的预处理和细微调整就可以了。

并行的混合推荐范式是对业务侵入最小的一种方式,因为混合阶段只是对不同算法的结果进行简单混合。但是由于使用了多个推荐算法的结果,整个推荐的计算复杂度会更高,并且多个算法的推荐结果的得分怎么在同一个框架中具备可比性也是比较棘手的、需要处理好的问题。

流水线式的混合策略是最复杂耗时的一类混合方案,需要对前后的两个算法有很好的理解,并且它们也需要配合好才能最终产生比单个算法好的结果,但如果能将几个差别较大(差别较大,混合后预测的方差会更小,类似遗传中的杂交优势)的推荐算法很好地整合起来时,往往收获也是较大的。

参考

https://blog.csdn.net/Mr_HHH/article/details/89074149
https://zhuanlan.zhihu.com/p/140539453
https://zhuanlan.zhihu.com/p/53364771
https://blog.csdn.net/moakun/article/details/80705532
https://zhuanlan.zhihu.com/p/99450835?utm_source=qq

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值