外賣履約時間預(yù)估(OFCT:Order Fulfillment Cycle Time)問題相比一般的時間預(yù)估問題而言更為復(fù)雜,其中存在餐廳與用戶的供需關(guān)系、餐廳出餐時間的未知性以及騎手行為的不確定性等問題。在論文中我們向?qū)W術(shù)界首次詳細(xì)介紹外賣履約時間預(yù)估這一問題,并給出了有效的解決方案,最后得到了審稿人的一致認(rèn)可。
通過逐步拆解整個外賣履約(履約:餓了么平臺保障騎手能夠?qū)⑼赓u準(zhǔn)時送達給用戶)的過程,我們分析了外賣履約時間預(yù)估相比常見的其他送達時間問題(例如打車)的顯著差異,并針對影響履約時間長短的特征進行了解釋和說明。對于用戶而言可能只是看到外賣需要多久才能吃到,而在這背后需要我們提煉出豐富的影響因素,來保證履約時間預(yù)估的準(zhǔn)確性。我們將這些影響因素輸入深度神經(jīng)網(wǎng)絡(luò)來推斷它們和履約時長的關(guān)系,同時我們進一步引入了餐廳、用戶地址以及騎手的隱向量來增強模型的預(yù)測性能。最后,我們提出一個新穎的后處理神經(jīng)網(wǎng)絡(luò)算子,用于改善模型的收斂速度和準(zhǔn)確度。我們所介紹的模型已在餓了么實際部署,每天服務(wù)于千萬用戶。
背景介紹
履約時間預(yù)估模型預(yù)估的是從用戶下單到騎手將訂單送達用戶手上的這段時間(即預(yù)計送達時間)。餓了么平臺每天產(chǎn)生千萬級訂單量,時間預(yù)估作為即時配送的其中一環(huán),既影響用戶體驗同時也涉及到騎手履約,因此其準(zhǔn)確性對平臺而言至關(guān)重要,既不能預(yù)估的太長(影響用戶體驗),也不能預(yù)估的太短(騎手無法按時完成配送)。下圖為時間預(yù)估涉及的各個環(huán)節(jié)。
主要環(huán)節(jié)包括:
用戶:用戶從下單到訂單送達其手中。對于每一位用戶而言,肯定是希望能夠準(zhǔn)時拿到下單的餐品。
餐廳:餐廳從接受訂單到備餐完成。餐廳需要做到盡快完成備餐,這樣才能夠不影響騎手取餐及配送,如果騎手到達餐廳的時候需要等待很久的時間才能取走餐品,那么騎手容易焦慮,一部分用戶也會在餓了么App上催促騎手。
騎手:騎手從接收到訂單到完成配送。其中包括騎手到達餐廳,然后從餐廳處取走訂單對應(yīng)的餐品。同時,騎手可能從餐廳處取多餐,因此需要等拿到所有訂單騎手才會離開并進行配送。
平臺:餓了么平臺需要從中協(xié)調(diào)用戶、餐廳、騎手并兼顧配送效率。這其中包括訂單指派與路徑規(guī)劃。訂單指派是指將訂單分給附近合適的騎手,而路徑規(guī)劃是指給騎手推薦合理的取送路徑,此路徑需要同時考慮騎手配送距離和訂單超時風(fēng)險。
下圖即為大家日常在餓了么上面點外賣的時候能夠看到的信息,其中配送時間就是我們履約時間預(yù)估模型計算出的。Estimated Time of Arrival (ETA)即“預(yù)估送達時間”,一般預(yù)估的是從出發(fā)地到目的地的時間,打車場景中的預(yù)估送達時間即為一類典型的ETA問題。
本文提出的外賣履約時間預(yù)估模型,預(yù)估的是從用戶下單開始到騎手將餐品送達用戶手中所花的時間,用戶在餓了么點了外賣以后,訂單在平臺開始流轉(zhuǎn)的過程如下圖所示。
外賣履約時間預(yù)估相比預(yù)估送達時間而言更為特殊,主要體現(xiàn)在以下兩方面:
1 需要考慮更多影響因素
一般的預(yù)估送達時間問題僅需考慮天氣、交通狀況,時空信息及路徑信息等,而外賣履約時間預(yù)估問題除了考慮此類信息外,還需考慮餐廳的地理位置,餐廳訂單備餐時間以及調(diào)度系統(tǒng)派單等信息。
2 無法獲取關(guān)鍵信息
用戶下單成功時餓了么已經(jīng)為用戶預(yù)估出預(yù)計送達時間,而此時訂單并未被騎手接單,騎手需要被系統(tǒng)指派才能開始取餐和配送,因此我們無法提前獲取騎手的信息及其實際的配送路徑。
以上兩方面的差異給外賣履約時間預(yù)估問題的準(zhǔn)確性帶來極大的挑戰(zhàn)。
外賣履約時間預(yù)測一般需要哪些特征
為了建模外賣履約時間,一般需要充分利用與訂單信息相關(guān)的數(shù)據(jù),具體包括:
空間特征:包括大量id類特征,例如用戶所在區(qū)域id,餐廳id,城市id及網(wǎng)格id等。
時間特征:包括小時時刻,當(dāng)天是否工作日等,如下圖(a)。
描述訂單大小的特征:包括訂單對應(yīng)的菜品數(shù)量以及訂單價格等。
大家應(yīng)該會好奇訂單價格會對外賣時間長短造成什么影響?當(dāng)用戶下單的金額較高時通常餐品對應(yīng)的重量或體積較大,比如用戶預(yù)訂了蛋糕或者集體點了很多杯奶茶,這種總金額高的訂單對于騎手而言屬于難配送訂單,因此需要花費較長的履約時間。下圖(b)展示出了這種相關(guān)性,可以看到訂單價格的高低在一定程度上可以刻畫出訂單是否難配送的隱含信息。
供需關(guān)系對履約時長的影響
從平臺角度看,用戶下單量和餐廳接單量不同時刻都在發(fā)生劇烈變化,這種供需維度上的變化對實際配送時長會造成極大影響。
在介紹供需特征構(gòu)造的工作前,先為大家介紹外賣配送中“波次”的概念:對于騎手身上的一組訂單,對給定的一組訂單取送順序進行分組,保證每組中所有相關(guān)訂單的取和送行為都在該組中,該分組則為騎手當(dāng)前配送的波次。針對供需變化,我們構(gòu)造了基于時段的供需比和完成率等特征。當(dāng)供需比越高時波次的平均長度會變長,此時履約時間越長。
另一方面當(dāng)完成率越高時可以推斷出騎手完成配送的訂單越多,此時騎手可以繼續(xù)承接系統(tǒng)接下來分派的訂單。
此外,我們通過餐廳當(dāng)前待取餐單量(餐廳接單后等待騎手來取的訂單數(shù))來刻畫餐廳的繁忙程度,當(dāng)餐廳接單數(shù)變多而產(chǎn)能受限時會導(dǎo)致訂單積壓,此時如果騎手已經(jīng)到達餐廳則需要花費較長的等待時間才能取到餐品,相應(yīng)的當(dāng)餐廳變繁忙時,模型預(yù)估的履約時間將變長。
餐廳的出餐時間
訂單的出餐時間是外賣履約時間預(yù)估模型的一個重要影響因素,這個特征我們是通過聚合餐廳的歷史出餐時間得到的。但目前存在的難點問題對出餐時間計算的準(zhǔn)確性帶來極大考驗,主要包括:
餐廳在備餐完成后缺乏人力來逐單點擊出餐按鈕,導(dǎo)致我們平臺不能完全搜集到餐廳出餐的真實值,因此我們目前主要依靠系統(tǒng)采集的騎手點擊出餐數(shù)據(jù)來標(biāo)記餐廳的真實出餐時間。
餓了么平臺目前主要計算的是餐廳在餓了么App產(chǎn)生的訂單,缺乏餐廳在其他渠道產(chǎn)生的訂單或堂食訂單數(shù)據(jù),因此較難獲取餐廳的實際供需情況。
餐廳的真實出餐時間具有較大的隨機性。例如餐廳針對某些餐品可能會提前進行備餐,這部分提前備好的餐品可以立即出餐。而對于用戶下單時餐廳需要現(xiàn)做的餐品,騎手到達餐廳后可能需要等待一段時間才能取到餐,這部分現(xiàn)做的訂單真實出餐時間將會偏長。
訂單的先后順序不一定表示餐廳出餐的先后順序。由于餐廳灶臺數(shù)量有限,相應(yīng)的灶臺只會處理固定的菜品,因此在一批訂單中如果出現(xiàn)相同的菜品,后廚會選擇一起做,這種情況下部分訂單的出餐時間會明顯偏短。
在實際運用時,我們是根據(jù)商家接單時間到騎手實際點擊取餐時間來計算商戶的真實出餐時間,而這其中存在一部分噪音數(shù)據(jù):
騎手接單后即刻點擊到達餐廳
騎手接單后即刻點擊取餐按鈕
此外,對于一部分訓(xùn)練樣本,我們認(rèn)為騎手在取到餐品時實際上餐廳已經(jīng)備餐完成,例如騎手晚取餐或騎手同時點擊取多餐。針對這些數(shù)據(jù)我們在計算餐廳出餐時間特征時進行了一定比例的剔除。
如何合理利用騎手信息
餓了么從平臺角度出發(fā),將每個城市劃分成了以“網(wǎng)格”為最小單元的不同區(qū)域,每個蜂鳥配送站點內(nèi)的騎手會服務(wù)于站點周邊范圍內(nèi)固定的若干個網(wǎng)格,騎手對站點輻射的網(wǎng)格內(nèi)的商圈或者小區(qū)的熟悉程度決定了其配送效率。從下圖大家可以看到,因為騎手對餐廳所在位置、用戶所在小區(qū)都比較熟悉,因此在取餐或者配送的過程中并沒有發(fā)生繞路的情況。
而用戶下單成功時餓了么App會立刻為用戶顯示外賣預(yù)估履約時間,此時訂單指派給具體哪位騎手來配送是未知的。為了充分利用與騎手相關(guān)的影響因素,我們根據(jù)騎手取餐距離、騎手當(dāng)前接了多少訂單等特征來表征訂單可能被接單的每一位騎手,然后將可能接單的騎手序列進行特征編碼傳入外賣履約時間預(yù)估模型中,隨后利用注意力機制提取騎手序列信息,以此來增強模型的預(yù)測能力。
多維度相似訂單的配送段 ETA
配送段ETA指的是預(yù)估騎手到達目的地(用戶所在位置)附近下車后將餐品送到用戶手中所花的時間,是騎手配送的最終環(huán)節(jié)。
為了估算配送段ETA,我們理論上可以直接采用回歸模型來學(xué)習(xí),但是常用的回歸模型通常將輸入轉(zhuǎn)化為一系列的特征,并且通過有監(jiān)督學(xué)習(xí)找到這些影響因素和輸出目標(biāo)之間的關(guān)系,為了方便學(xué)習(xí)和提高模型泛化能力通常基于神經(jīng)網(wǎng)絡(luò)和集成樹模型將這些關(guān)系參數(shù)化為一個平滑的函數(shù),但這種平滑假設(shè)的缺點是無法很好的處理長尾不規(guī)律case,可能會影響用戶體驗。例如當(dāng)騎手送餐需要乘坐高層電梯時,如果遇上高峰期,可能需要等待很長的時間,而系統(tǒng)很難做到這種實時的預(yù)判。從下圖可以看出,騎手送餐時在樓內(nèi)花了7.6分鐘。
為了部分緩解這種問題,我們借鑒了近期基于記憶的語言模型[1]的思想,將歷史訂單作為配送段時間預(yù)估的語料,通過構(gòu)造多維特征來表征每個歷史訂單,當(dāng)新的訂單產(chǎn)生時我們基于K近鄰來搜索出與新訂單相似的若干個歷史訂單,然后對這若干個相似單的真實配送段時間做加權(quán)平均,以此作為新訂單的預(yù)估配送段時間。最終我們將基于K近鄰搜索出的預(yù)估配送段時間作為特征輸入外賣履約時間預(yù)估模型中。
針對長尾數(shù)據(jù)如何解決
時間預(yù)估本質(zhì)上屬于回歸問題,在訓(xùn)練模型的過程中我們發(fā)現(xiàn)模型收斂較慢且交叉驗證的表現(xiàn)偏離預(yù)期,通過分析原因我們發(fā)現(xiàn)模型擬合的數(shù)據(jù)分布與真實履約時間的分布發(fā)生了偏移,真實的履約時間實際上是一個右偏長尾的分布,相當(dāng)于有一小部分訂單真實的配送時間偏長而模型沒有學(xué)習(xí)到,針對此問題在本文中我們提出了一個新穎的后處理神經(jīng)網(wǎng)絡(luò)算子,針對外賣履約時間預(yù)估模型的擬合結(jié)果進行縮放和變換,用于改善模型的收斂速度和準(zhǔn)確度。此后處理算子可描述為:
商用機器人 Disinfection Robot 展廳機器人 智能垃圾站 輪式機器人底盤 迎賓機器人 移動機器人底盤 講解機器人 紫外線消毒機器人 大屏機器人 霧化消毒機器人 服務(wù)機器人底盤 智能送餐機器人 霧化消毒機 機器人OEM代工廠 消毒機器人排名 智能配送機器人 圖書館機器人 導(dǎo)引機器人 移動消毒機器人 導(dǎo)診機器人 迎賓接待機器人 前臺機器人 導(dǎo)覽機器人 酒店送物機器人 云跡科技潤機器人 云跡酒店機器人 智能導(dǎo)診機器人 |