58 搜索列表页连接效率优化实践
背景
58作为国内最大的分类信息服务平台,涵盖了租房、二手房、二手车、招聘、本地服务以及二手物品等分类信息,连接了百万级的信息发布用户与亿级的信息获取用户。
目前,列表页模式仍是分类信息的主要展示方式,也是用户获取信息的主要途径。在该模式下,用户通过搜索(筛选条件或关键词)获取列表页,点击感兴趣的帖子进入详情页,进一步在详情页上发起微聊与电话沟通等转化行为,进而完成后续服务。连接效率优化就是通过给用户返回感兴趣的信息列表页,从而提升点击转化行为,实现快速满足用户信息需求的目标。
给用户返回感兴趣的信息列表是搜索排序需要解决的关键问题。一直以来,时间序因其简单及时效性强等特点,是列表页排序的主要策略。在帖子量小的情况下,不失为一种有效的排序方式。但随着帖子量的快速增长,达到百万甚至千万量级时,完全的时间序就会带来明显的流量效率与用户体验问题。
本文主要介绍搜索算法团队在58搜索列表上的连接效率优化实践,以优化路线图为主线,涵盖了反馈策略、基础模型、特征升级、模型升级四个阶段,探讨了主流技术应用、新技术探索以及相应的实践体会,效果上实现了流量变现效率与用户体验的显著提升。
综合排序框架
实际列表页排序中,除了效率优化因子外,通常还需要综合考虑时效性、质量因子、业务策略等,为此,搜索团队开发了以排序因子融合为目标的综合排序框架。
综合排序框架是针对58搜索列表页产品特性、58业务场景而开发的一系列排序规范、能力、工具与流程的集合。它涵盖了粗排、精排、调序三个阶段,融合了时效性、质量因子、点击率模型、转化率模型、个性化、相关性、打散去重等多种排序因子。
目前综合排序已经应用于58全部业务线,涵盖的产品也包括精选,精品,普通等多种形式。为了简化,后续介绍中的效率优化效果对比,都是在保证其他排序因子固定的前提下进行的,并且主要基于房产业务的精选与普通产品。
特别的,在与业务协同合作的基础上,排序框架重点输出三种主要的策略能力:
-
流量调控:流量调控是针对58非闭环场景,为保证流量有效性,在效率优化基础上兼顾公平的排序因子。其基本思路是,根据帖子以及发帖人已获得曝光量/点击量与预期量的差异计算流量调控因子,用于排序调权。
-
效率优化:采用机器学习模型,以提升点击率、转化率为目标,这是本文将涵盖的主要内容。
-
质量治理:信息质量是分类信息服务平台的核心关注点。排序团队除了开发一些基础的质量因子(比如服务质量,帖子文本质量,自洽度等)外;还提供了质量因子融合框架,方便业务侧引入业务特定的质量因子来影响排序。
优化路径
效率优化已经成为互联网业务的核心技术能力,点击率/转化率预估作为效率优化的通行方法,在互联网各种场景中也已被广泛应用。比如,效果广告通过点击率预估提升ECPM(千次展现收入)进而提升收入;新闻推荐通过点击率预估给用户推荐感兴趣的新闻提升用户体验;商品推荐通过转化率预估提升交易额等。
随着机器学习发展以及行业实践深入,效率优化已成为一个比较成熟的技术主题,无论是传统机器学习模型,比如LR、FM、GBDT等,还是深度学习模型,比如W&D、FNN、DeepFM等,都有广泛的应用与探索。但在业务实践中,下面三个问题仍是算法团队需要持续探索与关注的核心内容:
1)怎么与业务结合;
2)怎么确定不同业务阶段/优化阶段合适的技术路径;
3)怎么提升算法工程师们的效率,实现团队沉淀与成长。
本文不以算法介绍为重点,而是基于58业务场景与产品形态,以策略优化路径为主线,介绍连接效率优化在列表页排序中的应用实践,分享业务结合以及不同阶段技术路径选择的一些体会,探讨业务实践中的前两个主要问题。针对第三个问题,效率优化平台作为技术解决方案的落脚点,将在后续文章进行介绍。
本文将技术优化路径分成了四个阶段,分别是反馈策略、基础模型、特征升级、模型升级。其中,反馈策略阶段在优化初期主要采用统计点击率与转化率作为效率因子;基础模型阶段关注基础流程建设并主要采用LR,GBDT等传统机器学习模型;特征升级阶段关注复杂组合特征的引入,文本与图像等非结构化特征挖掘以及特征时效性升级;模型升级阶段引入了多模型融合策略并探索了深度学习模型在点击率预估上的应用。在策略优化的同时,也在同步开展效率优化平台的建设工作,针对搜索列表页效率优化场景,目前已经形成初步的全流程平台,涵盖了日志合并清洗、样本生成、采样策略、特征工程、模型训练、离线评估、验证上线以及效果报表等基础能力,为58场景下的不同业务与产品形态提供通用的平台支持。
反馈策略
反馈策略是点击率/转化率优化的基础方法,它通过统计每个帖子的历史点击率或转化率作为排序因子。实践中,反馈策略在业务优化的初期阶段通常都能取得不错的效果,比如在租房业务中,点击反馈策略相比时间序能实现10%以上的提升。其应用阶段一般都是在业务优化前期,这个时候模型训练流程还不完善,数据累计还不充分,可以通过较低代价实现反馈策略,并且通常都能满足初期的效果优化需求,同时也将作为后续进一步模型优化的重要特征。
逻辑上,历史点击率就是统计给定帖子一段时间内的点击量除以曝光量,思路虽然简单,但要真正有效应用,仍需要解决好三个基本问题:
-
冷启动问题,无曝光帖子其点击率怎么计算;帖子曝光量多大才有统计意义;
-
位置偏差,帖子展现位置是点击率的重要影响因素,尤其是在搜索列表页中,排序靠前的帖子其点击率天然的就高,但并不代表该帖子本身的点击率就高;
-
时间衰减,统计通常是一个周期,那么7天前的点击与1天前的点击也是不太不一样的。
因此,为了保证最终反馈策略的有效性,就需要引入相应的优化逻辑,这里主要介绍平滑策略、位置消偏、时间衰减的一些实践思路,针对性的解决上述三个问题。
平滑策略
针对冷启动问题,目前用得比较多方法有UCB(置信区间上界),汤普森采样,贝叶斯平滑等。其中,UCB的基本思路就是统计每个帖子的历史点击率,再根据其曝光次数计算一个置信度上界纠偏;汤普森采样的基本思路则是为每个/每类帖子确定一个点击率的beta分布,通过对beta分布采样来生成点击率;贝叶斯平滑通过为每类帖子确定一个先验的beta分布,点击率计算通过已获取的点击量与曝光量修正beta分布而得到。
在给定数据集上实验对比显示,这三种策略的效果差距不大。在实际应用中,为了配合线上系统以及后期反馈特征构建的方便,采用了贝叶斯平滑策略,并简化了先验beta分布α和β的计算,即采用相应业务入口的全局平均点击量与全局平均未点击量来代替。
位置消偏
位置消偏就是对那些排序靠前帖子产生的点击行为进行一定打折,消除其展示位置对点击行为的影响。针对这一问题,比较了COEC、有效展现两种策略。最终采用了COEC的近似做法,就是先统计出每个位置的固有点击率,在统计给定帖子点击量时,对每个点击用其曝光位置的固有点击率倒数进行消偏,与这种策略对应的,也可以在统计给定帖子曝光量时,对每个曝光用其曝光位置固有的点击率进行消偏。
时间衰减
时间衰减是为了解决新旧数据的融合问题,实践中采用了指数衰减方式,即在帖子的点击量上按照其发生时间进行指数衰减。评估显示,该策略优化效果并不显著,出于工程简洁性考虑,实际应用中没有采用时间衰减策略。
除了上述策略优化外,生成可信点击率还与日志质量以及统计周期密切相关。其中,日志质量是影响效果的关键因素,由于日志中通常会存在大量的无效数据,比如爬虫、用户作弊等,因此日志过滤清洗是保证效果的重要前提,后续在基础模型部分会进一步介绍。统计周期指的是在多长的时间范围内进行,以及从哪个时间点开始往前统计,实际应用中支持了两种形式的点击率:历史点击率,准实时点击率。其中,历史点击率从当天0点往前推30天进行统计,每天计算一次;准实时点击率则从当前时间点往前推7天进行统计,每10分钟计算一次。
反馈策略最终输出了历史点击率、历史转化率、准实时点击率、准实时转化率四维统计量。其中以实时点击率作为反馈策略能够获得10%以上的点击率提升,但是转化效果一般;历史转化率能够带来一定的转化效果但提升并不明显,主要由于转化数据相对稀疏所致;融合各维特征,也能带来一定的效果,但与融合方式密切相关,在基础模型阶段,机器学习模型将会以这些统计量作为特征实现自动融合。
基础模型
反馈策略虽能通过较低代价取得较好的初期效果,但其优化空间有限。因此,模型优化流程建设通常会同步开展,比如日志合并清洗,模型训练流程以及线上支持等。训练模型不是简单的输入一堆数据给某个特定算法就可以实现高质量的模型输出,更为重要的是需要关注这些数据是怎么准备的以及质量是怎么保证的。因此,基础模型阶段将以数据流程建设为主线,辅以已验证的传统机器学习模型,从而实现效果在反馈策略上的进一步提升。实践中,基础模型阶段的数据流程涵盖日志合并清洗、特征工程、模型训练评估与上线验证四个方面。
日志合并清洗
可用样本数据是基于列表页曝光日志、点击日志以及详情页转化日志按照特定字段合并而成的。通常用户行为日志包含了大量的无效数据,比如爬虫,用户作弊行为等,因此,日志清洗是保证优化效果的关键。这一阶段对日志进行了更加规范化的清洗与流量反作弊,基本思路是通过挖掘IP与用户黑名单来来决定哪些日志不进入样本生成与效果统计中。策略上引入了多指标判断机制与作弊标记机制,其中,多指标判断机制,相比于之前的曝光量阈值判别方法,进一步采用了曝光量、点击量、转化量、点击率、转化率五个维度联合判定,有效提升了识别准确率与数据质量;作弊标记机制则通过特定字段标识日志的作弊情况,保留了作弊日志数据,相比于之前将无效或作弊日志直接删除,标记机制为效果数据的进一步分析与回溯提供了支持。
特征工程
合并日志包含了用户ID、帖子ID,上下文信息以及是否点击转化等行为数据,实践中,这种形式的原始样本,特征较少,泛化能力较弱,比如用户ID、帖子ID,这些ID类特征虽然区分能力较强,但数据稀疏,维度过高(以用户ID作为特征,特征维度将达到亿级),整体可用性比较差。实际中,样本数据需要进一步引入用户个性化与帖子结构化特征。其中,帖子结构化是根据其所在类目按照特定模式进行抽取的,比如针对租房帖就可以抽取价格,厅室卫,面积,小区,商圈,区域,房源特色等基础特征;用户个性化是基于用户的帖子点击转化行为进行统计,形成其在帖子维度上的偏好度,比如,用户价格偏好度统计了用户点击过的帖子的价格区间分布,进而形成用户针对各个价格区间的偏好。通过将原始日志样本,帖子结构化特征以及用户个性化特征合并,形成了实际可用的模型训练样本。
这样,一条模型训练样本就包含了帖子特征,用户偏好特征,上下文特征等,特征种类依据业务不同一般在100到200之间。在将这些原始特征输入给具体算法之前,通常会进行特征选择与特征处理。特征选择一般有过滤式、包裹式、嵌入式等几类方式,实践中,主要采用过滤方式,通过计算单特征指标(信息增益,相关系数)来确定特征的重要性,过滤掉重要度低的特征;同时,实现了FCBF算法,该方法不仅考虑特征的重要性,而且能够利用重要性高的特征对其他特征进行筛选来消除冗余,一定程度保证了选择特征集的全面性。特征处理则主要支持离散化,缺省值自定义,热独编码,归一化等基本操作,特征离散化不仅支持人工手动配置,也支持采用决策树自动学习合理的离散化区间。
模型训练评估
具体模型上,基础阶段以了LR、GBDT为主。LR因模型易于理解,效果可预期可分析,算法包完善,线上支持简单等特点,是必备算法;GBDT则因其突出的单模型效果,非线性拟合以及良好的工具包支持等特性,也在基础阶段进行了支持。LR在特征工程上,需要做离散化、热独编码以更好地适应逻辑回归的线性拟合局限,GBDT对特征处理的要求较低,实践过程中只对部分特征做了必要的离散化,比如价格区间。
特征维度上,样本的原始特征维度一般在150左右,LR模型在离散化编码后,特征空间可达百万、千万级别,其维数主要取决于高维特征的引入,比如IP前缀、帖子ID等。
模型训练数据上,通常采用14天的数据做训练,做10:1的负样本采用,3天数据做测试,以AUC作为主要离线评测指标,同时生成准确率、召回率作为辅助指标。
上线验证
完成模型训练,在离线效果符合预期的前提下,需要将模型推至线上。这一阶段,一致性验证与实验评估是实践中的两个主要关注点。一致性验证除了验证线上模型打分逻辑的一致性外,还需要保证特征的一致性。对于非在线生成的特征,由于需要刷入特征中心供预测用,同时还需落地作为训练样本的输入,这就要求保证该类特征时效的一致性,以准实时反馈特征为例,它每10分钟以7天为周期滚动统计,然后刷入特征中心供预测用,同时按统计时间戳落地,作为离线样本特征。对于在线生成的特征,通常离线与在线将共用抽取逻辑,这种情况要求保证在线与离线代码版本的一致性,帖子结构化特征就是这种形式。在实际工作中,出现离线效果好但线上效果不符合预期情况,特征一致性验证通常能够解决大部分的问题。
实验评估是对模型效果的线上检验,需要基于实验系统,目前主要支持按照用户分流的AB实验。实验过程中,通常还需要通过AA测或者置信区间来保证对比的可信性。
基础阶段一方面通过引入更多特征、调整参数等方式来提升模型效果,另一方面在流程建设上持续迭代,固化通用逻辑与数据格式规范,对流程可变逻辑实现配置化或接口化,为进一步的特征升级与模型升级打下基础。实践中,提供了特征开放能力与新模型引入的规范化接口,其中,特征开放能力,允许自由构建帖子维度、用户维度特征,以数据交互形式自动累计合并到样本中,方便引入更多特征以及进行特征优化;规范化模型训练接口为快速引入新模型,以及引入不同架构的模型算法(Hadoop, Spark, Tensorflow)提供了良好的扩展能力。
基础模型阶段聚焦样本特征的数据流程建设,保证数据质量,提供基础能力,效果相比于反馈策略实现了显著提升:
-
在租房普通列表页上实现了20%以上的转化率提升;
-
在租房精选,二手房精选上,取得了超过30%的ECPM提升;
-
在二手车普通列表页上,电话接通率上实现了10%左右的提升。
特征升级
基础模型阶段实现了线上指标的显著提升,完成了特征样本等基础数据流程的建设,进一步优化上,特征升级与模型升级是两个主要方向,其中,特征升级将引入更多特征,更复杂的特征工程逻辑;模型升级则将引入更复杂更强大的模型。实践中,由于特征优化在工程支持以及效果提升上更具优势,因此,先从特征升级入手,这一阶段主要从三个方向进行优化。
时效性升级
特征时效性是影响模型效果的关键因素,比如历史反馈特征,由于每天0点按天更新,与预测时间会存在偏差,不能真实反应帖子的当前情况,影响了模型预测效果。这对时效性高、帖子生命周期较短的业务,比如租房,尤其如此。实践中,时效性提升主要针对反馈特征与用户个性化特征。
在反馈策略阶段,已经生成了以7天为滚动周期,10分钟间隔进行统计更新的准实时点击率与转化率特征。相比于反馈策略直接更新到线上应用于排序,作为特征,在更新到线上特征中心的同时需要落地生成离线分片数据,作为训练样本的特征组成部分。为了与离线样本在时效性上保持一致,样本合并流程会自动根据日志曝光时间与相应实时特征的统计时间进行对齐关联。
历史个性化特征在应用中效果明显,针对58相对低频的业务场景,用户在某些业务上的活跃周期会较短,因此实时个性化特征同样能更精确的反应用户偏好。相应的,在以30天为周期的历史个性化特征基础上,生成了以7天为周期,20分钟间隔的用户准实时个性化数据,在刷入线上用户特征中心的同时,按时间分片落地离线数据,为离线样本合并提供输入。
特征组合
特征组合是提升基础模型效果非常有效的一种优化手段。目前,实现了两种方式的特征组合:笛卡尔组合与匹配组合。其中,笛卡尔组合相当于将两维或者多维特征的取值直接拼接来构建新的特征, 比如,a)租房帖子的价格区间与面积区间的组合,相当于在帖子维度进行了更精细的刻画;b)帖子的价格区间与用户性别的组合,相当于提供不同性别在不同价格区间上的偏好特征。
匹配组合则要求被组合的两维特征之间以某种特定的逻辑匹配,通常应用于帖子特征与用户个性化特征,比如:a)个性化偏好组合特征就是将帖子价格与用户对该价格的个性化偏好匹配,取匹配的偏好度作为特征,该特征反应了用户对该帖子价格的偏好度;b)是否最偏好特征则是将帖子价格与用户最偏好价格匹配,生成取值为0、1的特征,表达了用户最大价格偏好与帖子价格是否匹配;c)偏好偏离特征则计算用户对该帖子的价格偏好度与用户最偏好价格偏好度之间的差距,该组合特征表达了用户与帖子在价格上的匹配差异。
文本图像特征
在帖子维度上,根据业务特性会抽取出相应的结构化特征,但在实际业务场景中,除了描述帖子的基本结构化参数外,标题/描述与图片也是帖子的重要组成部分,在用户发起点击、沟通转化行为时起着关键的影响作用。因此,这些非结构化的文本图像特征,也是模型优化的重要输入。
帖子文本特征抽取目前主要采用词向量方式,即在给定业务语料下,训练好词向量,针对帖子提取特征时,采用分词后各个词向量的求和平均作为帖子的文本特征。同时,针对文本描述抽取的核心关键词也作为文本特征的一部分。
图像特征目前主要开发了传统图像特征与深度图像特征。传统图像特征主要包含饱和度、明度、清晰度、色调、颜色直方图等;深度图像特征主要利用训练好的残差网络,提取最后的全连接层作为特征,实际应用中,由于现有的残差网络全连接层较宽,因此进一步引入了一个128维的全连接层,并利用业务图片数据进行微调后,提取新引入的128维全连接层作为图像特征。
特征升级在模型效果优化上还是比较明显的,租房精选业务通过引入时效性更高的准实时反馈特征与个性化特征,线上效果取得了接近5%的ECPM进一步提升,通过引入组合特征,主要是个性化组合特征,进一步的实现了5%的ECPM提升。文本图像特征上,文本特征在离线AUC评测上,有将近1%的提升,图像特征有千分之三到五的提升,还在进一步的优化中。
模型升级
在LR、GBDT的基础上,模型升级阶段引入了支持特征组合的FM模型;提供了多模型融合策略,支持不同的融合方式;探索了深度学习模型在效率优化上的应用。下图给出了模型升级的概览图。
FM
LR通过特征组合能够进一步实现效果提升,但它要求对业务与数据有深入理解,对个人经验要求较高,特征工程代价较大。FM因其能自动进行特征组合而被广泛使用,实践中主要支持二阶组合,在单模型效果上,FM与GBDT相当。引入FM模型,除了提供更多的模型候选外,特征隐向量提供了新的特征表示候选,可以进一步作为融合模型,深度模型训练的输入。
融合模型
模型融合是被广泛应用的优化策略,包括bagging,boosting,堆砌等多种融合方式,已在各种比赛以及工业界得到验证与应用。在连接效率优化实践中,主要实现了两种形式的模型融合:结果融合与特征融合。
结果融合方式是通过训练一个或多个模型,将每个模型的预测结果作为一维新特征,与原有特征合并,再训练模型。目前,将LR模型的结果作为特征加入到样本中,进一步训练GBDT模型,在实践中效果比较明显。
特征融合方式则是利用训练好的模型,来进一步构建非结果类特征,比如FM的隐向量,GBDT的叶节点编码特征。实践中,GBDT模型叶节点编码特征与其他特征合并后,通过FM训练效果比较突出。
深度学习
随着深度学习在图像,语音以及自然语言处理上取得显著进展,学术界与工业界也在不断的探索其在点击率预估上的应用。目前探讨比较多几个模型包括DNN、FNN、Wide&Deep、DeepFM等,其中DNN采用全连接神经网络,FNN以FM模型的隐向量作为神经网络的输入, W&D则构建了一个包含LR与多层神经网络的综合模型结构,DeepFM可以认为是FM与W&D进一步的结合。
考虑到应用的广泛性以及工程架构的便利性,W&D是我们首先探索的深度学习模型。该模型可以看成是LR和DNN的融合体。因此在实践中,关键挑战是怎么为Wide部分以及Deep部分选取合适的特征,通过进行多轮实验尝试,最终在Wide部分以使用帖子特征与组合特征为主,Deep部分则以个性化特征与反馈特征为主。效果评测上,基于租房精选上的数据集,AUC指标相比于LR在百分位上有一个点的提升。
深度学习在点击率预估上应用仍是进一步的探索方向,未来会实践各种模型变种,与此同时,怎么将深度模型训练与传统模型流程结合,是平台一体化建设上需要进一步解决的问题。
总结展望
通过反馈策略、基础模型、特征优化、模型升级四个阶段的持续迭代,搜索列表页连接效率实现显著的效果提升:
-
房产精选业务上,二手房精选、租房精选实现了相比时间序基线40%到50%的ECPM(千次展现收入)提升,50+%的转化率提升。
-
普通业务上,租房,二手房,二手车上实现10%的转化率提升,普通业务上,提升幅度相对较低,主要是因为在综合排序框架中,普通排序策略引入质量分层、时间分层、流量调控分层等基础策略,对效率优化有比较大的限制。
后续将从以下几个方面进一步开展优化:
-
特征层面:文本图像特征将进一步优化;基于深度学习模型的特征编码是进一步的探索方向;同时,与业务形态结合的特征工程仍会重要优化点。
-
模型层面:深度模型的探索与应用会进一步加强;多模型融合会实现更灵活的框架化支持;同时在系统架构与流程上支持在线学习。
-
平台层面:将进一步夯实流程,实现从日志合并清洗,样本生成合并,采样策略,特征工程,模型训练,离线评估,验证上线以及效果报表的全流程整合,形成统一的效率优化平台。
在效率优化的长期实践中,总结了几点体会与大家分享。
-
尽可能循序渐进:就如实践过程中描述的优化路径,通过逐步迭代,可以实现效果稳步提升,保证每次优化得出可借鉴的结论。同样如果循序优化,每一阶段每次优化都是以之前结果为基础,效果问题排查通常也就没有那么盲目,而是有迹可循,有据可依。
-
关注数据丰富度与质量:也是业界共识,数据的质量决定模型的质量,更多的有效数据源是实现效果大幅提升的关键。
-
明确业务优化目标:效率优化也需与业务结合,以业务指标为目标,而不是为了效率而效率。比如在租房普通排序上,仅就效率指标优化而言,可以进一步大幅提升,但针对58非闭环场景,关乎用户体验的信息质量以及信息有效性就必须作为重要的排序因子。
-
保证线上线下的一致性:做算法的同学往往忽视线上预测流程,没有保证好特征与模型逻辑的线上线下一致性,在不可预期效果出现时,就很难发现问题所在。
-
新技术探索与优化目标的权衡:前沿技术做好预研探索,建议不要脱离优化目标。
-
关注平台化建设:只要效率优化是要长期开展的,平台建设可以实现复用、沉淀、快速接手,大幅提升优化效率,降低门槛。