个性化推荐系统从0到1

1、背景

在互联网信息爆炸式增长的当今,通过传统人工筛选运营方式提供服务时代已然过去,能通过用户历史行为精准推荐用户感兴趣内容成为必然趋势,主流个性化推荐系统流程包括用户行为采集、分类提取、离线用户建模、在线用户模型预测等。结合目前手机QQ浏览器软件应用App分发业务发展需求,历时半年多时间,从无到有搭建一套个性化推荐系统支撑专区App分发业务。

2、业务整体Review

目前推荐场景覆盖包括专区首页猜你喜欢模块推荐,打底推荐与QB内垂直搜索,对应效果如下图红框标识:

进过半年的优化打磨,关键阶段效果提升汇总如下:

3、整体框架

在输出整体架构图前,先回归最初产品个性化推荐需求,技术方案选型最终都要服务于需求

【个性化推荐需求】

根据活跃用户的长期兴趣推荐用户最感兴趣的AppList,效果评价指标是推荐App的CTR

【技术方案选型】

工程Part

在线模块:分粗排阶段和精排阶段

1、粗排阶段根据用户长期兴趣画像召回相关度较高的Item,同时减轻精排阶段压力;

2、精排阶段则根据粗排召回的ItemList,通过离线训练好的排序模型预测CTR,最终下发TopN ItemList作为推荐结果;

离线模块:

1、用户长期兴趣:负责在线粗排召回,通过离线累计用户消费行为,映射成兴趣体系,最终积累成用户长期兴趣画像,最终将画像导入在线系统;

2、排序模型:负责在线精排阶段排序模型的训练,训练阶段需要用户消费日志,同时收集用户特征和Item特征,最终整合成训练样本集,通过Spark等分布式计算框架训练模型并导入在线系统;

算法Part

粗排召回:粗排的召回效果直接影响推荐的效果,不过项目初期的方案不太适合制定太复杂的策略,初期我们先敲定一个热度计算公式对备选Item进行全排序:HOT(x) = LOG(下载量(x)) + 评分(x) * 0.2,最后根据Item分类构建待召回反向索引结构

精排模型:产品制定推荐效果评价指标是App按天CTR,即排序模型是pCTR模型,结合业界成熟方案以及团队技术积累准备度,选用LR作为pCTR模型

【整体架构图】

1、将用户在专区预推荐位的Item曝光和点击行为上报到离线集群

2、用户实时拉取推荐结果,粗排备选池会预先Ready(对应架构图中的备选优化,策略参考上面算法Part的粗排召回),通过用户关联历史兴趣画像,根据画像获取关联度Top的ItemList,同时进行列表退避;然后用召回ItemList关联Item特征,用户关联用户特征,部分特征需要走特征工程处理,加载离线训练好的LR模型,预测每一个Item的pCTR,进行排序;产品策略会在兼顾用户体验维度对下发列表进行干预,比如多样性,游戏App占比等;最终下发排序结果列表

3&4、将用户交互行为与推荐结果等数据导入离线计算集群:1)根据按天用户行为计算按天兴趣画像,同时和历史画像进行合并构成用户兴趣长期画像;2)用用户对Item点击或曝光作为样本原,与Item特征、用户特征关联形成训练样本集,通过Spark API训练得到稳定的LR模型

5、按天将用户累计长期兴趣画像和LR模型结果导出到HDFS路径

6、用户兴趣画像定期刷入在线Cache

7、将LR模型按天导入在线DB,在线服务定时加载LR模型以及查询用户长期兴趣画像

4、优化小结

将个性化推荐系统Pipeline搭建上线后,目光就转移到推荐效果的优化,优化主要分三部分:

1)LR模型特征优化,主要包括常用特征工程方法以及引入新的业务特征;

2)LR训练工具Spark API训练性能提升加学习率曲线绘制;

3)粗排召回阶段引入基于Item的协同过滤;

【特征优化】

1、特征工程

在当前项目中,我们主要采用的特征工程方案包括:

离散枚举:性别(男性1,女性2,未知3),单维特征扩展成三维,一条样本仅设置一维

连续等距:比如用户年龄,可观察在如下样本中用户年龄的分布图(x坐标表示年龄,y坐标表示对应用户群累计占比),14-46岁间隔用户群分布均匀(且为相对有效年龄),且占整体用户群99%以上,这类特征可以对样本进行等值切分,间隔可根据模型效果调整

归一化LOG:比如App下载量,如下是样本中App对应的下载量分布图(x坐标表示下载量,y坐标表示对应用户群累计占比),对比年龄分布图,App群50%占比以上比较均匀,但是前50%跨度较大,此时我们使用的方案是对整体下载量求LOG,然后再进行等值One-Hot

2、引入新特征

项目初期使用的特征包括如下脑图中的蓝色与绿色特征,训练的样本量是按周,采样的正负比例是1:5,最终的AUC是0.6890;

在专注特征优化阶段,主要的方向是引入更多的特征,通过梳理,将脑图中的标黄和标灰特征纳入到引入阶段。在具体引入优先级的排期中,需要权衡特征收集的复杂度、特征的覆盖度等因素,最终在优化阶段确定引入脑图中的标黄特征,结果AUC提升到0.7592

【Spark API 训练优化】

详见文章Spark MLlib LR 实战笔记

【协同过滤】

分类粗排召回策略的优势是对主打用户长期兴趣方向定向,缺点是很难引入Item相关度较高但并非同类的Item,也就是较难发现用户隐含兴趣;协同过滤的目标就是对分类粗排召回策略缺点的一种补充。

常用的协同过滤Based-Memory包括User-Based与Item-Based,对标两种模型有如下对比:

通过调研目前项目的推荐场景优选Item-Based,接入流程上,回到整体架构图,采用离线训练Item-Item相似度矩阵并离线根据用户历史安装App进行预测,最终刷入在线Cache,供在线服务在召回流程查询协同过滤推荐结果,进而统一精排下发

5、项目展望

1、LR模型引入更多新特征 以及 特征工程更多的尝试,可参考参考文献5

2、pCTR预测模型尝试GBDT + LR

3、App分类互斥策略

感谢过程中Carbonzhang & Meifangli 的大力支持

参考文献

1《practical lessons from predicting clicks on ads at facebook》https://pdfs.semanticscholar.org/daf9/ed5dc6c6bad5367d7fd8561527da30e9b8dd.pdf

2《Spark MLlib 机器学习算法、源码及实战详解》

3《Spark 技术内幕》

4《机器学习实战》

5 特征工程 http://km.oa.com/group/22605/articles/show/295781

原文链接:

编辑于

罗鑫骥的专栏

1 篇文章2 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

在AI眼前“隐身”,谷歌研究人员使用特制贴纸迷住AI

AiTechYun 编辑:yuxiangyu 虽然机器学习系统的能力很强,但他们并不聪明,因为他们缺乏常识。研究人员利用这一点对图像识别系统进行了一次精彩的攻击...

1945
来自专栏企鹅号快讯

看可口可乐如何玩转TensorFlow

“ 随着人工智能的高速发展,开发者们对于能够应对产品多样化挑战的学习框架TensorFlow,也有着很高的热情。除了各类科技产品,零售行业也同样将TensorF...

19710
来自专栏专知

【论文推荐】最新六篇用户建模精选论文推荐—深度多模态融合、跨平台、时序性RNN、ATRank、嵌入因子分解、异构信息网络

【导读】专知内容组整理了最近六篇用户建模相关文章,为大家进行介绍,欢迎查看! 1. User Profiling through Deep Multimodal...

5396
来自专栏媒矿工厂

【视频编码】 Content Aware ABR技术(三)

本系列的前面贴子中,我们梳理了Netflix和YouTube在ABR方面的一些进展,本文将简要介绍一下编码优化领域的一位新贵—Beamr的技术动态。 ? Bea...

2805
来自专栏大数据风控

R中协同过滤算法

协同过滤(Collaborative Filtering,简称CF) 协同过滤常常被用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于其他相似顾客对哪些产品感...

2035
来自专栏数据科学与人工智能

【陆勤阅读】PyCon 2014:机器学习应用占据Python的半壁江山

今年的PyCon于4月9日在加拿大蒙特利尔召开,凭借快速的原型实现能力, Python在学术界得到了广泛应用。最近其官方网站发布了大会教程部分的视频和幻灯片,其...

2068
来自专栏AI研习社

博客 | DeepMind 开源TRFL,又一个强化学习复现、创新好帮手

雷锋网 AI 科技评论按:继今年 8 月谷歌开源发布了专为学术研究人员设计的简单但鲁棒的强化学习框架「多巴胺」(Dopamine)之后,早已被谷歌母公司收购但保...

784
来自专栏磐创AI技术团队的专栏

热点 | 近期Github机器学习开源项目...

对于程序员来说,开源项目是十分有帮助的。希望你能从这篇文章中找到可以激发你灵感的有趣项目。最近磐创AI寻找“深大锦鲤”活动是2018年10月15日准时开奖哦~听...

912
来自专栏专知

【干货】ACL 2018 鲁棒、无偏的NLP训练方法

【导读】近日举办的ACL workshop,为大家带来了很多业界的最新实践方法。本文为大家准备了3rd Workshop on Representation l...

730
来自专栏目标检测和深度学习

听说了吗?你也可以在18分钟内训练ImageNet了

该团队的主要训练方法是:fast.ai 用于分类任务的渐进式调整大小和矩形图像验证;英伟达的 NCCL 库,该库整合了 PyTorch 的 all-reduce...

864

扫码关注云+社区