推荐系统概论

如果我们能为搜狗的用户推荐更合适的广告,让广告点击率增长1%,就能为公司增加上千万的利润。
——《深度学习推荐系统 ·王喆》

随着当今技术的飞速发展,数据量也与日俱增,人们越来越感觉在海量数据面前束手无策。正是为了解决信息过载(Information overload)的问题,人们提出了推荐系统(与搜索引擎对应,人们习惯叫推荐系统为推荐引擎)。当我们提到推荐引擎的时候,经常联想到的技术也便是搜索引擎。不必惊讶,因为这两者都是为了解决信息过载而提出的两种不同的技术,一个问题,两个出发点,我更喜欢称它们两者为兄弟,亲近而形象。
——《推荐系统从入门到接着入门》


  推荐系统是指通过从大规模的用户-物品交互数据中,挖掘潜在的用户-物品相关性,并实现个性化推荐的系统,狭义上讲,推荐系统是一套提供个性化推荐的系统,而广义上讲,则是一项科学研究或工程问题。

  博主认为,推荐系统是一种改进的搜索引擎,它们的本质都是从海量数据中获取用户最想要的信息,但二者最大的区别在于,搜索引擎是一种用户主动-系统被动的信息检索方法,而推荐系统则是系统主动-用户被动的信息检索方法。例如,我们如果想要了解《统计学习方法》中的“感知机”模型,我们通常会主动地去到百度或谷歌搜索“感知机”有关的介绍,因此搜索引擎完全由用户决定;而如果用户经常阅读关于“感知机”的知识,系统会检测大量的用户学习完“感知机”后会去搜索“支持向量机”,则系统会主动发现这一相关性并推荐给用户,因此推荐系统是由系统自发地完成。

1、推荐系统的作用和意义

  推荐系统主要体现的作用价值可以从用户公司两个角度介绍:

  • 用户角度:推荐系统解决的是在“信息过载”的情况下,用户如何高效地获取到感兴趣的信息。推荐系统主要利用用户与物品之间的历史交互数据,试图猜测用户可能喜欢的内容。
  • 公司角度:推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户粘性、提高用户转化率的问题,从而达到公司商业目标增长的目的。

几个特殊的目标:

  • 用户留存率:针对一个新上线的系统,用户使用该产品后能够持续使用该产品的比率;
  • 点击率:对于一个广告或商业行为,能够获得的曝光率、用户访问的比率;
  • 用户转化率:由用户的点击行为转移到公司可以获得实际的盈利的行为(例如购买、观看等)的比率。

  不同公司的目标取决于其商业的盈利目的,例如对于YouTube(全球最大的视频分享平台),其商业目标是最大化视频被点击(点击率)以及用户观看的时长(完播率),同时也会最大化内置广告的点击率;对于淘宝等电商平台,除了最大化商品的点击率外,最关键的目标则是最大化用户的转化率,即由点击到完成商品购买的指标。在双11等大型购物时段,推荐系统可以直接带来近千亿的利润。

推荐系统的形式化定义:
对于用户 【推荐系统】推荐系统概论_数据,在特定的场景 【推荐系统】推荐系统概论_深度学习_02,针对海量的物品信息,构建一个函数 【推荐系统】推荐系统概论_数据_03,预测用户对特定候选物品 【推荐系统】推荐系统概论_深度学习_04

2、推荐系统的架构

  一般地,推荐系统的商业架构可以抽象为如下体系:

【推荐系统】推荐系统概论_推荐系统_05


  推荐系统主要分为两个技术方面,分别是:

(1)数据信息部分: 主要解决数据和信息处理部分。主要考虑获取什么样的特征信息(用户特征、交互历史、物品特征),怎样获取数据(海量数据挖掘、大数据批流处理、客户端服务器实时获取),如何存储数据(分布式数据库);

[1] 数据获取的方式可总结为三种,分别是客户端及服务器端实时数据处理流处理平台准实时数据处理以及大数据平台离线数据处理。三者在实时性上依次递减,在海量数据处理能力依次递增。

[2] 获取的特征主要分为用户特征、物品特征和交互历史:

  • 用户特征:用户基本信息、社交网络等;
  • 物品特征:物品分类标签、图片或描述信息等;
  • 交互历史:用户与物品之间的购买记录、订单、日志列表等

(2)算法模型部分: 如何对数据进行分析(数据分析、机器学习),如何为用户进行推荐(推荐模型)以及如何进行评估(部署、迭代测试、线上推断)。

[1] 推荐系统的模型部分(如图)主要可以细化为召回层排序层算法层

  • 召回层(也称粗排序):使用高效的召回策略或算法,快速高效地从海量数据中召回出用户可能感兴趣的内容。召回层只要保证尽可能全即可。召回层通常返回的数据是千百级别的;
  • 排序层(也称精排序):利用算法(机器学习或深度学习)对召回的数据进行精排,挑选出更加准确的数据;排序层通常返回的是数十级别的;
  • 算法层(也称再排序层):通过一些业务具体有关的指标(例如流行度、多样性、新鲜度)等进行一些补充和调整。

最终可将数十级别的数据推荐给用户。

[2] 目前推荐系统模型可以分为机器学习方法和深度学习方法,经典的推荐模型可以总结为如下:

  • 机器学习方法:协同过滤(user-CF/item-CF)、矩阵分解(MF)、逻辑回归(LR)、特征交叉(POLY2)、因子分解机(FM)、带有特征域的因子分解机(FFM)、大规模分段线性函数(LS-PLM)、梯度提升法(LR+GBDT
  • 深度学习方法:自编码器(AutoRec)、神经网络+协同过滤(NeuralCF)、深度特征交叉(Deep Crossing)、带有点积的特征交叉(PNN)、记忆+泛化(Wide&Deep)、神经网络+因子分解机(FNNDeepFMNFM)、注意力机制(AFMDIN)、序列建模(DIEN)、强化学习(DRN

当然,目前也有基于多任务学习迁移学习小样本学习主动学习联邦学习等新的研究模型,这些都致力于解决在实际应用中特定的问题。

3、推荐系统的研究问题

  先前大多数工作在于研究推荐系统的模型部分。推荐系统模型的训练可分为离线训练(全量学习)和在线更新(增量学习),前者可以保证尽可能的学习到全局最优解,但往往训练时间长、代价高;后者满足实时的特点,但可能陷入局部最优解。

  推荐系统的评估部分,一般有离线评估(即通过准确率P、召回率R、F1值,以及包括MAP、P@N等排序指标对模型进行评估)和线上评估(典型的评估方法是A/B测试,快速线上测试Interleaving等);

  另外,推荐系统技术层面上还包括表示学习(Representation Learning),例如如何对用户和物品的特征数据进行表示,通常对于机器学习方法,可以使用特征工程,包括数据归一化、缺失值处理、主成分分析、聚类分析等;对于深度学习,通常采用Embedding技术(Word Embedding、Graph Embedding等)。

  推荐系统目前比较棘手的几个问题,简要罗列:

  • 用户隐私保护: 如何能够避免获取大量用户敏感信息,或避免过度侵犯用户隐私的条件下,保护用户隐私且不破坏推荐的效果。该类问题主要属于隐私保护密码学问题
  • 跨平台、跨系统的推荐: 同样一个用户可能使用多个不同的平台或系统,但往往不同平台(公司)之间并不能实现数据共享,因此如何能够深度挖掘不同平台之间的信息是主要问题。目前比较流行的是联邦学习
  • 冷启动: 用户冷启动和物品冷启动,主要体现在缺乏用户或物品的特征,以及用户-物品交互数据,使得系统无法知道用户的行为特征,致使推荐模型无法获得较为准确的预测,正所谓巧妇难为无米之炊。解决冷启动可以采用主动学习迁移学习等;
  • 探索与利用: 如何平衡探索与利用之间的矛盾?探索,亦即发掘用户的一些新的特征,往往这些行为并非存在交互数据,或并非是预测的最佳值;利用,则指充分利用用户已有的数据以提供更为精确的推荐。探索可以进一步扩充对用户特征的发现机会,利用则能够提升推荐的性能。该类问题常使用强化学习来解决;
  • 非均衡长尾: 非均衡长尾问题是机器学习和深度学习比较普遍的问题,其体现在大多数的用户只有非常少的行为数据,针对非均衡问题,则需要使用迁移学习,或借助外部知识(例如多平台信息融合知识图谱等)。