推荐系统 I 关于推荐策略的整理与思考

本篇文章是对推荐系统的学习总结,首先从推荐请求处理的整个流程中抽象出系统的几个核心方面:内容特征、用户画像、召回、排序、重排,其中包含了常见的召回和重排策略。最后从产品角度出发,对推荐策略的选择的一些思考和需关注的工作。

概念

[百科概念]个性化推荐,根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。

推荐系统的任务是联系用户和物品,从而解决以下两个主要的问题:
1.解决信息过载。
2.在用户没有明确需求时,给用户感兴趣和需要的内容。

系统推荐的产品包含商品、新闻、短视频、音乐、文章、电影等内容,本文统一用“物品"item来代表。

一、推荐请求处理流程

从客户端发起请求,到推荐系统向用户返回最终推荐结果的过程,如下图:

流程包含了以下几个主要模块:

1.意图理解
意图理解主要是区分不同场景下,不同用户的真实意图,在明确用户意图后,进而采用不用的推荐策略来达成场景的核心目标。例如在电商领域的两个场景:

  • 在APP首页场景下,用户可能只是随便看看,又或者已经有了明确想要购买的商品类别和属性。如果是随便看看可以采用个性化推荐策略,通过用户画像进行推荐,同时还会考虑是否新用户而采取冷启动策略; 如果用户在首页进行商品搜索,说明意图比较明确,可以采用相应的query策略;
  • 在商品详情页场景下,用户可能想找同款、比对价格,或者想凑满减活动等,为了加速用户作决策和引导其成交转化,可以采用相应的同款推荐、相似推荐等策略。

个性化推荐系统是通过描述用户兴趣的特征来判断用户需求。这些特征包括用户的历史行为数据、用户属性、物品内容特征、一些实时特征(例如用户正在输入的Query、用户刚点击的页面、当前时间)。它们共同组成了用户的潜在需求。

2.召回
负责将用户可能感兴趣的内容提取出来。目的是为了缩小每个用户的可选择物品候选池的范围,缩短模型计算时间,减轻线上压力。这里会根据不同的召回策略,对应了不同的算法(CF、CB等)得到不同的召回集,对召回结果去重后给到排序模块处理。

3.排序
在召回结果的基础上,根据不同的业务目标/指标,对物品进行打分,分数代表用户对物品的感兴趣程度,并按大小排序。

4.重排
排序模块出来的结果,还需要基于产品/业务策略、干扰规则进行重新排序,得到最终的推荐列表。

5.推荐展示
将最终推荐结果向用户展示,展示页面要考虑展示物品的方式、展示位置、推荐理由的解释、让同户对推荐进行反馈的设计等。

二、数据特征

前面提到在做用户意图理解时,需要从数据中挖掘出一些描述用户兴趣的特征来进行召回、排序后推荐,这些数据特征构建了物料画像和用户画像。下面内容关于内容解析和用户画像学习。

内容解析

内容解析是指对物品进行内容理解,转换成计算机能理解的结构化表示。物品的特征以及表示方式有以下几种:

1.物品的属性特征
属性集合特征,是指将物品转换成基于关键词的向量空间表示。通常适用于文本数据,例如商品的详情描述、文章内容。这类内容可以使用向量空间模型来生成关键词向量,生成的流程如下:

  • 预处理:分词、停用词删除、词干提取、词性标注等
  • 特征提取:使用命名实体识别,提取出实体、关键词
  • 关键词排名:计算关键词的权重,如TF-IDF算法

例如,用关键词向量表示一篇新闻为:
news1={(NBA , 0.0742) , (湖人 , 0.0451) , (詹姆斯 , 0.0182) , (森林狼 , 0.0142) …}
其中,NBA为关键词,0.0742代表权重,通常使用TF-IDF值

2.物品的隐含特征
如果文本很短,关键词很少,使用关键词向量表示来计算物品相似度再做物品召回,很难做到精准的推荐。比如两篇文章的标题关键词不同,但可能是代表同一个主题的。这个主题就是文章的隐含特征。使用聚类方法(例如LDA模型)可以得到隐语义向量。通过LDA可以将电影《异形》、《终结者》聚类在一起,因为它们都具有“科幻、惊悚”的特征。而《回到未来》、《泰山》又属于同一类,它们都具有“家庭”的特征。

3.物品的标签特征
通过制定一套“标签”体系来表示一个物品。标签(Tag)是用来描述和分类内容的关键词,可将内容划分类别、可设置一级二级或更细粒度的标签。物品可能是文本、图片、视频、音乐等,都可以通过打标签来表示。特别是短视频、音乐类物品,较难通过音频信号和视频流进行分析来计算物品相似度,所以可以从物品的各个维度进行标注。

这里主要梳理了给文本打标签的方法。对文本打标签可看作一个分类/聚类的问题。常用的文本分类/聚类方法:

  • 基于关键词和基于规则。对文本进行实体/关键词提取,将文本打上实体/关键词的标签。例如文本中包含姚明,姚明属于篮球名将,就将这个文本打上篮球名将的标签,会有多个标签;
  • 结合URL,数据从其他渠道爬取会带有URL地址,根据URL判断它属于哪个垂类,然后再细分它属于更细粒度分类。
  • 使用分类器,如SVM。
  • 基于文本相似度。待打标签文本与带标签样本进行相似度匹配,打上相似度最高的样本的标签。
  • 基于文本聚类。先将内容做聚类,然后人工对聚类结果筛选并打上标签。
  • 基于深度学习方法,如Word2vec、fastText、TextCNN和TextRNN的算法。

用户画像

用户画像主要有两个工作,采集用户的固有属性和记录用户行为数据。

1.用户的属性特征
包含用户的注册信息,如性别、年龄、职业、设备型号、位置坐标等,一些网站也会要求用户设置自己的兴趣的描述,也包含用户之间的关系等。

2.用户行为数据
用户行为数据是用户与物品的连接通道,代表了用户的偏好。比如用户对物品有过评分、有产生过行为。具体可划分为如下几类:

  • 显性反馈数据。比如评分。包括区间评分:0~5颗星评分、0~10分; 序数评分:“出色、“很好”、“好”、“一般”…
  • 隐性反馈数据。例如在电商领域,浏览网页、加入购物车、购买商品、收藏商品、搜索商品、分享商品、评论商品等都是隐性反馈数据。隐性评分是一元评分矩阵,即只要浏览了网页,就打“1”分
  • 文本观点。比如在社区等信息流中的发贴和评论、对商品进行评论、问答等形式的评分。这类评分提与意见挖掘和情感分析有关,可以从观点中提取隐含的评分。
  • 案例。用户指定他们感兴趣的物品的示例(或案例)
  • 其他数据。比如搜索输入的Query、语音Query等。

3.用户画像的沉淀
个性化推荐中,需要根据给特定的用户(比如用户A)做出推荐,因此需要构建A的用户画像。这个画像将用户兴趣与物品属性关联起来。

用户画像的沉淀有两种方式:
1)自身用户画像沉淀
用户画像将用户兴趣与物品属性关联起来。根据用户行为数据的积累(包含显性评分和隐性反馈数据)、分析和算法模型的迭代逐渐沉淀了自身用户画像。

2)外部用户画像引入
在新用户冷启动时期没有用户行为数据,可以通过引入外部画像来完成推荐,例如使用微博、豆瓣等账号登录,并在用户授权的情况下,导入用户站外行为数据和社交网络数据。

4.基于用户画像预测兴趣
根据用户画像,就可以预测用户对物品的兴趣,从而维护用户感兴趣的物品列表。
例如下图的歌曲推荐示例中,数据表中的前6行对应用户画像,每一列对应歌曲的特征,最后一列用户喜欢/不喜欢的评分对应用户的偏好。由用户画像可以看出该用户喜欢古典音乐,不喜欢摇滚乐。然后需要针对此用户画像对候选的两个物品item1、item2进行兴趣预测。这个问题可抽象成分类/回归问题,可以通过模型对这两个item打上评分。

三、召回策略与算法

召回模块是负责将用户可能感兴趣的物品提取出来。不同的用户喜欢不同的推荐策略,比如:用户可能喜欢利用他的年龄性别作推荐,可以选择基于用户固有属性召回的策略; 用户比较喜欢看到新加入的和他兴趣相关的内容,可以选择基于物品属性特征的策略。这些策略对应了常见的协同过滤、矩阵分解、基于内容的CB等推荐算法。
以下梳理了常见策略、对应算法及其适用场景分析。

基于行为召回

该召回策略是根据用户历史行为来关联用户后续感兴趣的物品。由于用户曾经的兴趣爱好通常预示着未来的选择,因此可以根据先前用户与物品的关系来推荐。

这种策略通常对应协同过滤算法(CF),协同过滤是核心是计算相似度。协同过滤可划分为下图所示的的几种算法,它们都是基于用户行为数据来计算相似度的。

1.基于用户的协同过滤
UserCF算法先寻找与用户有共同兴趣爱好的邻居,然后向用户推荐他的邻居喜欢的物品。

适用场景:适用于对推荐的时效性和多样性要求比较高的场景。因为UserCF是给用户推荐他的邻居喜欢的物品,所以推荐物品更具多样性。同时,新物品上线后,只要有用户对它产生了行为就会推荐给其他邻居,具有时效性。

不适用场景:新用户产生很少行为时,不能立即对他进行个性化推荐。

2.基于物品的协同过滤
ItemCF算法根据所有用户对物品的评价,发现物品间的相似度,然后给目标用户推荐那些和他之前喜欢的物品类似的物品。

适用场景:适用于用户个性化需求强烈的领域和对推荐结果实时性要求高的场景。因为itemCF是根据用户自己喜欢的物品作推荐,所以推荐更个性化,准确性也更高。同时,只要用户产生了行为,推荐结果就会实时变化。

不适用场景:新物品上线后,无法实时推荐给用户。

3.基于近邻的图模型
UserCF和ItemCF都存在评分矩阵的稀缺性问题,可以利用图模型的结构传递或排序技术来定义基于近邻方法中的相似度。图模型可分为:
1)用户-物品二分图,用于定义两个用户是否近邻。常见手段之一是使用随机游走方法。例如在网页排名应用中被频繁使用的个性化的PageRank、SimRank方法。
2)物品-物品二分图,用于定义两个物品是否近邻。可以用个性化的PageRank确定物品-物品图中的评分。这种方法称为ItemRank

4.隐语义模型LFM
LFM隐语义模型,跟前面找物品的隐含特征时提到的聚类方法LDA是同一个思想,都属于矩阵分解算法,也叫潜在因子模型、主题模型,相关的名词还有LSI、pLSA等。

与前面的近邻方法不同,近邻方法是找user与user间、item与item间的相似度,而LFM推荐算法是直接计算user与item的相似度。其核心思想是通过隐含特征联系用户与物品的关系,先通过用户的历史行为得到用户的兴趣分类,然后从分类中挑选他可能喜欢的物品。例如:用户喜欢看电影《异形》、《终结者》,表示他喜欢科幻、惊悚的题材,就可以把同样特征题材的《阿丽塔:战斗天使》推荐给用户。

适用场景:适用于用户/物品数量很多,但评分矩阵稀疏的情况。LFM本身是一种降维方法,可以得到一个低维的稠密矩阵。同时能大量节省训练过程的内存。

不适用场景:不适用于对推荐结果实时性要求高的场景。LFM每次训练都要扫描所有的用户行为数据,且训练耗时,不能因为用户行为的变化实时调整推荐结果来满足用户最近的行为。

5)基于深度学习,如NCF
NCF利用神经网络的方式来训练user与item的相似度。通过同样的embedding维度,将user与item统一到同一个向量空间,通过神经网络训练出各自的向量,最后得出用户与item的向量关系。

个性化召回

该召回策略是根据用户画像做推荐物品的召回。比如在信息推荐应用中,用户就专注于人工智能领域的,就可以根据这些特征偏好来推荐。
这种策略背后的常用算法是基于内容的推荐算法(CB)。CB算法尝试为用户匹配那些与他喜欢的物品相似的物品。这里的物品的相似度是基于物品内容的相似度,而itemCF是基于其他用户行为计算的物品相似度。所以CB算法依赖于两类数据:
1)物品的特征
2)目标用户的行为数据
这两类数据也构成了目标用户的画像。

基于CB算法做召回的流程分为三个步骤:
1)物品内容的特征提取,见上文“内容解析”
2)用户兴趣/偏好收集,见上文“用户行为数据”
3)用户画像学习与推荐,见上文“用户画像沉淀”

适用场景:适用新物品上线的冷启动场景,用户行为强烈受某一内容属性影响的场景(比如知乎,用户通常关注着某一类感兴趣的话题),对推荐结果的新颖度要求较高的场景。

不适用场景:不适用于对多样化要求较高的场景,而且对没有任何行为的新用户无法进行推荐。

相关性召回

相关性召回策略,是指推荐与用户感兴趣的内容具有相关性的物品。例如:在信息流推荐中,用户查看了杨幂的新闻,他可能对杨幂的电影、电视剧以及她的前夫、男友等新闻也感兴趣。

相关性召回实现的方法有:

  • 主题模型。如上面介绍过的LDA,就可以较好地对词进行聚类,找到每个词的相关词。找到杨幂的相关词,然后把这些词对应的新闻做召回。
  • 基于深度学习的方法。如word2vec计算出杨幂的低维向量来表示语义,来找出语义相关的词。
  • 基于知识图谱。知识图谱通过三元组来表示一条知识,将新闻中的关键词/实体词映射到知识图谱的实体,就可以找到该实体关联的其他实体及其它们之间的关系和属性。从而召回与该实体相关的信息。

热度召回

热度召回策略就是给用户推荐流行度高的物品。这个通常适用于新用户上线,还没有行为数据时的场景。是用户冷启动的解决方法之一。在收集了用户行为数据后,可以切换其他策略做召回。

冷启动召回

冷启动召回策略是为了解决冷启动问题的,前面提到的召回策略中有些也解决了冷启动问题,这里是对常见方案的一个整理。
1.冷启动问题分类

类别问题描述
物品冷启动新上线物品,没有用户对其产生行为,如何推荐给感兴趣的用户?
用户冷启动新注册用户,没有行为,如何向其提供个性化推荐?
系统冷启动没有用户&行为,只有部分物品信息,如何提供个性化推荐服务?

2.物品冷启动策略
基于内容的推荐算法CB,详情见前面提到的个性化召回。

3.用户冷启动策略

  • 热度召回,非个性化。
  • 引入外部用户画像。
  • 使用用户的固有属性做召回,用户在注册时可以收集到的信息,如性别、年龄、职业、设备型号、位置坐标等。对用户属性特征做好用户分类后,通过计算具有同样分类的用户对物品的感兴趣程度来进行推荐。这个感兴趣程度基于用户行为数据统计得到。
  • 收集用户对物品的反馈,这是基于用户对物品的内容特征的偏好来推荐。

4.系统冷启动策略
为物品打上标签,建立物品间的相似度表。只要用户对其中一个物品产生行为就可以实时给他推荐同类物品。

四、排序模型

在召回模块中,根据不同的召回策略得到不同召回集。排序模块是根据不同的业务目标,对召回集合进行精排。排序有以下几个内容:

1.明确业务目标
推荐系统的策略制定是基于业务目标,在选择排序模型时,也要明确推荐系统的目标,按业务指标进行建模。举两个例子:

  • B2B电商、O2O平台等,通常以成交额GMV为核心指标。成交量GMV=日活用户 * 点击率 * 转化率 * 客单价,指标可分解为:点击率、转化率。
  • 信息推荐类平台,业务指标可能是文章的点击率、用户在文章的停留时间。

2.模型选择
如果推荐系统的目标是提高用户对推荐结果的点击率。那么就可以利用点击预估模型CTR,预测用户是否会点击物品链接的概率。

3.算法
CTR模型是一个概率函数,值在0~1,最常用的就是逻辑回归LR算法。目前看到一些技术分享文章介绍的排序大多都是从传统模型向深度模型演进的。即先是基于LR做的,然后再有特征融合算法,如GBDT算法,进而用FTRL优化等。最后转向基于深度学习的算法,常用的比如FM、WDL、DeepFM等。

4.模型的特征选择
上面提到的算法中的传统机器学习模型( LR、GBDT、GBDT+LR… ) 都是通过特征工程进行持续迭代 ,所以特征的选择很重要。
例如在点击预测模型CTR中,一般会用以下特征来预测用户会不会点击物品:

  • 用户相关的特征:前面提到的用户固有属性特征、用户行为数据、统计特征等
  • 物品相关的特征:内容属性特征、标签特征、物品的流行度、统计数据特征等
  • 上下文维度信息特征:比如时间信息、地理位置、url、社交网络信息等。 物品在推荐列表中的位置
  • 用户之前是否点击过和推荐物品具有同样特征的其他推荐结果
  • 用户之前是否点击过和推荐物品来自同样策略的其他推荐结果

五、重排策略与算法

基于产品/业务策略、干预规则,对排序的结果进行重排,得到最终的推荐列表。重排可以提升用户的满意度,提高用户体验。

新颖性约束

新颖性约束是指给用户推荐他们没有见过、没有听过的物品。

  • 过滤。从推荐列表中过滤掉了用户曾经有过行为(如用户浏览、购买、点赞等)的物品。
  • 已购降权。已购买的物品用户不一定不会再购买,特别是日需用品类,所以除了直接过滤,可以采用降权的方法,还可以算出用户过多久后有购买需求,重新推荐给他。
  • 热门降权。对推荐列表中热门的物品进行降权。
  • 算法权重控制。对某种算法得出的结果赋予更高权重,比如CB算法比itemCF的推荐结果新颖度通常较高。itemCF基于用户历史数据计算,用户行为数据具有长尾分布属性,即较少的物品被评价/反馈,且大部分有反馈的用户都集中在小部分物品上,所以CF算法推荐的多是流行度高的物品。

多样性控制

  • 控制推荐列表中来自同一特征的物品数量,过滤掉有类似特征的物品
  • 按物品的内容特征分类,在每类中选择该类中排名最高的组成最终推荐列表。
  • 强插策略。强行插入其他高质量的内容。
  • 将相似的内容隔离。

时间多样性控制

时间多样性,是要保证用户不要每天看到同样的推荐结果。有两个要求:
1)要求实时更新推荐列表来满足用户行为/兴趣的变化。
2)要求在用户没有新的行为时/用户冷启动时,也要保证推荐结果每天都有变化。其中的方法可以是:在用户当用的推荐结果列表中,将用户之前登陆推荐系统已经看到的推荐结果进行降权。

其他策略

  • 特征加权策略。在推荐列表中,对具有用户所偏好特征的物品进行一定的加权。
  • 在推荐列表中,过滤掉不符合用户选择的物品。
  • 在推荐结果中考虑产品需求。例如产品要求将最新加入的物品推荐给用户、把需要宣传的物品优先推荐给用户等。

EE问题与算法

E&E问题描述:假设有k个准备推荐的item,每个item的回报服从不同的概率分布,如果有T次机会推荐,如何制定决策过程从而获取最大的累积回报。

在推荐系统中, 一些关于新颖性和多样性约束的问题很多都抽象成E&E问题。例如:

  • 用户兴趣和行为变化,如何调整推荐策略?
  • 当用户没有新的行为时/用户冷启动时,如何知道用户对哪类内容更感兴趣,从而给他推荐该类物品?
  • 在推荐列表中强行插入物品,应该选择哪类型从而得到用户的最大点击率?

EE问题可以使用bandit系列算法来解决。bandit系统算法,起源于多臂赌博机问题。经典算法有:朴素算法、E贪心算法、thompson sampling算法等。

六、关于推荐策略的思考

以上是对推荐请求处理整个流程的一个整理,是我在阅读相关书籍、文章内容和课程后的总结。产品经理应该如何选择推荐策略呢?以下是我关于推荐策略决策的一些思路整理。

从客户端发起请求到用户看到推荐结果的简单产品框架如下:

以信息流推荐为例子,假设业务目标是要***提升点击率***。

策略环节

主要的策略环节包含了:意图理解、排序和结果展示。
1)意图理解策略:首先要分析用户的各类特征来推断需求,为排序召回做准备。
2)排序策略:根据需求预测和各类特征进行综合排序,特征统一在CTR预测模型上进行学习。
3)展示策略:将推荐结果以符合用户样式和顺序进行展现,以提升点击率。

这三个环节在分析用户兴趣爱好的基础上、制定并调整对应策略,使点击率达到最优。第一个环节对应问题发现,后两个环节对应问题的解决方案。

策略的衡量指标

每个策略环节中,都需要定义衡量指标。为了达成指标,还要关注和加入一些资源上的支持。
1.意图理解
在意图理解中,用户可能对某类信息有明确需求或者只是打发时间的模糊需求,这个问题被抽象成找到描述用户兴趣的特征。主要包含用户的基本特征、历史行为数据特征和实时特征的分析。

1)内容

  • 内容特征提取:要对内容解析使其结构化,需要运用NLP的信息抽取、文本挖掘技术,也包含了一些文本分类算法。特征提取算法的衡量指标包括了各类特征的召回率准确率
  • 内容获取:信息流推荐产品中,要考虑优质内容资源的产生方式和产生数量。衡量指标:覆盖率实效性

关于内容标注:
内容结构化方法中,除了基于知识图谱的方法外,其他都需要人工对样本进行标注。不同方法在训练时用到的标注样本大小要求不同。其中,聚类方法是对学习后的聚类结果过行人工标注。所以我们需要制定标注规则,来给内容打标签。PM需要决定内容的类别有哪些、分多少级(一级二级类目)、标签粒度有多细。

2)用户
为了收集用户特征,需要关注:

  • 设计注册时需要用户填写的信息
  • 收集设备、位置等信息
  • 收集用户的固有关系信息
  • 收集用户的兴趣偏好信息,这是用户冷启动的解决方案,如下图中QQ音乐的推荐页面偏好设置入口 )

3)用户与内容的连通
用户与内容之间是通过一些行为连通的,如阅读、点赞、评论等,这些行为一定程度代表了用户对内容的感兴趣程度。
需要关注:

  • 显性反馈界面设计,打分设计。
  • 隐性反馈设计和数据上报。除了点赞、评论、转发功能设计,需要要提供上报数据,如在用户浏览了内容后,需要上报点击时间、uid、内容id、所属策略、所属分类、点击位置等。

2.排序与展示策略
排序策略和展示策略是以提升点击率为目标而提供的解决方案。
1)衡量指标

  • 排序预估模型CTR考核预测准确率。衡量指标为:召回率准确率
  • 展示策略体现在用户的满意度。衡量指标为:点击率

2)用户行为数据统计
为判断策略效果的好坏,是否达预期目标,需要对收集的数据进行统计。需要统计内容推荐展示次数、用户点击次数、内容历史点击次数、历史展示次数等。

3)用户满意度反馈设计
除了数据统计结果来计算点击率,还可以设计反馈界面收集用户对结果的评价。例如QQ音乐在推荐的项目中,提供X关闭按钮来收集用户对此内容不感兴趣。在之后的推荐中会减少类似推荐。

策略效果验证

推荐策略的效果需要通过数据去不断验证、反复迭代。在前面已定义了推荐系统的业务目标、各环节的衡量指标,也提出了用户数据和收集和统计,然后就可以通过数据分析来做效果回归。这个策略评估和产品循环的过程在浅谈语音助手的对话管理与策略制定有做总结。

以上是本篇文章的全部内容。

参考材料

《推荐系统实践》项亮
《推荐系统:原理与实践》Charu,C.,Aggarwal
《策略产品经理实战修炼》
京东购物在微信等场景下的算法应用实践
搜索引擎算法体系简介
图片主题模型在推荐系统的应用实践
外卖推荐算法中有哪些机制与手段
知乎推荐页Ranking经验分享

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值