让Instacart成功的算法

Instacart每天处理pb字节的数据,以预测杂货店货架上的商品,甚至预测找到停车位需要多长时间

13分钟读数
Instacart购物者到达订单项目的图像。
照片:Instacart
粉红色的

周日早上,而且,在你的社交距离清晨徒步旅行之后,你会看看接下来几天的日程安排。你需要补充冰箱里的食物,但周末超市里拥挤的人群并不能让你兴奋。周一和周二挤满了Zoom会议,你还将监督你孩子的远程学习。简而言之,你不会很快去杂货店。所以你拿出手机,启动Instacart应用程序,并选择您最喜欢的杂货店。你可以点击之前购买的商品列表,浏览特价商品,搜索朋友推荐的新key-lime苏打水,然后选择送货窗口。大约两小时后,你看到一个戴着口罩的购物者把袋子放在你的门廊上。

交易似乎很简单。但这种表面上的简单依赖于幕后精心编排的复杂技术网络,由大量应用程序、数据科学、机器学习算法和人类购物者提供支持。

当然,杂货配送并不是一个新概念。在我们曾祖父母的时代,人们可以在附近的商店挑选商品,然后空手走回家,然后再去买杂货,很可能是由一个十几岁的孩子骑着自行车运来的。顾客通常每周都会收到牛奶和鸡蛋等基本食品。但是,随着库存充足的超市的出现,由于它有广泛的主食、农产品和特色食品可供选择,顾客开始从商店货架上挑选商品并自己带回家,尽管在一些城市,当地商店仍然提供送货服务。

然后在1989年,豆荚公司在20世纪90年代中期紧随其后Webvan而且HomeGrocer-试图在互联网时代重振食品杂货配送。他们在配备自动化库存系统和运输车队的复杂仓库上投入巨资。虽然这些服务因其高质量的产品和较短的交货窗口而受到一些人的喜爱,但它们从未盈利。行业分析师得出的结论是,在数十个大城市建立配送网络的成本,迅速侵蚀了食品杂货行业本已微薄的利润率。

Instacart购物者使用冷冻通道购物的图像。

想象一个显示Instacart订单的手机。

家门外的Instacart杂货订单图片。在新冠疫情时期:疫情期间,Instacart的订单激增,该公司增加了约30万名购物者,客户还可以选择避免与人接触:“送货上门”。照片,上下:Michael Loccisano/Getty Images;中:切尼·奥尔/路透社

当然,时机决定一切。云计算和廉价智能手机出现在第一代在线杂货公司成立后的十年里。到2012年Instacart成立时,这些技术已经创造了一种环境,在这种环境中,在线杂货订购终于可以大行其道了。

如今,零售商目标而且全食超市(通过亚马逊)提供派递和取货服务,使用他们现有的实体设施。这些零售商中,有些在仓库中经营送货业务,有些从零售店的货架上取货,有些则两者兼而有之。只在网上运营的小型公司好蛋不完美的食物,繁荣的市场提供精心挑选的来自当地农场和供应商的食品杂货。

与此同时,食品和杂货配送服务的出现,将实体餐厅和商店引入了在线经济。这些业务包括DoorDash登船,超级吃在美国,和BuymieDeliveroo,Grofers他们已经建立了技术平台和履行网络,现有的商店和餐馆可以利用这些平台与在线客户联系。在这个模型中,零售商或餐厅离顾客最近的物理位置是“仓库”,由独立承包商组成的社区负责履行和交付。

我们的老板,Instacart该公司是这类在线杂货服务的北美领导者,拥有500多家杂货店,其中包括阿尔迪好市多狮子的食物LoblawsPublix西夫韦山姆会员店豆芽农贸市场,Wegmans包括美国和加拿大近4万家实体店。在COVID-19大流行开始时,由于消费者听从了居家令,我们看到了我们的订单量激增与2019年同期相比,增幅高达500%。这一增长促使我们将可以访问该平台的购物者数量增加了一倍多,从3月初的20万增加到年底的50万。

下面是Instacart的工作原理。

从客户的透视,订购过程很简单。顾客首先打开手机应用程序或登录网站。他们输入他们的送货邮编来查看可用的零售商。在选择一家商店或零售连锁店后,他们可以浏览农产品、熟食或零食的虚拟通道,搜索特定的产品,点击将商品添加到在线购物车中,并根据需要指定重量或数量。完成后,他们会看到一个2小时的送货窗口列表,从当天晚些时候到未来一周或更长时间。在顾客开始从货架上取货之前,顾客可以调整他们的订单,通常是在送货窗口前一两个小时。他们可以提前输入首选的替代品,或者实时与购物者聊天,了解有什么可用。一旦食品杂货离开商店并开始移动,当他们的订单即将交付时,顾客会收到警报。

这就是客户眼中的Instacart。在幕后,我们面临着巨大的技术挑战,以使这一过程发挥作用。我们必须跟踪近4万家杂货店的产品——数十亿个不同的数据点。我们必须预测在给定的时间,在给定的地区,我们的50多万购物者中有多少人会在线并可以工作。我们必须将来自不同客户的多个订单分组成批,以便指定的购物者能够有效地挑选、包装和交付它们。当产品用完时,我们建议最好的替代品。最后,我们将购物者按照最有效的路线分配到不同的送货地址。我们每天都在处理大量的数据,以保持面向客户的Instacart应用程序、我们的Shopper应用程序、我们的业务管理工具和其他软件都在运转。

让我们从我们如何跟踪货架上的产品。一般的大型超市有大约4万种独特的商品。我们的数据库包括这些产品的名称、图片、描述、营养信息、定价,以及每家商店近乎实时的可用性。我们每天处理pb字节,以保持这数十亿个数据点的更新。

通过他们的应用程序Instacart过程的截图。

图片:Instacart
App到App:顾客可以使用Instacart的应用程序选择食品杂货,并选择一个送货窗口。然后,Shopper应用程序接管,指导Instacart的承包商在商店之间完成分组订单,建议更换,最后将他们送到顾客家门口。

早在2012年,当Instacart开始在旧金山湾区进行第一次送货时,我们依靠人工方法将这些产品数据输入到我们的系统中。为了储存我们的第一套虚拟货架,我们的创始人和少数员工去了一家商店,每种商品都买了一件,装满了一辆又一辆的购物车。他们把所有东西带回办公室,用手把产品数据输入系统,用手机拍照。它成功了,但显然没有规模化。

如今,Instacart收集了来自各种来源的产品数据,依靠基于规则的自动化系统对其进行分类。许多商店每天向我们发送一次库存数据,包括价格和商品可用性,而其他零售商则每隔几分钟发送一次更新。大型消费品公司,比如通用磨坊而且宝洁公司,向我们发送详细的产品数据,包括图片和说明。我们还从第三方公司购买专业数据,包括营养和过敏信息。

我们数据库中的一个列表可能包含来自几十个来源的信息,必须对这些信息进行整理。假设一种流行的苹果汁刚刚进行了品牌重塑,并采用了新的包装。我们的系统必须决定是使用上周第三方数据提供商提供的图像,还是昨晚本地商店发送的图像,还是当天早上制造商提交的图像。

我们的规则解决了这个问题。通常,制造商在品牌重塑当天上午提供的图片和其他数据会比各个门店在前一天晚上提供的数据更及时。但是,如果商店和制造商几乎同时上传数据呢?在这种情况下,我们的规则告诉系统信任制造商提供的图像,并信任商店提供的价格和可用性数据。我们的目录24小时自动持续更新,以适应各种增量变化——平均每24小时超过10亿个数据点。

因为Instacart没有拥有并经营自己的商店或仓库,我们无法完美地了解某个特定商店的货架上任何时候都有什么,更不用说当天晚些时候或未来几天会有什么。相反,当我们在虚拟货架上进货时,我们需要做出明智的预测。这里有很多需要考虑的问题。某些地区的商店可能会在周一上午收到农产品,在周四晚上收到肉类。有些商店会在白天定期补货,而有些商店只在晚上补货。我们已经建立了两个机器学习模型,以帮助我们了解每家商店货架上的商品,并管理我们的客户对他们在购物袋中实际收到的商品的期望。

我们的商品可用性模型预测了在任何给定时间任何地点的流行商品库存的可能性。我们使用自己的数据集训练这个模型,其中包括来自北美各地的数百万个匿名订单。有些商品——比如特定品牌的有机鸡蛋、薯片或调味盐,或者小众商品,比如新鲜的stroopwafels-被认为是“活跃的”,这意味着它们全年都定期从特定的商店订购。“非活动”项目包括停产产品以及季节性项目,如蛋酒、降临节日历和Peeps棉花糖。该模型着眼于我们的购物者多久能够购买他们订购最多的商品的历史。对于每一个,它计算一个从0.0到1.0的可用性分数;得分0.8意味着该商品有80%的几率被购物者在商店中找到。我们可以实时更新这个分数,因为我们的购物者会扫描他们拿起的每件商品,或者将其标记为“未找到”。

Instacart的应用程序和算法

Instacarts关于客户如何使用其服务的流程信息图。Instacart的客户可以在移动设备上或网站上使用该公司的应用程序订购杂货。在幕后,数据库、机器学习模型和各种算法与该应用程序交互,帮助客户对订单进行微调。然后,他们将订单交给购物者,在更多模型和算法的帮助下,购物者会被引导穿过商店,到达顾客家门口。最后,系统预测到达时间,提醒顾客购物者即将到达,并提示顾客留下小费。插图:Chris Philpot

有了这个评分,我们就可以减少顾客在我们的顾客寻找商品时订购不在货架上的商品的可能性,无论是几个小时后还是几天后。我们可以通过几种方式做到这一点。例如,如果客户最喜欢的一种花生酱的可用性得分很低,我们就会自动在搜索结果中把这一列表往下拉,反过来,就会把类似的产品的可用性得分更高。在这种供应链短缺的时期,我们还将在受影响的商品上添加“脱销”标签,并防止顾客将它们添加到购物车中。

COVID-19大流行在许多其他方面推动了我们的商品可用性模型,并挑战了我们对客户行为的假设。2020年3月,在美国开始下达居家隔离命令时,我们看到卫生纸和消毒湿巾等常见家用产品的需求大幅飙升。这类商品被抢购一空的速度比零售商囤货的速度还要快。消费者的行为有了新的变化——他们不再购买自己喜欢的厕纸品牌,而是抓住任何一种他们能找到的厕纸。作为回应,我们扩大了可用性模型评分的产品数量,包括不太知名的产品。我们还调整了模型,减少了几周前的历史数据的权重,转而支持更能代表时代的近期数据。

如果客户在购物车中添加了一个可用性评分较低的商品,那么第二个机器学习模型——我们的商品替换推荐模型——就会开始工作,提示客户从自动生成的替代品菜单中选择替代品,以防首选商品没有库存。

为客户提供优质的替代品是让他们满意的关键部分。我们的研究表明,如果你在店里为自己购物,你必须为清单上约7%的商品寻找替代品。当Instacart购物者为你购物时,他们不能只遗漏一件商品——有些商品可能对你很重要,如果你在打开Instacart订单后必须自己去商店,你可能不太可能再次使用这项服务。但我们的顾客不会读心术。如果商店里你喜欢的奶油花生酱卖完了,顾客应该用同一品牌的酥脆花生酱来换吗?另一个牌子的奶油花生酱怎么样?

我们在一系列数据输入上训练我们的商品替换推荐模型,包括商品名称、产品描述和5年来客户对我们选择的替代品成功的评分。当我们呈现一个替换选项的菜单时,我们根据这个模型分配的分数对它们进行排序。如果您选择了其中一种替代品,我们会为您以后的订单保留它;如果你没有,我们的购物者会从我们的模型推荐的产品中挑选。

这就是机器学习可以帮助我们在顾客装满购物车时设定他们的期望。一旦下了订单,另一项技术就会出现:Shopper应用程序。Instacart的绝大多数购物者都是独立的承包商,他们已经签约为我们购物,符合要求,并通过了背景调查。他们开车去商店,从货架上挑选商品,结账,然后送货。他们可以通过登录Shopper应用程序随时选择工作。在某些大批量的商店,我们还直接雇佣兼职购物者,他们挑选和包装订单,然后将订单交给承包商交付。

Shopper应用程序包括一系列工具,旨在方便地访问新订单,解决购物者遇到的问题,并指导结账和送货。当购物者准备好工作时,他们打开应用程序,选择一批订单。当他们穿过商店并完成订单时,他们可以通过应用程序内聊天与顾客交流。Shopper应用程序会给出商品挑选顺序,帮助购物者有效地浏览商店。一般来说,这种提货单会把冷藏和冷冻的食物以及热的或新鲜的熟食放在购物之旅的尾声。与此同时,顾客可以通过Instacart应用程序查看购物者的进度,跟踪扫描到购物者购物车中的每件商品,批准替换商品,并查看尚未购买的商品。

当购物者结账时,他们可以通过Instacart邮寄给他们的实体卡支付订单,或者使用Shopper应用程序中的移动支付系统。如果他们遇到问题,他们可以通过应用程序与我们的帮助团队沟通。当他们完成送货时,他们可以使用应用程序将他们的收入转移到他们的银行账户。

我们有很多订单马上来到同一家商店,预定在同一附近交货。在大城市,我们每分钟可能会接到50多份订单。所以我们通常把订单分成批次,同时从货架上取下。

这里,我们的匹配算法开始发挥作用。这项技术应用了经验法则和机器学习模型,试图实时平衡购物者数量和客户需求。算法受益于规模——在给定区域有越多的顺序,我们就能给算法更多的选择,它就能做出更好的决策。它会考虑顾客的年龄等因素:如果顾客未满21岁,他们可能没有资格配送含酒精的订单。我们每隔几分钟就会重新运行匹配算法,因为我们得到了关于订单和送货地点的新信息。

Instacart购物者到达订单项目的图像。

Instacart购物者从购物车中取出杂货的图像。

Instacart购物者在保持社交距离的同时向顾客挥手的图片。照片:Instacart

该算法与我们的容量模型协同工作。这个模型计算的是,随着地面条件的变化,我们一天中有多少运送能力。我们使用机器学习来构建这个系统;它根据历史数据和单个商店的历史购物速度进行需求预测,并将其与实时数据结合起来,包括完成订单的购物者数量和在每家商店排队等候的订单数量。我们每隔2分钟重新运行这个模型,以确保我们能够接近实时地了解我们的容量。这就是为什么客户可能在下午1点登录,看到只有一个晚上的送货时段,但当他们在下午1点半再次查看时,他们看到许多下午的送货时段弹出。

而这些模型对Instacart的运营至关重要,但其他工具对于将食品杂货顺利、可预测地从商店送到顾客手中也至关重要。

我们的Drive Time Model使用历史运输时间和实时交通数据来估计购物者到达商店的时间。我们的停车模型计算购物者进出特定商店停车场所需的时间。如果顾客可能要花10分钟在一个拥挤的小停车场里找个地方,那就需要把这一点计算到该商店的送货时间估计中。

一旦购物者准备好送货,我们的路由算法就开始发挥作用了。这个模型是我们对经典的“旅行推销员”问题的理解。假设有三个顾客在同一城市的三个不同地址,从商店到第一个地点,再从那里到后面两个地点,最有效的路线是什么?这已经够棘手的了,但Instacart还得处理更复杂的问题。例如,在纽约市这样人口密集的地区,一些购物者可能会步行前往目的地。我们还需要确保所有三次送货都在指定的送货窗口内完成——如果客户不在家,太早和太晚都一样糟糕。因此,我们的算法考虑了预计的到达时间,使用实时交通状况,来创建送货路线。我们的系统还会向顾客发送预计到达时间,并在顾客离我们只有几分钟的时候发出警报。

我们所有的数据库,机器学习模型和地理定位技术协同工作,构建一个高效的系统。但是没有一个模型是完美的。

COVID-19大流行这对我们的系统来说是个意外的压力测试。随着居家令在北美地区的蔓延,流入平台的数据比以往任何时候都多,我们不得不反复重新配置数据库和工具,以跟上新的需求。在巅峰时期,我们发现自己每周都要进行多次升级。

我们还必须加快刚刚开始测试的新功能的发布速度:送货上门这让购物者和顾客保持社交距离。购物者可以把杂货放在房子的门廊上,或者公寓大楼的接待处或大厅,然后把他们在现场完成订单的照片发给顾客。

我们一直在寻找优化技术和运营的方法。目前,我们正在探索如何改进Shopper应用程序中的建议挑选顺序。今天,我们依赖于一组基于规则的公式,由人类直觉指导——例如,最好一起挑选新鲜蔬菜和水果,因为它们通常在商店的同一区域。但并不是所有的商店都有相同的布局,特定商店的过道可以重新安排,商品可能会随季节在商店中移动。我们希望能够利用机器学习开发一种算法,根据历史商品挑选数据,以及商店货架的季节性添加和商店布局的定期变化,确定一个地点应该购物的“节奏”。

随着我们增加零售商和品牌,服务更多的客户,我们的算法和技术也在不断发展。我们一遍又一遍地重新训练我们的所有模型,以更好地反映我们平台上的新活动。因此,下次当你点击Instacart应用程序,订购杂货以度过忙碌的一周时,你要知道,来自订单和购物者的匿名数据将被馈送到这个反馈循环中,通知我们训练的模型和我们构建的技术。

我们感到自豪的是,我们的系统能够向北美各地在大流行期间一直在家躲避的人们,特别是那些特别容易受到新型冠状病毒感染的人提供食品杂货。这是非常时期,我们承担起了我们的责任,认真为我们的客户、购物者、合作伙伴和企业员工服务,并保证他们的安全。随着人们继续在家购物,我们希望我们在机器学习方面的投资将继续使每个人都能更容易地获得他们喜欢的食物,并有更多的时间一起享受。

对话(0)

3种方法帮助NASA的全电动飞机起飞

N3-X计划于2040年推出,最多可搭载300名乘客

3分钟读取
一架飞机在云层中飞行的插图

美国宇航局提出的全电动N3-X飞机载客量将是目前电动飞机的10倍。

美国国家航空航天局

这篇文章是我们独家报道的一部分IEEE期刊手表系列与IEEE Xplore合作。

全电动飞机的竞争正在进行中,一些早期设计正在成为头条新闻。在过去的九月,一个原型Eviation爱丽丝完成了8分钟的首飞,以及更多的型号等Heart Aerospace的ES-30,预计将在未来几年内首次亮相。然而,到目前为止,所有这些型号的设计都只能搭载30名或更少的乘客,而且飞行距离很短。

例如,Eviation Alice只能让两名机组人员和九名乘客在200米的距离上飞行463公里ES-30的全电动型号虽然设计最多可搭载30名乘客,但其航程仅为200公里。为了真正降低温室气体排放,缓解气候变化的影响,需要更大的全电动飞机。值得注意的是,大型飞机的温室气体排放占航空业温室气体排放的75%以上,考虑到历史上航空旅行每年增长4%至5%,这些排放可能会随着时间的推移而恶化。

继续阅读↓ 显示更少

利用数据科学和人工智能打击野生动物贩运

纽约大学坦顿分校的朱莉安娜·弗莱雷(Juliana Freire)领导着一个团队,旨在利用数据科学打击贩卖人口和珍稀动物的犯罪分子

5分钟读取
一只五颜六色的鹦鹉被关进了监狱

野生动物走私有了一个意想不到的新敌人:计算机科学、数据科学和机器学习。

在上面

这篇文章是由纽约大学坦顿工程学院

野生动物走私是一个利润丰厚的市场。虽然很难确切地说出它带来了多少钱,但美国政府估计每年有数十亿美元。动物及其器官的交易就像枪支或毒品一样——通过复杂的供应商、经销商和买家网络进行交易,这些人在他们身后留下了一条血腥的道路。破坏是不言自明的;物种灭绝,环境恶化,无辜的人受害。

继续阅读↓ 显示更少
{“imageShortcodeIds”:[]}
Baidu