Uber Eats的食物发现:为市场推荐gydF4y2Ba

0gydF4y2Ba
Uber Eats的食物发现:为市场推荐gydF4y2Ba

即使我们把优步外卖做得更好gydF4y2Ba了解食客的意图gydF4y2Ba当他们使用搜索时,有时食客们只是不知道他们想吃什么。在这种情况下,优步外卖应用程序通过餐厅推荐为每个人提供个性化的体验。gydF4y2Ba

从搜索结果到餐厅列表,再到应用程序主屏幕上的明确推荐,我们根据我们对食客渴望的东西的理解,对餐厅的选择和排名进行了调整。例如,食客可能会注意到,如果他们点了很多辛辣的四川菜,他们就会开始在应用程序中看到更多出售辛辣食物的中餐馆。与此同时,泰国、日本或其他亚洲餐厅的推荐也可能会出现。gydF4y2Ba

我们根据机器学习对每个用户口味偏好的建模,以及对食物类型的语义理解,生成这些推荐。这些建议也有助于支持优步吃市场的整体健康。通过多目标优化,我们可以帮助食客发现各种各样的餐厅,并确保我们的餐厅合作伙伴在应用程序中根据食客的兴趣获得合理的曝光率。gydF4y2Ba

在这个由两部分组成的系列文章中,我们将深入了解优步外卖应用程序,并回顾我们在帮助食客做出决策过程中所做的努力。的gydF4y2Ba本系列的第一部分gydF4y2Ba专注于通过内部食物知识图和表示学习为Uber Eats构建查询理解引擎。在这第二篇文章中,我们将讨论如何不仅根据食客的历史来推荐餐厅,而且还考虑到保持我们市场的健康。gydF4y2Ba

我们的推荐系统之旅gydF4y2Ba

当我们推出第一个版本的Uber Eats餐厅排名和推荐系统时,我们只针对一个目标进行优化:食客从餐厅点餐的概率(食客转化率)。为了达到这一目的,建立了不同类型的监督机器学习模型和学习排序算法。当我们从离线和非个性化模型切换到在线和个性化模型时,我们观察到显著的业务度量提升,验证了实时特性和定制的重要性。gydF4y2Ba

然而,我们很快意识到,仅针对食客转换进行优化并不能提供最佳的整体体验。随着我们继续为我们的平台签约餐厅合作伙伴,我们发现新餐厅,即使是知名和受欢迎的餐厅,订单量也不如我们预期的那么多。由于餐厅合作伙伴只是我们三边市场的一面,我们开始探索如何确保我们平台上的所有餐厅都获得公平的曝光份额,这应该会带来更多的订单。gydF4y2Ba

我们也gydF4y2Ba需要优化整体市场的健康和效率,这也有一个附带的好处,就是让食客接触到更多样化的餐厅。从那时起,我们发展了我们的系统,正如我们在本文后面讨论的那样。gydF4y2Ba

图1:这个时间轴说明了我们在改进系统过程中所涉及的过程和变化。gydF4y2Ba
图1:这个时间轴说明了我们在改进系统过程中所涉及的过程和变化。gydF4y2Ba

市场上gydF4y2Ba

Uber Eats市场由三方面组成:食客、餐厅合作伙伴和外卖合作伙伴。食客通过我们的平台发现并订购食物。餐厅合作伙伴将我们的平台作为寻找顾客的销售渠道。外卖合作伙伴通过从餐馆取餐并将其送到食客手中来赚取收入。gydF4y2Ba

为了确保优步外卖的无缝体验,这个市场的所有方面都同样重要。如果没有足够多的食客下订单,餐馆就不会愿意参与。如果没有足够的餐厅,选择就会减少,想在平台上点餐的食客就会减少。如果订单减少,快递合作伙伴就没有动力签约,因为他们的收入可能会减少。如果送餐伙伴太少,食客的送餐时间可能会增加(食物送到时温度会降低),从而影响整体体验。gydF4y2Ba

另一方面,如果大部分订单集中在某一家餐厅,例如,由于这家餐厅被推荐给所有的食客,它也会引起问题。例如,餐厅可能无法处理突然增加的订单,因此食物的准备可能会延迟,甚至更糟的是,食物的质量可能会受到影响。而且,即使餐馆可以及时准备好所有的订单,我们可能也没有足够的外卖伙伴来取菜并将其送到食客手中。因此,要么订单无法完成,要么我们派了一个距离太远的外卖伙伴来及时取餐,这可能会导致其他连锁问题。因此,这种不平衡的市场供求动态降低了优步吃的整体体验。gydF4y2Ba

图2:Uber Eats的三方市场中的各方都为其整体健康做出了贡献。gydF4y2Ba
图2:Uber Eats的三方市场中的各方都为其整体健康做出了贡献。gydF4y2Ba
(图片来源:餐厅合作伙伴:gst/Shutterstock.com,外卖合作伙伴:Kikuchi/Shutterstock.com,食客:tigatelu/Depositphotos)gydF4y2Ba

为三面市场构建推荐系统会带来一系列独特的挑战,因为市场的每一方都有我们需要考虑的内在和不同的价值。有时这种关系是直接的。例如,更多的订单往往有利于餐馆和外卖合作伙伴,因为这使他们都能从订单中获得更多的收入。gydF4y2Ba

但通常情况下,平衡市场需要微妙的权衡,需要复杂的解决方案。我们前面关于新餐馆的例子说明了这个问题。通过纯粹针对食客转换(更多食客订单)进行优化,我们可能只提升我们知道我们的食客喜欢的餐厅的排名,导致平台上的新餐厅没有收到足够的订单来保持他们在平台上,从而减少餐厅供应。餐厅减少了,我们也可能会失去潜在的食客,他们在我们的平台上找不到足够的餐厅多样性。gydF4y2Ba

超越了顾客转换的目标,我们可以使用餐厅排名和推荐来帮助满足市场各方的需求。gydF4y2Ba

徒gydF4y2Ba

如上所述,在我们的三面市场中,食客是一个至关重要的部分。Uber Eats的使命是“让任何人在任何时候都能轻松地吃到好东西”。我们如何为食客提供“轻松”的体验,让他们找到适合自己口味的餐厅或菜肴?我们如何确保食客“吃得好”?“吃得好”的标准对不同的食客来说是一样的吗?为了应对这些挑战,Uber花费了大量精力以个性化的方式提高优步吃应用程序主屏幕内容的相关性。gydF4y2Ba

目前Uber Eats的主屏幕包含不同类型的内容:餐厅集合(以旋转木马的形式显示),所有可用的餐厅、菜肴和菜系的简单列表。当食客打开优步外卖应用程序时,后台的智能会决定应该显示多少个餐厅传送带;什么样的餐厅传送带应该呈现给这个食客;以及如何对所有餐厅的普通列表进行排名,以便在顶部显示食客想要订购的餐厅。gydF4y2Ba

在应用程序的显示中,有许多不同的考虑因素。如果我们更深入地研究如何为特定的食客最好地排名所有可用的餐厅,这些因素包括:gydF4y2Ba

  • 餐厅本身有多受欢迎?决定受欢迎程度的最佳特征是什么?gydF4y2Ba我们是依赖评级,历史总订单,还是最近一个月的总订单?订单/印象比?gydF4y2Ba
  • 餐厅最具代表性的属性是什么?gydF4y2Ba这家餐厅的准备和送餐速度比其他餐厅快吗?那里有什么菜系?gydF4y2Ba
  • 当前的环境因素是什么?gydF4y2Ba现在是早餐时间还是晚餐时间?目前配送路线的交通状况如何?是工作日还是周末?gydF4y2Ba
  • 什么样的特质最能描述吃东西的人?gydF4y2Ba到目前为止或上个月食客下了多少单?用餐者最常点什么菜?这个人是不是刚开始吃东西?这个食客有没有从他们刚刚点进去的餐厅里把菜放进购物车?gydF4y2Ba
  • 什么因素代表了食客对某家餐厅的偏好?gydF4y2Ba我们有没有查看这个食客点餐的频率?食客给这家餐厅的评价高吗?gydF4y2Ba
  • 志同道合的食客会点什么?gydF4y2Ba我们如何表现和寻找相似的食客?有没有类似的餐厅和菜式?我们如何冷培养新食客gydF4y2Ba协同过滤gydF4y2Ba?gydF4y2Ba

为了在应用程序中显示与我们的食客最相关的餐厅,我们需要确定如何最好地选择和表示上述因素。使用这些数据需要对不同类型的模型进行大量的实验和迭代,以及各种特征工程技术。只有通过不断努力回答这些难题,我们才能提供最好的饮食体验。gydF4y2Ba

多样性gydF4y2Ba

虽然优化餐厅和菜肴的展示以满足食客的需求是显而易见的方法,但这并不一定是得到推荐的最佳方式。想想一个到目前为止只点拉面店的食客。如果我们的个性化相关性模型发挥了作用,它将确定拉面餐厅与该食客的相关性得分很高。因此,食客可能会看到一个主要由拉面餐厅组成的列表,如下面的图3所示。gydF4y2Ba

图3:只根据相关性进行排名会导致缺乏多样性,比如这张拉面餐厅的榜单。gydF4y2Ba
图3:只根据相关性进行排名会导致缺乏多样性,比如这张拉面餐厅的榜单。gydF4y2Ba

虽然食客可能真的喜欢拉面,但这样的列表给人的印象是Uber Eats只提供拉面餐厅的外卖服务,而没有考虑到食客可能不是每次打开应用程序都想点拉面。gydF4y2Ba

这个问题促使我们思考另一个排名目标:多样性。更具体地说,一个好的推荐应该是相关的(这样食客可以很容易地找到相关的餐馆)和多样化的(这样食客也可以探索不同类型的食物)。为此,我们开发了一种个性化的多样化算法,将食客的口味特征和餐厅的菜肴特征作为食客和餐厅的向量表示,并优化相关性和多样性的组合目标。优化是在gydF4y2Ba贪婪的gydF4y2Ba其中,每个位置的餐厅是按顺序确定的。优步外卖个性化多元化的推出导致了业务指标的显著提升。gydF4y2Ba

让食客留在我们的平台上gydF4y2Ba

我们根据相关性和多样性对餐厅和菜肴进行排名的努力增加了食客在我们的平台上点餐的可能性。但下订单只是他们旅程的开始。我们还想利用我们的推荐系统,以确保食客有一个愉快的用餐体验。gydF4y2Ba

这不是一件小事,因为食客从给定的餐馆点的食物可能不符合他们的期望。例如,食客可能会从一家看起来很有吸引力或价格合理的餐厅点菜,但如果食物的味道或数量不符合他们的口味,或者在配送过程中出现摩擦,食客就不会满意,可能不会再从优步外卖点菜。因此,我们希望将与长期成功相关的信号纳入我们的排名和推荐框架。一个准确的预测信号,可以先发制人地预测食客在他们不喜欢的餐厅点餐的可能性,可以帮助我们推荐餐厅,不仅能在一开始吸引食客,还能帮助他们留在我们的平台上。gydF4y2Ba

食客是否会再次从Uber Eats订购是一个延迟信号,这使得满意度比相关性和多样性等其他目标更具挑战性。为了解决这一挑战,我们提出了一个机器学习模型,来预测这个延迟信号,或者更具体地说,如果食客从某个特定的餐厅点餐,那么食客再次从Uber Eats点菜的概率。该模型使用了食客和餐厅过去点单经验的特征,比如送餐时间差异、餐厅准备饭菜的时间以及食客对订单的评分。模型的输出作为gydF4y2Ba多目标优化gydF4y2Ba框架,本文稍后讨论。gydF4y2Ba

restaurant partnersgydF4y2Ba

维护优步外卖市场也意味着要关注我们餐厅合作伙伴的表现。当然,餐厅的受欢迎程度完全取决于我们平台上的食客。然而,我们确实希望让餐厅有机会出现在我们的平台上。gydF4y2Ba

上面列出的简单餐厅列表的相关性排名模型严重依赖于历史数据。如果没有特殊处理,我们平台上的新餐厅可能会因为没有印象和历史订单而排名较低。为了给新餐厅一个公平的机会排名靠前并获得曝光率,我们使用了gydF4y2Bamulti-armed强盗gydF4y2Ba(MAB)框架。gydF4y2Ba

在这种情况下,我们应用gydF4y2Ba上置信界gydF4y2Ba(UCB, MAB的方法之一)的方法,以促进新餐厅或低印象餐厅的探索。我们根据历史印象数、总点击数和推广因子等指标计算每个餐厅的UCB评分。UCB分数,以及上面讨论的其他目标,决定了餐厅的排名顺序。一家新餐厅最初的UCB评分相对较高,因此排名较高,增加曝光率。随着新餐厅获得更多的印象,UCB评分将平稳下降,并逐渐将排名权重转移回相关性等其他客观评分。gydF4y2Ba

图4:一家新餐厅的UCB评分随着其印象的增加而下降。gydF4y2Ba
图4:一家新餐厅的UCB评分随着其印象的增加而下降。gydF4y2Ba

Delivery-partnersgydF4y2Ba

如果没有外卖合作伙伴,食物就无法从我们的餐厅合作伙伴那里送到食客手中,我们就不会有一个三方市场。优步的其他团队专注于改善我们送货伙伴的出行体验gydF4y2Ba调度优化gydF4y2Ba.作为这项工作的补充,我们已经开始探索排名和推荐如何改善交付合作伙伴的体验。gydF4y2Ba

收入通常是激励送货伙伴的主要激励因素,而利用率,即他们在线时可以完成的送货数量,在他们能赚多少钱中起着很大的作用。在这里,通过利用预测的供应位置或密度作为信号,对附近有更多外卖合作伙伴的餐馆进行排名,排名和推荐可能有助于提高利用率。请注意,我们不能简单地使用配送伙伴的当前位置,因为一旦餐厅收到订单,就需要花时间准备食物,因此我们需要在食物准备好的预计时间使用预测的位置。(阅读我们的文章gydF4y2Ba米开朗基罗,我们的机器学习平台gydF4y2Ba这是关于我们如何使用机器学习来估计Uber Eats订单到达时间的用例。)gydF4y2Ba

除了配送合作伙伴的地点外,餐厅的取货时间和不同地点的送餐时间也会影响利用率。除了改善物流和取货体验,我们还在探索如何在排名和推荐中有效利用这些数据。例如,我们可以通过降低取餐时间较长的餐厅的排名来激励餐厅改善送货合作伙伴的体验,这也会导致更长的送货时间。这些努力将使我们能够发现新的方法来改善他们在我们市场上的体验。gydF4y2Ba

多目标优化gydF4y2Ba

虽然我们想要最大化市场中各方的所有目标,但实际上,目标往往是相互权衡的。最有趣的挑战是如何同时优化多个目标。如果两个目标之间有很强的正相关关系,那么优化其中一个目标就会自动优化另一个目标。gydF4y2Ba

不幸的是,我们发现优步外卖业务的目标之间几乎没有正相关。在三面市场中,我们可以很容易地从不同方面确定目标,这些目标根本无法同时达到最优。例如,下图5显示了食客转化率目标(让食客下订单)和市场公平目标(将不太受欢迎的餐厅暴露给更多食客)之间的权衡曲线:gydF4y2Ba

图5:转化率和市场公平性之间存在巨大的权衡。gydF4y2Ba
图5:转化率和市场公平性之间存在巨大的权衡。gydF4y2Ba

如果我们只针对消费者转化率进行优化,我们可能只会向几乎所有的消费者展示几家非常受欢迎和知名的餐厅。新开的或新开的餐厅不会出现在食客的主屏幕上,订单也会减少,这会损害市场公平。另一方面,如果我们只是简单地优化市场公平,确保每个餐厅对每个食客都有相同的曝光率,我们可能会推荐一些不相关的餐厅,影响食客的谈话率。gydF4y2Ba

多目标优化为我们提供了一个在竞争目标之间权衡的数学原则解决方案。更具体地说,我们开发了一个二次规划优化框架。我们在优化其他目标的同时,对我们愿意为每个目标做出的牺牲设置了限制。在这里,我们以两个目标说明优化方法:总订单数和总预订量。更具体地说,让gydF4y2BaxgydF4y2BaijgydF4y2Ba为表示推荐餐厅概率的决策变量gydF4y2BajgydF4y2Ba来吃gydF4y2Ba我gydF4y2Ba,gydF4y2BaX = (gydF4y2BaxgydF4y2BaijgydF4y2Ba)gydF4y2BaMxgydF4y2BaNgydF4y2Ba的所有实例的矩阵gydF4y2BaxgydF4y2BaijgydF4y2Ba.让gydF4y2Ba我gydF4y2BaijgydF4y2Ba成为餐厅的风向标gydF4y2BajgydF4y2Ba推荐给食客gydF4y2Ba我gydF4y2Ba,gydF4y2BaOgydF4y2BaijgydF4y2Ba食客的指标gydF4y2Ba我gydF4y2Ba从餐厅点餐gydF4y2BajgydF4y2Ba,gydF4y2BaGgydF4y2BaijgydF4y2Ba食客之间的订单金额gydF4y2Ba我gydF4y2Ba和餐厅gydF4y2BajgydF4y2Ba.然后,预期的gydF4y2Ba订单总数gydF4y2Ba是:gydF4y2Ba

预期的gydF4y2Ba总预订量gydF4y2Ba是:gydF4y2Ba

在这里gydF4y2BapgydF4y2BaijgydF4y2Ba= E [gydF4y2BaOgydF4y2BaijgydF4y2Ba]gydF4y2Ba预测食客之间的转化率是多少gydF4y2Ba我gydF4y2Ba和餐厅gydF4y2BajgydF4y2Ba,gydF4y2BaggydF4y2BaijgydF4y2Ba= E [gydF4y2BaGgydF4y2BaijgydF4y2Ba]gydF4y2Ba食客之间的预定是预期的吗gydF4y2Ba我gydF4y2Ba和餐厅gydF4y2BajgydF4y2Ba.这两个gydF4y2BapgydF4y2BaijgydF4y2Ba而且gydF4y2BaggydF4y2BaijgydF4y2Ba是个性化的机器学习模型,它使用来自食客、餐厅和实时环境的特征。我们进一步定义了统一排序算法gydF4y2BaU = (gydF4y2BaugydF4y2BaijgydF4y2Ba)gydF4y2Ba米gydF4y2BaNgydF4y2Ba在哪里gydF4y2BaugydF4y2BaijgydF4y2Ba= 1 / (MN)gydF4y2Ba给每个餐厅相同的概率。然后将优化形式化为gydF4y2Ba

我们在哪里最大限度地提高餐厅的总预订额(与二次惩罚)gydF4y2Ba占最优总订单的百分比gydF4y2BaT (gydF4y2BaXgydF4y2Ba*gydF4y2Ba)gydF4y2Ba(0 <αgydF4y2Ba< 1)gydF4y2Ba.gydF4y2Ba

使用gydF4y2Ba拉格朗日对偶gydF4y2Ba而且gydF4y2Ba马的条件gydF4y2Ba,该约束优化问题通过解析公式有效地得到了不同目标组合下每个食客的最终排序函数。此外,每个目标都与一个系数相关联,该系数是约束参数的函数(即。gydF4y2Ba在上面的例子中),并且可以进一步调优。gydF4y2Ba

在多目标优化框架中,每个目标的可调系数都是自由参数,我们需要高效地找到最优权重组合。实现这一点的直观方法是通过在线A/B测试:生成不同的系数值集,并在线观察它们的表现。然而,系数的探索空间随着目标的数量呈指数增长,在线A/B测试需要很长时间进行迭代,而且成本很高,特别是考虑到业务的快速增长。gydF4y2Ba

在这种情况下,这是一个典型的开发与探索的权衡,非常适合MAB框架。我们想要利用目前为止收益最高的最佳系数,同时探索其他可能有更高回报的系数。这里可以应用上下文多臂强盗的贝叶斯优化。给定当前最佳的系数值集,我们还有一个使用epsilon-greedy方法运行的生产会话,该方法为偏差较小的训练数据生成新的系数集,然后用于后续的模型训练和在线优化迭代。gydF4y2Ba

图6:我们的两层解决方案结合了机器学习和多目标优化。gydF4y2Ba
图6:我们的两层解决方案结合了机器学习和多目标优化。gydF4y2Ba

上图6显示了我们的多目标优化的整个排名框架的流程图。在第一层中,我们使用机器学习模型来计算需求预测。第二层添加其他目标并决定权衡和优化。该框架将个性化和多目标权衡与优雅的数学公式结合在一起,输出是针对三方市场优化的个性化推荐。gydF4y2Ba

前进gydF4y2Ba

优步外卖探索团队努力为我们的客户打造最好的应用体验。在一个三方市场中,顾客不仅是食客,还包括餐馆和送餐伙伴。在本文中,我们讨论了我们的排名和推荐如何针对整个市场进行优化,正如我们所了解到的,未来仍有许多挑战,因为市场的每一方都有不同的需求,有时需要权衡。gydF4y2Ba

对于食客来说,我们的系统提供个性化的餐厅推荐,但最终食客们是在寻找特定的菜肴来点餐。因此,我们正在努力将我们的建议提升到菜肴层面,创造更量身定制的用餐体验。这类似于音乐行业从卖专辑到卖歌曲的转变,我们相信,就我们所能提供的体验而言,这将是一个巨大的飞跃。此外,对于新食客来说,我们正在研究如何引导我们的推荐并解决这些问题gydF4y2Ba冷启动问题gydF4y2Ba经常出现在推荐系统中。对于餐厅合作伙伴,我们正在努力平衡向食客提供的促销和优惠的表面,因为这些短期举措通过改变响应它们的食客的行为,对系统产生了有趣的影响。gydF4y2Ba

我们很高兴能够应对未来的挑战,并期待着进一步改善Uber Eats市场。gydF4y2Ba

为了进一步实现这一愿景,我们正在寻找有才华的数据科学家和工程师加入我们的团队。如果您有兴趣帮助我们解决这些类型的问题,请考虑gydF4y2Ba申请加入团队gydF4y2Ba!gydF4y2Ba

订阅我们的通讯gydF4y2Ba以跟上优步工程公司的最新创新。gydF4y2Ba

评论gydF4y2Ba