常用的基于内容的推荐算法实现原理

这篇文章我们主要关注的是基于内容的推荐算法,它也是非常通用的一类推荐算法,在工业界有大量的应用案例。

本文会从什么是基于内容的推荐算法、算法基本原理、应用场景、基于内容的推荐算法的优缺点、算法落地需要关注的点等5个方面来讲解。

希望读者读完可以掌握常用的基于内容的推荐算法的实现原理,并且可以基于本文的思路快速将基于内容的推荐算法落地到真实业务场景中。

1

什么是基于内容的推荐算法

所谓基于内容的推荐算法(Content-Based Recommendations)是基于标的物相关信息、用户相关信息及用户对标的物的操作行为来构建推荐算法模型,为用户提供推荐服务。这里的标的物相关信息可以是对标的物文字描述的metadata信息、标签、用户评论、人工标注的信息等。用户相关信息是指人口统计学信息(如年龄、性别、偏好、地域、收入等等)。用户对标的物的操作行为可以是评论、收藏、点赞、观看、浏览、点击、加购物车、购买等。基于内容的推荐算法一般只依赖于用户自身的行为为用户提供推荐,不涉及到其他用户的行为。

广义的标的物相关信息不限于文本信息,图片、语音、视频等都可以作为内容推荐的信息来源,只不过这类信息处理成本较大,不光是算法难度大、处理的时间及存储成本也相对更高。

基于内容的推荐算法算是最早应用于工程实践的推荐算法,有大量的应用案例,如今日头条的推荐有很大比例是基于内容的推荐算法。

2

基于内容的推荐算法实现原理

基于内容的推荐算法的基本原理是根据用户的历史行为,获得用户的兴趣偏好,为用户推荐跟他的兴趣偏好相似的标的物,读者可以直观上从下图理解基于内容的推荐算法。

新知图谱, 一文全面了解基于内容的推荐算法 | 洞见

图1:基于内容的推荐算法示意图

从上图也可以看出,要做基于内容的个性化推荐,一般需要三个步骤,它们分别是:基于用户信息及用户操作行为构建用户特征表示、基于标的物信息构建标的物特征表示、基于用户及标的物特征表示为用户推荐标的物,具体参考图2:

新知图谱, 一文全面了解基于内容的推荐算法 | 洞见

图2:基于内容的个性化推荐的三个核心步骤

本节我们先简单介绍一下怎么基于上图的步骤1、步骤2为用户做推荐(即步骤3中给用户做推荐的核心思想),然后分别对这三个步骤加以说明,介绍每个步骤都有哪些方法和策略可供选择。

1

基于用户和标的物特征为用户推荐的核心思想

有了用户特征和标的物特征,我们怎么给用户做推荐呢?我认为主要的推荐思路有如下三个:

(1)基于用户历史行为记录做推荐

我们需要事先计算标的物之间的相似性,然后将用户历史记录中的标的物的相似标的物推荐给用户。

不管标的物包含哪类信息,一般的思路是将标的物特征转化为向量化表示,有了向量化表示,我们就可以通过cosine余弦相似度计算两个标的物之间的相似度了。

(2)用户和标的物特征都用显式的标签表示,利用该表示做推荐

标的物用标签来表示,那么反过来,每个标签就可以关联一组标的物,那么根据用户的标签表示,用户的兴趣标签就可以关联到一组标的物,这组通过标签关联到的标的物,就可以作为给用户的推荐候选集。这类方法就是所谓的倒排索引法,是搜索业务通用的解决方案。

(3)用户和标的物嵌入到同一个向量空间,基于向量相似做推荐

当用户和标的物嵌入到同一个向量空间中后,我们就可以计算用户和标的物之间的相似度,然后按照标的物跟用户的相似度,为用户推荐相似度高的标的物。还可以基于用户向量表示计算用户相似度,将相似用户喜欢的标的物推荐给该用户,这时标的物嵌入是不必要的。

讲清楚了基于内容的推荐的核心思想,那么下面我们分别讲解怎么表示用户特征、怎么表示标的物特征以及怎么为用户做推荐。

2

构建用户特征表示

用户的特征表示可以基于用户对标的物的操作行为(如点击、购买、收藏、播放等)构建用户对标的物的偏好画像,也可以基于用户自身的人口统计学特征来表达。有了用户特征表示,我们就可以基于用户特征为用户推荐与他特征匹配的标的物。构建用户特征的方法主要有如下5种:

(1)用户行为记录作为显示特征

记录用户过去一段时间对标的物的偏好。拿视频行业来说,如果用户过去一段时间看了A、B、C三个视频,同时可以根据每个视频用户观看时长占视频总时长的比例给用户的行为打分,这时用户的兴趣偏好就可以记录为新知图谱, 一文全面了解基于内容的推荐算法 | 洞见,其中S1、S2、S3分别是用户对视频A、B、C的评分。

该方案直接将用户历史操作过的标的物作为用户的特征表示,在推荐时可以将与用户操作过的标的物相似的标的物推荐给用户。

(2)显式的标签特征

如果标的物是有标签来描述的,那么这些标签可以用来表征标的物。用户的兴趣画像也可以基于用户对标的物的行为来打上对应的标签。拿视频推荐来举例,如果用户过去看了科幻和恐怖两类电影,那么恐怖、科幻就是用户的偏好标签了。

每个标的物的标签可以是包含权重的,而用户对标的物的操作行为也是有权重的,从而用户的兴趣标签是有权重的。

在具体推荐时,可以将用户的兴趣标签关联到的标的物(具备该标签的标的物)推荐给用户。

(3)向量式的兴趣特征

可以基于标的物的信息将标的物嵌入到向量空间中,利用向量来表示标的物,我们会在后面讲解嵌入的算法实现方案。有了标的物的向量化表示,用户的兴趣向量就可以用他操作过的标的物的向量的平均向量来表示了。

这里表示用户兴趣向量有很多种策略,可以基于用户对操作过的标的物的评分以及时间加权来获取用户的加权偏好向量,而不是直接取平均。另外,我们也可以根据用户操作过的标的物之间的相似度,为用户构建多个兴趣向量(比如对标的物聚类,用户在某一类上操作过的标的物的向量均值作为用户在这个类别上的兴趣向量),从而更好地表达用户多方位的兴趣偏好。

有了用户的兴趣向量及标的物的兴趣向量,可以基于向量相似性计算用户对标的物的偏好度,再基于偏好度大小来为用户推荐标的物。

(4)通过交互方式获取用户兴趣标签

很多APP在用户第一次注册时让用户选择自己的兴趣标签,一旦用户勾选了自己的兴趣标签,那么这些兴趣标签就是系统为用户提供推荐的原材料。具体推荐策略与上面的(3)一样。

(5)用户的人口统计学特征

用户在登陆、注册时提供的关于自身相关的信息、通过运营活动用户填写的信息、通过用户行为利用算法推断得出的结论,如年龄、性别、地域、收入、爱好、居住地、工作地点等是非常重要的信息。基于这些关于用户维度的信息,我们可以将用户特征用向量化表示出来,向量的维度就是可获取的用户特征数。

有了用户特征向量就可以计算用户相似度,将相似用户喜欢的标的物推荐给该用户。

3

构建标的物特征表示

标的物的特征,一般可以利用显式的标签来表示,也可以利用隐式的向量(当然one-hot编码也是向量表示,但是不是隐式的)来刻画,向量的每个维度就是一个隐式的特征项。前面提到某些推荐算法需要计算标的物之间的相似度,下面我们在讲标的物的各种特征表示时,也简单介绍一下标的物之间的相似度计算方法。顺便说一下,标的物关联标的物的推荐方式也需要知道标的物之间的相似度。下面我们从4个方面来详细讲解怎么构建标的物的特征表示。

(1)标的物包含标签信息

最简单的方式是将将标签按照某种序排列,每个标签看成一个维度,那么每个标的物就可以表示成一个N维的向量了(N是标签的个数),如果标的物包含某个标签,向量在相应标签的分量上的值为1,否则为0,即所谓的one-hot编码。有可能N非常大(如视频行业,N可能是几万、甚至几十万上百万),这时向量是稀疏向量(一般标的物只有少量的几个或者几十个标签),我们可以采用稀疏向量的表示来优化向量存储和计算,提升效率。有了标的物基于标签的向量化表示,很容易基于cosine余弦计算相似度了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值