什么是推荐系统?

一、整体框架

        如果想要保证整个推荐系统的精确度,需要依赖大量的基础样本数据,在离线条件下,将大量样本数据“喂”给推荐模型,推荐模型将会拟合出一套普适性的算法公式,将用户数据输入到算法公式中,在模型的输出层得到一个结果。

        推荐系统的大致结构如上图所示,整体流程如下:

        用户来到推荐页时,根据不同用户的用户数据物品数据、所处的上下文信息等,从海量的候选物品集合中,分别经历召回层、排序层、重新排序,拉回K个用户最有可能喜欢的物品,形成最终的推荐列表(这里的物品为泛指,可以指商品、内容等)。

二、模块构成

1. 用户数据

(1)用户的自有属性,包括年龄、性别、住址、职业、婚恋状态、消费水平等。

(2)用户的行为数据,分为隐式反馈(如浏览、点击、收藏、购买)和显示反馈(如对物品的评分、评价)两类,但其中隐式反馈比显示反馈更有价值,可用性更强。因为前者一定程度上能够代表用户真实的心理诉求,且数据量庞大,而后者数据较为稀疏。

(3)用户的关系数据,分为强关系(如相互关注)与弱关系(相互点赞、评论),关系数据一般也可用于召回策略。

2. 物品数据

一般代表物品的自有属性,比如商品在入库时,一定会有商品的分类、型号、标签等;内容也会有分类、标签、文章长度、关键词等。除此之外还有一些统计类数据,例如商品/内容点击率,历史点赞数等。

3. 上下文信息

描述推荐行为产生时的场景信息,我们最常用的一般是时间(早中晚、节假日)和地点(基于LBS),此外还有天气等等。

4. 候选物品集合

一个庞大的、集海量物品为一体的“大仓库”。以电商为例,商品集可能是几十万量级甚至是百万量级。此外,推荐系统的上限,一定程度上受制于候选集的数量。换句话说,候选集的数量决定了推荐系统的天花板。

5. 召回层

一般利用高效的召回规则、算法或简单的模型,快速从海量的候选集中召回用户可能感兴趣的物品。

特点:数据量大、速度响应快、模型简单、特征较少

6. 排序层

利用排序模型对初筛的候选集进行精排序。

特点:数据量少、排序精准、模型复杂、特征较多

7. 重排序层

可以在将推荐列表返回用户之间,为兼顾结果的”多样性“”流行度“”新鲜度“等指标,结合一些补充的策略和算法对推荐列表进行一定的调整,最终形成用户可见的推荐列表。

举个实际的例子,一个内容平台,假设有A、B、C三类内容,我们不想让A类型的内容连续出现3次以上,就需要加一些干扰规则,将A类内容进行打散处理,使得用户最终看到的推荐列表是符合业务上的预期。

特点:重业务需求、重用户体验

三、经典的模型算法

1. 基于用户的协同过滤

       首先,UserCF基于这样的一个前提假设:喜欢相似物品的用户之间,存在着相似的兴趣偏好。

       假设平台上有A、B、C三位用户,根据用户在平台上的行为和动作,我们能够获得每位用户对A、B、C、D四件商品大致的偏好程度。可以得出下面的矩阵形式,称为”共现矩阵“。

       如果我们想预测用户A对物品D的偏好,那么就需要找到与用户A最相似的用户,可以通过用户向量间余弦相似度的方式来寻找最相似的K个用户,夹角越小,两个用户就越相似。

UserCF的应用场景和优缺点:

  1. 因为UserCF是基于用户相似度的推荐,所以它具备了非常强的社交属性,容易通过社交关系来传播符合用户口味的东西,因此它更适用于新闻推荐这样的场景,一方面新闻内容具有实时性、热点性,而UserCF更擅长于捕捉这一类的内容。另一方面,新闻内容的数量要远远多余用户数量,因此计算向量相似度时,要比ItemCF的时间复杂度更低。
  2. 新用户往往历史行为数据非常稀疏,可能会得到 [0,0,0,0,0,…..,1] 这样的向量,导致根据用户相似度推荐的物品准确度和置信度会非常低。也就是说如果遇到低频应用以及用户冷启动会比较麻烦,不太适用。
  3. 还有一种情况是,用户数远远多于商品数,用户数的不断增长会导致用户相似度矩阵难以维护,它用到的存储空间的增长速度是呈指数级的。

2. 基于物品的协同过滤(ItemCF)

首先,ItemCF基于这样一个前提假设:用户对于不同物品间的偏好相似,那么物品间也是相似的。

它的原理与UserCF类似,ItemCF采用纵向的向量,作为物品的表示向量,可以通过物品向量余弦相似度的方式来寻找最相似的k个物品,夹角越小,两个物品就越相似。

ItemCF的应用场景和优缺点

  1. 因为UserCF有一些明显的缺点,所以Amazon和Netflix最早应用的都是ItemCF,它相比用户向量,物品的向量变化要更为稳定,因此广泛用于电商和视频推荐的领域,当用户对某一类商品或某一类电影产生兴趣时,此时给Ta推荐同类型的商品或电影是一个可靠的选择。
  2. ItemCF不具备很强的泛化能力。当一个热门商品出现后,它容易和大量的商品都具有相似性,导致推荐商品时,热门商品的出现概率会非常高,形成了“头部效应”,同样也致使处于长尾的商品较难被挖掘,因为长尾商品的特征向量会非常稀疏。所以要想解决这个问题,需要后期添加一些干预策略在里面。

3. 矩阵分解(隐向量的表达)

       矩阵分解算法是基于协同过滤进化而成的,它可以认为是一种以数学的方式来优化了协同过滤算法。

       前面提到,协同过滤的计算核心是生成了“共现矩阵”,那么我们可以将这个共现矩阵继续拆分,形成一个用户矩阵和一个物品矩阵,也就是得到了用户的隐向量和物品的隐向量,这样就能够用隐向量的距离来选取用户感兴趣的物品了。它的思想和embedding(下文会提到)非常相似,泛化能力极强。

       如上图所示,共现矩阵是n×n维的,用户矩阵是n×k维的(图中k=2),物品矩阵是k×n维的。其中k值根据具体工程而定。其中k值越小,模型泛化能力越强。k值越大,模型泛化能力越差,但表达能力越强。

4. 逻辑回归(LR)

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值