履約時間預估:如何讓外賣更快送達?

簡介: 相信大部分人都有點過外賣的經歷。在餓了麼,爲了讓騎手可以準時準點將外賣送到每位用戶的手中,讓每位用戶吃上一口熱乎飯,阿里本地生活智慧物流團隊對外賣履約時間預估這一問題進行了深刻研究,並給出了有效的解決方案,本文將爲你們作一個簡要介紹。算法

image.png

前言

近日,阿里本地生活智慧物流團隊的一篇論文——Order Fulfillment Cycle Time Estimation for On-Demand Food Delivery被KDD’2020 Applied Data Science Track接收爲Oral presentation(ACM Knowledge Discovery and Data Mining(SIGKDD),CCF A類會議,數據挖掘領域頂級會議,2020 年的口頭報告接受率爲 5.8%)。網絡

外賣履約時間預估(OFCT:Order Fulfillment Cycle Time)問題相比通常的時間預估問題而言更爲複雜,其中存在餐廳與用戶的供需關係、餐廳出餐時間的未知性以及騎手行爲的不肯定性等問題。在論文中咱們向學術界首次詳細介紹外賣履約時間預估這一問題,並給出了有效的解決方案,最後獲得了審稿人的一致承認。框架

經過逐步拆解整個外賣履約(履約:餓了麼平臺保障騎手可以將外賣準時送達給用戶)的過程,咱們分析了外賣履約時間預估相比常見的其餘送達時間問題(例如打車)的顯著差別,並針對影響履約時間長短的特徵進行了解釋和說明。對於用戶而言可能只是看到外賣須要多久才能吃到,而在這背後須要咱們提煉出豐富的影響因素,來保證履約時間預估的準確性。咱們將這些影響因素輸入深度神經網絡來推斷它們和履約時長的關係,同時咱們進一步引入了餐廳、用戶地址以及騎手的隱向量來加強模型的預測性能。最後,咱們提出一個新穎的後處理神經網絡算子,用於改善模型的收斂速度和準確度。咱們所介紹的模型已在餓了麼實際部署,天天服務於千萬用戶。分佈式

背景介紹

履約時間預估模型預估的是從用戶下單到騎手將訂單送達用戶手上的這段時間(即預計送達時間)。餓了麼平臺天天產生千萬級訂單量,時間預估做爲即時配送的其中一環,既影響用戶體驗同時也涉及到騎手履約,所以其準確性對平臺而言相當重要,既不能預估的太長(影響用戶體驗),也不能預估的過短(騎手沒法按時完成配送)。下圖爲時間預估涉及的各個環節。函數

image.png

主要環節包括:性能

  • 用戶:用戶從下單到訂單送達其手中。對於每一位用戶而言,確定是但願可以準時拿到下單的餐品。
  • 餐廳:餐廳從接受訂單到備餐完成。餐廳須要作到儘快完成備餐,這樣纔可以不影響騎手取餐及配送,若是騎手到達餐廳的時候須要等待好久的時間才能取走餐品,那麼騎手容易焦慮,一部分用戶也會在餓了麼App上催促騎手。
  • 騎手:騎手從接收到訂單到完成配送。其中包括騎手到達餐廳,而後從餐廳處取走訂單對應的餐品。同時,騎手可能從餐廳處取多餐,所以須要等拿到全部訂單騎手纔會離開並進行配送。
  • 平臺:餓了麼平臺須要從中協調用戶、餐廳、騎手併兼顧配送效率。這其中包括訂單指派與路徑規劃。訂單指派是指將訂單分給附近合適的騎手,而路徑規劃是指給騎手推薦合理的取送路徑,此路徑須要同時考慮騎手配送距離和訂單超時風險。

下圖即爲你們平常在餓了麼上面點外賣的時候可以看到的信息,其中配送時間就是咱們履約時間預估模型計算出的。學習

image.png

外賣履約時間與 ETA 的差別

Estimated Time of Arrival (ETA)即「預估送達時間」,通常預估的是從出發地到目的地的時間,打車場景中的預估送達時間即爲一類典型的ETA問題。測試

本文提出的外賣履約時間預估模型,預估的是從用戶下單開始到騎手將餐品送達用戶手中所花的時間,用戶在餓了麼點了外賣之後,訂單在平臺開始流轉的過程以下圖所示。編碼

image.png

外賣履約時間預估相比預估送達時間而言更爲特殊,主要體如今如下兩方面:spa

1 須要考慮更多影響因素

通常的預估送達時間問題僅需考慮天氣、交通情況,時空信息及路徑信息等,而外賣履約時間預估問題除了考慮此類信息外,還需考慮餐廳的地理位置,餐廳訂單備餐時間以及調度系統派單等信息。

2 沒法獲取關鍵信息

用戶下單成功時餓了麼已經爲用戶預估出預計送達時間,而此時訂單並未被騎手接單,騎手須要被系統指派才能開始取餐和配送,所以咱們沒法提早獲取騎手的信息及其實際的配送路徑。

以上兩方面的差別給外賣履約時間預估問題的準確性帶來極大的挑戰。

外賣履約時間預測通常須要哪些特徵

爲了建模外賣履約時間,通常須要充分利用與訂單信息相關的數據,具體包括:

  • 空間特徵:包括大量id類特徵,例如用戶所在區域id,餐廳id,城市id及網格id等。
  • 時間特徵:包括小時時刻,當天是否工做日等,以下圖(a)。
  • 描述訂單大小的特徵:包括訂單對應的菜品數量以及訂單價格等。

你們應該會好奇訂單價格會對外賣時間長短形成什麼影響?當用戶下單的金額較高時一般餐品對應的重量或體積較大,好比用戶預訂了蛋糕或者集體點了不少杯奶茶,這種總金額高的訂單對於騎手而言屬於難配送訂單,所以須要花費較長的履約時間。下圖(b)展現出了這種相關性,能夠看到訂單價格的高低在必定程度上能夠刻畫出訂單是否難配送的隱含信息。

image.png

供需關係對履約時長的影響

從平臺角度看,用戶下單量和餐廳接單量不一樣時刻都在發生劇烈變化,這種供需維度上的變化對實際配送時長會形成極大影響。

在介紹供需特徵構造的工做前,先爲你們介紹外賣配送中「波次」的概念:對於騎手身上的一組訂單,對給定的一組訂單取送順序進行分組,保證每組中全部相關訂單的取和送行爲都在該組中,該分組則爲騎手當前配送的波次。針對供需變化,咱們構造了基於時段的供需比和完成率等特徵。當供需比越高時波次的平均長度會變長,此時履約時間越長。

另外一方面當完成率越高時能夠推斷出騎手完成配送的訂單越多,此時騎手能夠繼續承接系統接下來分派的訂單。

此外,咱們經過餐廳當前待取餐單量(餐廳接單後等待騎手來取的訂單數)來刻畫餐廳的繁忙程度,當餐廳接單數變多而產能受限時會致使訂單積壓,此時若是騎手已經到達餐廳則須要花費較長的等待時間才能取到餐品,相應的當餐廳變繁忙時,模型預估的履約時間將變長。

餐廳的出餐時間

訂單的出餐時間是外賣履約時間預估模型的一個重要影響因素,這個特徵咱們是經過聚合餐廳的歷史出餐時間獲得的。但目前存在的難點問題對出餐時間計算的準確性帶來極大考驗,主要包括:

  • 餐廳在備餐完成後缺少人力來逐單點擊出餐按鈕,致使咱們平臺不能徹底蒐集到餐廳出餐的真實值,所以咱們目前主要依靠系統採集的騎手點擊出餐數據來標記餐廳的真實出餐時間。
  • 餓了麼平臺目前主要計算的是餐廳在餓了麼App產生的訂單,缺少餐廳在其餘渠道產生的訂單或堂食訂單數據,所以較難獲取餐廳的實際供需狀況。
  • 餐廳的真實出餐時間具備較大的隨機性。例如餐廳針對某些餐品可能會提早進行備餐,這部分提早備好的餐品能夠當即出餐。而對於用戶下單時餐廳須要現作的餐品,騎手到達餐廳後可能須要等待一段時間才能取到餐,這部分現作的訂單真實出餐時間將會偏長。
  • 訂單的前後順序不必定表示餐廳出餐的前後順序。因爲餐廳竈臺數量有限,相應的竈臺只會處理固定的菜品,所以在一批訂單中若是出現相同的菜品,後廚會選擇一塊兒作,這種狀況下部分訂單的出餐時間會明顯偏短。

在實際運用時,咱們是根據商家接單時間到騎手實際點擊取餐時間來計算商戶的真實出餐時間,而這其中存在一部分噪音數據:

  • 騎手接單後即刻點擊到達餐廳
  • 騎手接單後即刻點擊取餐按鈕

此外,對於一部分訓練樣本,咱們認爲騎手在取到餐品時實際上餐廳已經備餐完成,例如騎手晚取餐或騎手同時點擊取多餐。針對這些數據咱們在計算餐廳出餐時間特徵時進行了必定比例的剔除。

如何合理利用騎手信息

餓了麼從平臺角度出發,將每一個城市劃分紅了以「網格」爲最小單元的不一樣區域,每一個蜂鳥配送站點內的騎手會服務於站點周邊範圍內固定的若干個網格,騎手對站點輻射的網格內的商圈或者小區的熟悉程度決定了其配送效率。從下圖你們能夠看到,由於騎手對餐廳所在位置、用戶所在小區都比較熟悉,所以在取餐或者配送的過程當中並無發生繞路的狀況。

image.png

而用戶下單成功時餓了麼App會馬上爲用戶顯示外賣預估履約時間,此時訂單指派給具體哪位騎手來配送是未知的。爲了充分利用與騎手相關的影響因素,咱們根據騎手取餐距離、騎手當前接了多少訂單等特徵來表徵訂單可能被接單的每一位騎手,而後將可能接單的騎手序列進行特徵編碼傳入外賣履約時間預估模型中,隨後利用注意力機制提取騎手序列信息,以此來加強模型的預測能力。

多維度類似訂單的配送段 ETA

配送段ETA指的是預估騎手到達目的地(用戶所在位置)附近下車後將餐品送到用戶手中所花的時間,是騎手配送的最終環節。

爲了估算配送段ETA,咱們理論上能夠直接採用迴歸模型來學習,可是經常使用的迴歸模型一般將輸入轉化爲一系列的特徵,而且經過有監督學習找到這些影響因素和輸出目標之間的關係,爲了方便學習和提升模型泛化能力一般基於神經網絡和集成樹模型將這些關係參數化爲一個平滑的函數,但這種平滑假設的缺點是沒法很好的處理長尾不規律case,可能會影響用戶體驗。例如當騎手送餐須要乘坐高層電梯時,若是趕上高峯期,可能須要等待很長的時間,而系統很難作到這種實時的預判。從下圖能夠看出,騎手送餐時在樓內花了7.6分鐘。

image.png

爲了部分緩解這種問題,咱們借鑑了近期基於記憶的語言模型[1]的思想,將歷史訂單做爲配送段時間預估的語料,經過構造多維特徵來表徵每一個歷史訂單,當新的訂單產生時咱們基於K近鄰來搜索出與新訂單類似的若干個歷史訂單,而後對這若干個類似單的真實配送段時間作加權平均,以此做爲新訂單的預估配送段時間。最終咱們將基於K近鄰搜索出的預估配送段時間做爲特徵輸入外賣履約時間預估模型中。

針對長尾數據如何解決

時間預估本質上屬於迴歸問題,在訓練模型的過程當中咱們發現模型收斂較慢且交叉驗證的表現偏離預期,經過分析緣由咱們發現模型擬合的數據分佈與真實履約時間的分佈發生了偏移,真實的履約時間其實是一個右偏長尾的分佈,至關於有一小部分訂單真實的配送時間偏長而模型沒有學習到,針對此問題在本文中咱們提出了一個新穎的後處理神經網絡算子,針對外賣履約時間預估模型的擬合結果進行縮放和變換,用於改善模型的收斂速度和準確度。此後處理算子可描述爲:

image.png

其中,

image.png

通過離線訓練驗證,後處理算子可有效提高外賣履約時間預估模型收斂速度和準確度。

近期,咱們又探索出一種新的後處理算子:自適應Box-Cox逆變換,相比於本文提出的後處理算子,自適應Box-Cox逆變換算子更加可以擬合長尾數據分佈,使模型效果獲得了進一步改善,目前此算子已經應用於線上推斷。

實驗效果

咱們提出的外賣履約時間預估模型以「編碼及預測」做爲模型主體結構,具體結構以下圖所示。

image.png

其中,Nearest Courier Index這個模塊實現了前面介紹的騎手信息編碼,這個模塊可讓模型充分利用可能接單的騎手信息;Postprocessing即爲後處理算子,這個算子讓模型可以更快收斂,同時也提高了模型的準確率。

在咱們提出外賣履約時間預估模型前,線上時間預估模型已經穩定運行了一段時間,所以咱們以線上已有模型做爲baseline進行了AB實驗。下圖實驗數據顯示,外賣履約時間預估模型相比於原有模型,MAE相對下降9.8%,用戶投訴率相對下降19.3%,預測偏差和用戶投訴率均有明顯改善,對用戶體驗產生了明顯的正向效果。

image.png

總結與展望

在本文中咱們爲你們介紹了餓了麼目前線上實際運行並服務於用戶的外賣履約時間預估模型,經過離線評測及在線測試均證實了其有效性。

將來咱們主要將着力於以下兩方面繼續研究:

  • 出餐時間做爲外賣履約時間預估模型的影響因素之一對其至關重要,但目前出餐時間處理相對簡單所以具備至關大的提高空間。
  • 此外,咱們將研發出一套通用的模型框架,即針對出餐時間和履約時間進行多任務學習。
參考文獻

[1] Urvashi Khandelwal, Omer Levy, Dan Jurafsky, Luke Zettlemoyer, and Mike Lewis. Generalization through memorization: Nearest neighbor language models. In ICLR, 2020.

深度學習課程 | 神經網絡概覽及算法詳解

人工神經網絡(Artificial Neural Networks,簡寫爲 ANN)是一種模仿動物神經網絡行爲特徵,進行分佈式並行信息處理的算法數學模型。本課程共 36 課時,主要介紹神經網絡學習規則、感知神經網絡、競爭神經網絡及反饋神經網絡等,幫助你們掌握神經網絡的相關概念和算法模型。

點擊「閱讀原文」馬上學習吧!

相關文章
相關標籤/搜索