推荐系统建设回顾

随着互联网和信息技术的发展,人们逐渐从信息匮乏的时代转入了信息过载的时代。为了解决信息过载的难题,于是出现了分类目录(典型代表:雅虎),再到后来出现了搜索引擎(典型代表:谷歌)。但是,当用户需求不明确时,分类目录和搜索引擎仍然无能为力。于是,出现了推荐系统,通过分析用户的历史行为,主动为用户推荐能够满足他们兴趣和需求的信息。

8.4.1 智能推荐的需求背景

本文以视频App为例,常见的推荐场景包含:个性化推荐、相关推荐和热门推荐。

1.个性化推荐,又称千人千面,根据用户的视频兴趣偏好,主动推送用户可能感兴趣的内容。 例如像腾讯视频有“猜你喜欢”的推荐位置,还有抖音App的短视频Feed流,也算个性化推荐。

2.相关推荐,根据用户正在观看的视频内容,推荐与此内容相关或相似的内容,如腾讯视频中播放详情页下方的“为你推荐”。

3.热门推荐,通过会在首页面放置当前的一些热门内容。比如腾讯视频首页的“全网热播”。

本文将重点介绍个性化推荐。

8.4.2 智能推荐的流程及算法

推荐系统的主要流程:

 

推荐系统如何根据已有的用户画像和内容画像去推荐,涉及到两个关键问题:召回和排序。

“召回(match)”指从全量信息集合中触发尽可能多的正确结果,并将结果返回给“排序”。相当于在“排序”之前做一次“粗排序”。

 

 

一个完整的推荐系统流程包含了数据采取、数据存储、召回策略、候选集融合过滤和排序等模块。其中排序模块主要对多种召回策略进行排序,在CTR预估领域可以分为机器学习和深度学习两种模型,机器学习一般采用GBDT+FM/FFM,深度学习一般采用Wide & Deep或DeepFM,但DeepFM更具有优势。具体采用哪种方案不能一概而论,需要结合业务确定,有些场景下,基于深度学习的DeepFM效果比基于机器学习的GBDT+FM/FFM好,而在另一些场景中则相反。整体架构如下图所示。

 

1.召回算法

召回的算法有很多,常见的包含基于内容相似度的召回,基于用户画像的召回,基于协同过滤的召回,还有基于热门数据的召回。

 

内容相似度的召回

 

该算法主要是根据用户看过的内容,根据内容的属性来推荐与之相关的内容,其内容的相似度的计算主要根据标签进行计算。其计算方法流程图如下:

首先建立节目和标签的正向索引,其中的key值为节目的id,value值为该节目相对应的标签值。建立负向索引,其中索引的key值为标签的全排列组合,value值为属于该标签的节目id。在进行计算时,针对节目id的标签首先进行组合,然后从负向索引中寻找相对应的节目id,作为计算的候选集。相似度计算公式采用如下Jaccard相似系数:

              

 

基于用户画像的召回

根据用户长期的画像进行召回的实现是流程主要如下:

  1. 读取用户的用户画像;
  2. 选择用于兴趣推荐的标签集,以标签喜好程度分值为权重随机选取n(n=兴趣推荐视频数)个标签用于推荐
  3. 循环从n个标签中选择候选集,候选视频经过展示去重库和下线库以及黑名单等的过滤,如视频顾虑,会继续取此标签下一条视频(如标签下无视频,则开始使用备用兴趣标签),控制各标签推荐数量不超过2条(避免画像标签生僻或请求条数过多时,单次推荐内容相似度较高)

基于协同过滤的召回

基于用户的协同过滤算法(UserCF)是推荐系统中最古老的算法。可以毫不夸张的说,这个算法的诞生标志了推荐系统的诞生,该算方法在1992年被提出,并应用于邮件过滤系统,1994年被GroupLens用户新闻过滤。在此之后直到2000年,该算法都是推荐系统领域最著名的算法。当一个用户A需要个性化推荐时,可以先找到和他相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。

基于物品的协同过滤算法(ItemCF)是目前业界应用最多的算法。无论是亚马逊,还是Netflix、Hulu、YouTube,其推荐算法的基础都是该算法。ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为细化物品A的用户大都也喜欢物品B。

还有一种协同过滤算法是ALS算法,ALS是alternating least squares的缩写 , 意为交替最小二乘法。近年来,基于模型的推荐算法ALS(交替最小二乘)在Netflix成功应用并取得显著效果提升,ALS使用机器学习算法建立用户和物品间的相互作用模型,进而去预测新项。该方法常用于基于矩阵分解的推荐系统中。例如:假设我有大量的用户数据,U个用户和I个物品,若直接创建评分矩阵(稀疏矩阵)则会非常庞大,所以将用户对物品的评分矩阵分解为两个矩阵:一个是用户对商品隐含特征(K个特征)的偏好矩阵,另一个是物品所包含的隐含特征(K个特征)的矩阵。 预测时,将用户和物品代入,即可得到相应的评分预测值。

 

笔者参与建设的推荐系统中采用的协同过滤算法是ALS算法,因为在用户数和物品数非常庞大的情况下,ALS会更适合。

  1. 排序算法

排序模块主要包括离线排序和实时排序两部分,离线部分按天采集数据、特征工程和训练模型,采用GBDT+LR和Wide & Deep或DeepFM两种方案。实时部分用过去一小段时间(例如,过去5分钟)的增量数据通过FTRL在线学习更新离线模型,得到实时模型。然后合并离线特征和增量特征,得到实时特征表。最后通过召回列表和实时特征表,对召回列表进行CTR预估排序。如下图所示。

 

 

在CTR预估问题的发展初期,使用最多的方法就是逻辑回归(LR),LR使用了Sigmoid变换将函数值映射到0~1区间,映射后的函数值就是CTR的预估值。
    LR属于线性模型,容易并行化,可以轻松处理上亿条数据,但是学习能力十分有限,需要大量的特征工程来增加模型的学习能力。但大量的特征工程耗时耗力同时并不一定会带来效果提升。因此,如何自动发现有效的特征、特征组合,弥补人工经验不足,缩短LR特征实验周期,是亟需解决的问题。

Facebook 2014年的文章介绍了通过GBDT解决LR的特征组合问题,随后Kaggle竞赛也有实践此思路,GBDT与LR融合开始引起了业界关注。

本文的实践也将主要基于GBDT+LR的方式,下图是FaceBook的论文中介绍的例子:

图中共有两棵树,x为一条输入样本,遍历两棵树后,x样本分别落到两颗树的叶子节点上,每个叶子节点对应LR一维特征,那么通过遍历树,就得到了该样本对应的所有LR特征。构造的新特征向量是取值0/1的。举例来说:上图有两棵树,左树有三个叶子节点,右树有两个叶子节点,最终的特征即为五维的向量。对于输入x,假设他落在左树第一个节点,编码[1,0,0],落在右树第二个节点则编码[0,1],所以整体的编码为[1,0,0,0,1],这类编码作为特征,输入到LR中进行分类。


 

 

3.用户冷启动问题

推荐系统需要分析用户的历史行为数据预测其兴趣,但对于新用户我们没有人的行为数据,也就无法进行预测和推荐。通常会有如下三种解决方式:

  1. 利用用户的注册信息:比如用户年龄、性别、职业等信息。举例,我们可以向年轻的女性推荐偶像剧。
  2. 让用户第一次打开App时,先择感兴趣的视频类型:比如爱情、喜剧、战争、体育、动漫等
  3. 侧面用户画像:如果在用户许可的情况下,我们可能获取安桌用户手上的已安装App列表,我们可以据此对用户从侧面做一个粗略的画像,简称“侧面画像”。比如用户手机上安装了猎聘,我们可以推荐一些求职相关的视频。
  4. 推荐热门内容:如果以上措施都无法有效实行的情况下,我们可以简单向的新用户推荐一些当下的最热门内容。

 

 

8.4.3 智能推荐的效果评估

推荐系统的效果评估主要靠离线实验、在线实验(A/B测试)和用户调查。其中离线实验和在线实验可参考本文8.3.4 用户画像的效果评估。本章节主要介绍用户调查。

很多时候,离线实验和商业运行还是存在差距的,比如高准确率不等于高用户满意度。所以,上线前、后往往会需要对一些真实用户进行调查。用户调查也是推荐系统评测的一个重要工具,很多无法能过离线在线实验定量获取的指标,都可以通过用户调查获得,主要涉及如下指标:

  1. 用户满意度:推荐的内容是否是用户感兴趣的及感兴趣的程度。
  2. 推荐多样性:推荐的内容是否覆盖用户的广泛兴趣,比如一个喜欢看欧洲足球的体育类节目爱好者,可能同时喜欢看成龙大哥的电影。
  3. 推荐的新颖性:推荐的内容是否是用户已经浏览过、看过的(比如在其它App上看过)

关于用户的选择,基于成本考虑很难进行大规模的调查,所以我们一方面要控制成本 ,一方面尽量保证被调查用户的分布和真实用户的分布相同,比如男女比例、年龄段分布等,以便调查结果的统计意义。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值