2014年6月,达达配送上线,并迅速成长为国内最大的众包配送服务平台,为数十万商家提供低成本、高效率的配送服务。
2015年7月,为了更好地连接消费者和商家,达达推出了自己的外卖信息服务平台-派乐趣,实现了上游信息服务和下游配送服务的完整闭环。消费者可以通过派乐趣平台获取点餐、支付、配送、评价等一系列服务。成立以后,派乐趣经历了高速的增长,并在2015年底突破了一百万的日单量。
随着派乐趣入驻商家的快速增长,如何对附近的候选商户进行有效排序,帮助用户快速找到最适合自己的餐厅,成为派乐趣面临的一个核心问题。
所有的信息平台在信息的展现过程中都会碰到排序问题。如何通过排序将更高质量的信息展现给用户,提供更好的用户体验,是信息平台必须解决的一个问题。
和传统的搜索排序和电商排序相比,外卖平台的商户排序有着特殊的需求,需要考虑的因素包括:
业界用于解决排序问题的主流手段是learning to rank方法。 learning to rank方法又可分为三类: pointwise、 pairwise和 listwise。
三种方法中, pairwise和listwise方法在搜索排序、文本检索等领域效果更佳。pointwise方法则被广泛应用于搜索广告、团购平台和外卖平台的排序问题中。在应用中, pointwise方法会对所有的候选结果给出一个统一标准的分值,并根据分值进行排序。 相比于另外两种算法, pointwise 方法比较容易和其它控制项叠加,适用于不单纯追求相关性或转化率,具有多维度优化目标的问题。
派乐趣的商户排序就是有着多维度优化目标的问题,不仅需要优化转化率,还涉及到新店保护、商户质量控制、距离控制等各种细节考虑。因此,我们采用pointwise方法来解决派乐趣的商户排序问题。
最早的时候,派乐趣使用人工制定的规则来对商户排序,主要是对距离、时段、品类、评分等特征进行离散化,针对不同的区间段人工设置不同的分值,根据一个公式计算出总的分值,对商户进行排序。采用人工规则的好处是:实现简单,解释性强,容易施加控制,没有冷启动的问题,比较适合业务早期数据不足时快速实现功能。
后来,随着业务的发展,对规则的维护和升级变得越来越复杂。同时,人工决定的规则无法保证完全合理,也无法捕捉到数据中的隐藏关联。为了解决这一问题,我们引入了转化率预估模型,对商户的转化率进行实时预估,将转化率和人工因子结合在一起,计算出一个组合分值,作为排序的依据。
对于外卖平台来说,体现平台效率的核心指标是转化率,即访问平台的用户中下单的比例。我们的排序系统也是以此为主要目标进行优化: 我们希望针对每个用户,把转化率最高的商户排到最前面,从而提升系统整体的转化率 。为了保证准确性,转化率的预估考虑了用户、商户和上下文维度的多个特征。
同时,在排序的过程中,也需要考虑新商户保护、距离、优质商户优先等其它因素。这部分因素不一定和转化率直接相关,但是对于整个平台的健康发展至关重要,需要进行一定程度的特殊控制。因此, 我们将其设置成多个人工系数,和转化率一起作为排序的依据 。
综上,对于每个商户来说: 最终的排序score = 预估转化率 * 人工系数
我们使用基于离散特征的逻辑回归(logistic regression)模型来对转化率进行预估。主要原因是:
转化率模型的数据流主要分成两部分: 线下训练 和 线上预估 ,具体架构如下:
模型训练模块主要根据历史日志进行定期训练,获得预估模型,主要步骤为:
模型预估模块则会加载训练好的模型,用于线上的转化率预估,主要步骤为:
排序算法的评估分成两部分:
ABtest实验结果显示,通过引入转化率预估模型,加上特征上的改进,相对于原有的规则排序,系统整体uv转化率有15%-20%的提升。
在构建排序算法的过程中,我们有了一系列的思考,总结如下:
以上是达达在商户排序中的一些实践和经验,我们最大的体会是:O2O领域在时间和空间上都有着更为严格的限制,对算法也提出了不同于传统线上算法的要求。
作为众包物流领域的领导者, 达达在供需检测、动态定价、路径规划、订单合并等方面正在进行不懈探索。我们也清楚的看到,这些领域隐藏着无数有趣的算法问题,等待我们去挑战。欢迎感兴趣的同学加入达达,和我们一起,在这一全新的算法领域里探索、学习和创新。
更多关于达达技术的文章,敬请关注达达技术公众号。