58技术沙龙第十一期-推荐架构与算法实践

背景

2019年5月17号,由58集团技术工程平台群联合人力资源神奇学院共同组织的58集团技术沙龙第十一期-“推荐架构与算法实践”在58集团北京总部举办。本次沙龙邀请了多位知名互联网公司的嘉宾,大家分享了各自团队在推荐系统架构以及算法方面的实践经验。

部分干货总结

一. 58推荐系统架构实践

58推荐系统经过重构和不断优化,形成了一套稳定、高性能、低耦合的基于 微服务的智能推荐系统架构,能够支持策略的快速迭代,大大提高了业务的迭代效率。目前这套推荐系统应用于58所有的推荐场景。

58智能推荐系统架构由应用层、策略层、数据层三部分组成,具体如下图所示:

下面自低向上分别介绍每一层:

  • 数据层 主要包括业务数据和用户行为日志数据。业务数据主要包含用 户数据和帖子数据,其中用户数据包括C端用户数据和B端用户数据;帖子数据主要是发帖人在58平台上发布的帖子的基础属性数据。日志数据是对用户在58平台上反馈行为(筛选、点击、收藏、打电话、微聊等),其来源于在前端和后台的埋点。以上这些数据都用两种方式存储,一种是批量存储于HDFS上,便于进行离线分析,另外一种是实时流向kafka,便于进行实时计算。

  • 策略层: 和一般的推荐流程先召回后排序一样,策略层主要实现召回和排序两种功能。首先基于数据层的实时和离线日志开展各类基础数据计算(如用户画像、帖子画像和各类数据分析)以供召回和排序使用。召回层包含多种召回源的计算,例如协同过滤、矩阵分解、DNN、地域热门、兴趣召回和关联规则等。排序层主要是利用机器学习模型对召回数据进行排序,先后迭代了LR、FM、GBDT、融合模型(GBDT+LR模型,GBDT+FM模型)及DNN,基于这些模型分别开展了点击率、转化率和停留时长等多指标排序。本层数据处理使用了多种计算工具,例如使用MapReduce 和Hive做离线计算,使用 Kylin做多维数据分析,使用Spark、DMLC做大规模机器学习训练模型,使用tensorflow做深度学习模型训练(深度学习模型训练使用58人工智能平台wpai)。

  • 应用层: 通过提供rpc和http接口来实现外部业务接入,目前主要接入 了“猜你喜欢个性化推荐”,“详情页相关性推荐”,“搜索少无结果推荐”,“Feed流推荐”,“个性化推荐”,“热门推荐”,这些场景大多是向用户展示一个推荐结果列表,属于典型的topN推荐模式。

二. 58搜索排序算法实践

主要介绍下搜索机器学习平台,58搜索机器学习平台是搜索排序算法部自研的一套可高度配置,灵活使用的机器学习平台。从而解决了之前对多业务用单独流程优化而导致的多流程、多版本难以维护的问题,减少了不必要的重复工作,使算法人员可以把更多时间放在效果优化及模型迭代更新上,同时便于统一管理维护,历史流程回溯。搜索机器学习平台流程图如下:

平台主要包括样本采样,特征工程和模型训练三个功能,每部分都提供了灵活的配置文件,使用者可根据需求进行配置,使用自己需要的方法 和模型,下面分别介绍每部分功能:

    1.  样本采样 :主要解决分类数据中的样本不均衡问题,平台提供基础采样方法和组合算子两部分,使用者可在采样配置中灵活配置。

  • 基础采样 ,基础采样包含11种过滤方法,如全通( AllPassFilter ), 全不通过(AllNotPassFilter),按类别过滤(ClassFilter),表达式过滤(ELFilter), 按照位置过滤(PosFilter)等。

  • 组合算子 ,组合算子包含”与,或,取反”3种算子,如( AndFilter )或( OrFilter )和取反( NotFilter )。

    2. 征工程 :特征工程主要包含个性化特征处理、连续特征处理和离散化特征处理三部分。

  • 个性化特征处理 ,个性化特征主要是用户与帖子属性的交互特征,每种 属性会派生出若干类特征,每类特征包含按不同时间等级计算生成时效性特征,这些特征是排序效果优化中比较重要的特征。

  • 连续特征处理 ,连续特征处理提供等频,等宽和自定义三种方式

  • 的离散化处理方式和归一化处理,需要使用者根据需要在特征处理中进行配置。

  • 离散化特征处理 ,主要使用one-hot编码处理。

    3. 模型训练 ,模型训练包含基础模型训练和融合模型训练两个模块, 使用者可根据需要在模型训练配置中选择需要使用的模型。

  •  基础模型训练: 基于spark平台开发,目前包含LR,FM,GBDT和 XGBOOST模型。

  • 融合模型模块: 基于基础模型训练完的模型进行融合,包含多模 型的加权融合,模型预测值作为特征的融合,FM因子作为特征的融合,xgboost树索引作为特征的融合四种方式,可根据配置使用其中一种或者多种融合方式。

为了方便调参,对于上述三个功能,在保证依赖数据存在的情况下可选择在训练和测试流程中单独使用每部分,例如在训练采样和特征工程数据都已经存在的情况下,仅需要模型训练不断调参优化,则可在模型训练部分更改完参数后,用运行参数控制只运行训练的模型训练部分,此外,平台提供了web界面,方便配置和模型管理,web界面如下图:

三.总结

本次沙龙大家就推荐系统架构、排序算法等方面进行分享,一起讨论了各自在系统建设、效率优化等过程中的技术亮点和遇到的一些挑战及解决方案,同时大家还讨论了系统优化及效率优化中的前沿技术方案,对于后续推荐系统改进和效率模型优化有很大帮助。通过这次沙龙沟通交流,大家收获颇丰,认识了兄弟公司的朋友,希望大家以后在推荐系统架构优化及效率优化方面有更多的探索和交流。