原創(chuàng)|行業(yè)資訊|編輯:陳俊吉|2017-12-06 09:53:31.000|閱讀 556 次
概述:大部分人都點(diǎn)過外賣,現(xiàn)在外賣成了中國(guó)吃飯的方式,點(diǎn)外賣是什么樣的量級(jí),說起來大家嚇一跳,中國(guó)最大領(lǐng)域是電商,淘寶、京東,其次就是出行行業(yè),滴滴、UBER 緊接是共享單車,這幾家公司加起來是一天兩三千萬訂單量左右。在外賣行業(yè)大家都知道,這個(gè)行業(yè)到今天為止已經(jīng)每天 2500 萬單,所以可以想象這個(gè)行業(yè)在飛速發(fā)展。為什么數(shù)據(jù)和算法起到那么大的作用,因?yàn)槲覀兌贾涝诨ヂ?lián)網(wǎng) + 的情況下,有這么大的單量,至少是在數(shù)據(jù)行業(yè)我們有非常多事情要做。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
大部分人都點(diǎn)過外賣,現(xiàn)在外賣成了中國(guó)吃飯的方式,點(diǎn)外賣是什么樣的量級(jí),說起來大家嚇一跳,中國(guó)最大領(lǐng)域是電商,淘寶、京東,其次就是出行行業(yè),滴滴、UBER 緊接是共享單車,這幾家公司加起來是一天兩三千萬訂單量左右。在外賣行業(yè)大家都知道,這個(gè)行業(yè)到今天為止已經(jīng)每天 2500 萬單,所以可以想象這個(gè)行業(yè)在飛速發(fā)展。為什么數(shù)據(jù)和算法起到那么大的作用,因?yàn)槲覀兌贾涝诨ヂ?lián)網(wǎng) + 的情況下,有這么大的單量,至少是在數(shù)據(jù)行業(yè)我們有非常多事情要做。
2500 萬單量里面 “餓了么” 是什么樣的場(chǎng)景:我們把手機(jī) APP 打開,可以找到自己喜歡的餐廳,大家選擇一個(gè)餐廳,選擇喜歡吃的東西,這個(gè)行為雖然是點(diǎn)一個(gè)菜,但是實(shí)際上跟大家淘寶買衣服,在攜程買機(jī)票是一樣。前面是電商交易平臺(tái)所交易食品,現(xiàn)在不僅是食品,可以在上面買鮮花,買到藥品,同時(shí)還有本地的幫買幫送等等,所以電商只是第一部分,電商到了什么規(guī)模大家知道嗎?,“餓了么” C 端注冊(cè)用戶 2.6 億,B 端商家目前已經(jīng)是 130 萬,每年是千萬級(jí)別的定單情況,這個(gè)是我們外賣行業(yè)的一部分,就是電商交易平臺(tái)。
第二部分就是大家也可以看見這張圖就是騎手小哥拿著箱子,要么走路,或者騎著電動(dòng)車。其實(shí)這就是本地物流平臺(tái),為什么要強(qiáng)調(diào)本地,因?yàn)槲覀冃袠I(yè)特殊性跟其他物流行業(yè)不一樣,他們幾天時(shí)間到達(dá),我們這個(gè)行業(yè)的本地物流一定是希望 30 分鐘送到手里,所以我們?cè)O(shè)計(jì)這個(gè)架構(gòu)的時(shí)候就有很大的挑戰(zhàn),這個(gè)有一些不同,一會(huì)兒講到算法模型的時(shí)候就清楚了,我們是做一些本地的物流,所以時(shí)間上有非常嚴(yán)格的限制。
到今天為止的話,我們配送員已經(jīng)是 300 萬,平均每天在任何時(shí)刻全國(guó)都有 30 萬到 40 萬的騎手活躍線下,隨時(shí)準(zhǔn)備接單,這個(gè)跟滴滴是一樣的運(yùn)營(yíng)模式,現(xiàn)在已經(jīng)覆蓋了全國(guó) 2 千多個(gè)城市。
第二部分是 AI 在 “餓了么” 的應(yīng)用。這個(gè)行業(yè)為什么需要呢?作為本地生活的平臺(tái),我們都知道衣食住行是非常需要的。在每個(gè)方向都有很多大的商家,他們?cè)诩夹g(shù)上的挑戰(zhàn)有什么不同,這個(gè)一定來自于他們的業(yè)務(wù)形態(tài)。
這個(gè)跟大家簡(jiǎn)單過一下:首先是淘寶,我相信大部分都會(huì)用淘寶,淘寶是大家在線上買東西最常用的一個(gè)平臺(tái),里面主要是以用戶和商戶為主,線下大家知道是同城當(dāng)日達(dá)更多定單是走開放平臺(tái),大家下了定單送到大家的手里,這個(gè)是三通一達(dá),也可以菜鳥自己,或者順豐,這個(gè)是開放平臺(tái),最重要的一點(diǎn)是時(shí)效性,通常以天來計(jì)算,超時(shí)不會(huì)有所謂的賠償,這個(gè)是淘寶的情況。
我們看攜程,它可以定旅館,酒店,線上以用戶和商戶為主,不會(huì)有線下訂單的。
跟外賣行業(yè)特別接近的就是滴滴,其實(shí)在國(guó)外優(yōu)步也做的非常好,從業(yè)務(wù)形態(tài)來講,像滴滴和外賣是非常接近。滴滴線下線上始終是用戶和司機(jī),定單形式也是眾包的形式,要么通過加盟商,要么通過司機(jī)網(wǎng)上注冊(cè)來承擔(dān)運(yùn)力,超時(shí)也不會(huì)懲罰司機(jī),因?yàn)檎l也不會(huì)預(yù)料到會(huì)不會(huì)出現(xiàn)車禍,這個(gè)時(shí)效沒有保證,所以說它和餓了么是極其相似的。最后提到 “餓了么” 和外賣行業(yè)。
首先線上以用戶和商戶為主,線下訂單部分比較多,藍(lán)色騎手有一部分是 “餓了么” 的員工,就是自營(yíng),還有團(tuán)隊(duì)和加盟商的形式,當(dāng)然還有一種是眾包,比如說今天開一個(gè)會(huì),下午還有四個(gè)小時(shí),我可以送幾單,這是一種眾包的形式。時(shí)效性以分鐘來計(jì)算,我們的目標(biāo)其實(shí)在很長(zhǎng)時(shí)間已經(jīng)做到了,全國(guó)平均半個(gè)小時(shí)可以把訂單送到手里,還有超時(shí)賠付,如果 30 分鐘之后超過 10 分鐘沒有到,有一個(gè)紅包的賠償,超時(shí)賠付的壓力是比較大的,不過這樣對(duì)客戶來說算是一種服務(wù)不足的補(bǔ)償。
根據(jù)上面所述,我們進(jìn)入了一個(gè)大的框架,就是在外賣這個(gè)行業(yè)是三個(gè)大東西,一個(gè)是,運(yùn)籌優(yōu)化其實(shí)也是跟機(jī)器學(xué)習(xí)密不可分的。講到其中運(yùn)籌優(yōu)化,作為運(yùn)籌優(yōu)化的基礎(chǔ)起到了非常關(guān)鍵的作用,現(xiàn)在大家看這個(gè)圖挺有意思,我會(huì)多花兩分鐘講一講在業(yè)務(wù)中的算法問題,大概有三個(gè)層面。底層的外賣行業(yè)希望 30 分鐘把食物送到手里,不可能送到二十或者三十公里之外,除非你會(huì)飛,否則半個(gè)小時(shí)不可能送 10 公里?;谶@種情況,所有行業(yè)都是基于當(dāng)前打開 APP 定位,定位可能 3 公里或者 5 公里的半徑,LBS 保證在運(yùn)營(yíng)商做各種推薦或者搜索為基礎(chǔ),再往上兩層就是機(jī)器學(xué)習(xí)和優(yōu)化。所以現(xiàn)在來具體講一下這三部分。
大家可以看一下中間這個(gè)模塊是用戶商戶分層,推薦搜索以及智能補(bǔ)貼,這幾個(gè)大的方向是任何電商都必須做的。
在有很精細(xì)的用戶畫像體制上,我們希望對(duì)用戶和商戶的生命周期做嚴(yán)格的管理,在這個(gè)基礎(chǔ)上我們做相應(yīng)的推薦、搜索、補(bǔ)貼,比如說有一個(gè)用戶進(jìn)入沉睡期,我們會(huì)通過一定的方式對(duì)客戶進(jìn)行刺激。
當(dāng)交易行為發(fā)生時(shí),我們希望 30 分鐘將外賣送到用戶手里,這里面涉及到的規(guī)劃,我會(huì)詳細(xì)講智能的調(diào)度,也會(huì)詳細(xì)講到出餐時(shí)間和送餐時(shí)間的預(yù)估,以及動(dòng)態(tài)定價(jià)等這幾個(gè)模塊。智能調(diào)度是調(diào)度的一部分,我們 30 分鐘包括了準(zhǔn)備的時(shí)間和路上的時(shí)間,甚至保證了送到樓下,等電梯到你手上的時(shí)間等等,所以 30 分鐘有很多不可預(yù)估的東西。那么壓力平衡是什么意思?大家都知道,線上交易和我們物流是矛盾的,對(duì)于線上交易來說我們當(dāng)然希望訂單越多越好,我們希望有上千萬的用戶一下子幾秒鐘進(jìn)來。但是 30 分鐘內(nèi)把訂單全部送出去,這個(gè)是不太可能一下子解決的問題,為了達(dá)到壓力平衡,就要保證交易和物流、配送等保持平衡,既達(dá)到交易質(zhì)量,也不損失用戶的積極性。
講到這兩個(gè)之后就是一些底層的東西,現(xiàn)在讓我們看上一張圖,左邊包括選址推薦等等,剛才講到配送是本地,當(dāng)一個(gè)商家定下準(zhǔn)備配送的地方就會(huì)畫一個(gè)圈,比如說我送一個(gè)圓圈或者六邊形,這個(gè)不是隨便畫的,首先有可能這個(gè)地方是高速路或者高架橋,不是每個(gè)人平臺(tái)都是一樣,有的用戶也有可能老是定便宜訂單,我們?cè)诰W(wǎng)格和站點(diǎn)規(guī)劃的時(shí)候會(huì)考慮所有因素,這個(gè)涉及很多運(yùn)籌優(yōu)化的問題,最后一個(gè)例子就會(huì)講到選址和網(wǎng)格規(guī)劃的問題。簡(jiǎn)單講一下我們?nèi)齻€(gè)部分包含了我們?cè)谌斯ぶ悄芊矫嫠幸恍﹪L試,這對(duì)我們業(yè)務(wù)是非常重要的。
這一部分我會(huì)分兩種來說,分別是機(jī)器學(xué)習(xí)的應(yīng)用案例和機(jī)器學(xué)習(xí)應(yīng)酬優(yōu)化的案例。
第一個(gè)是出餐時(shí)間預(yù)估,我在這里用滴滴做比較,什么是等待時(shí)間預(yù)估,比如我們?cè)诘蔚螆?chǎng)景下下了一個(gè)訂單,比如說我想去浦東機(jī)場(chǎng),它會(huì)告訴你這個(gè)車離這里兩公里,3 分鐘會(huì)到,3 分鐘就是等待時(shí)間預(yù)估。“餓了么” 相當(dāng)于下了一個(gè)單,大概 20 分鐘才能做好,我希望來的早不如來的巧,作為我平臺(tái)騎手剛好在 20 分鐘就到,如果早了騎手等在那兒是浪費(fèi),但是去晚了,就可能訂單超過了時(shí)間。
這個(gè)出餐時(shí)間準(zhǔn)確性是關(guān)鍵,當(dāng)訂單完成之后,怎么知道訂單花多長(zhǎng)時(shí)間完成,這個(gè)餐廳受很多的因素影響, 餐廳的備餐時(shí)間和食堂吃的用戶數(shù), 餐品類型, 烹飪方式, 訂單大小等因素影響, 且備完餐后無通知,比如說餐廳客戶特別多,平時(shí)可能 5 分鐘做出來,可能人多了就做不出來,還有產(chǎn)品品類的問題,甚至包括一天的天氣各種原因,包括餐廳的出勤率,餐廳廚師請(qǐng)假突然少了幾個(gè)人,這些都是造成預(yù)估不準(zhǔn)確的原因之一。我們想過為什么不讓餐廳做好了告訴我們,我們就去,這個(gè)理論是可行,大家想象一下在餐廳場(chǎng)景里面,廚房是什么樣的情況,你想象一個(gè)廚師滿手都是油,出來點(diǎn)一下這個(gè)訂單好了,下一個(gè)訂單了,這個(gè)是很難想象的事情,我們沒有得到這方面的數(shù)據(jù)。這個(gè)是一個(gè)前提,我們的解決方案毫無疑問是機(jī)器學(xué)習(xí),最簡(jiǎn)單版本就是線性模型,一開始效果不是特別好,逐漸演進(jìn)到后面用了的 GBDT ,大家都比較熟悉下,在場(chǎng)景下做到平均不是特殊平均,加上出餐時(shí)間是 10 分鐘,我們可以固定 7 分鐘到 13 分鐘,這個(gè)準(zhǔn)確率比較高。
我強(qiáng)調(diào)是平均,因?yàn)橛泻芏嗵厥鈭?chǎng)景,如果廚師出了什么事情,我們也不知道,因?yàn)闄C(jī)器學(xué)習(xí)只能根據(jù)過去的事情來預(yù)測(cè)將來。在突發(fā)事件有一些產(chǎn)品的方案,比如說看到這個(gè)餐廳出餐量和訂單量并沒有呈線性的增長(zhǎng),前面出現(xiàn)了堵塞情況,我們根據(jù)數(shù)據(jù)對(duì)平臺(tái)進(jìn)行實(shí)時(shí)調(diào)整。
最后現(xiàn)在用的方法是,我們是用 LSTM,右邊這圖大家可以看一下這個(gè)文章。我們通過時(shí)間相關(guān)性把預(yù)測(cè)做的更加準(zhǔn)確,毫無疑問出餐時(shí)間一定會(huì)跟過去訂單有關(guān)系,這個(gè)不用解釋,但是為什么跟未來有關(guān)系,我們預(yù)估未來 3 到 5 分鐘有新的訂單,但是跟現(xiàn)有的訂單有共同之處,有可能是同樣的菜品,有可能是共同的地方,同樣的菜品對(duì)廚房是一個(gè)訂單,可以把菜一起做,我們學(xué)到了,通過這個(gè)模型也可以捕捉這些特征,對(duì)訂單分配有一定的幫助,同樣對(duì)訂單打包也有一定的幫助。
行程時(shí)間的預(yù)估就是這樣,當(dāng)訂單完成了以后,騎手把訂單拿到手里,他會(huì)跑到辦公室或者家里也好,這個(gè)是行程時(shí)間的預(yù)估,滴滴從 A 點(diǎn)到 B 點(diǎn),交通方式肯定就是車,而且有大量的地圖數(shù)據(jù),像高德或者谷歌地圖或者百度地圖,這些數(shù)據(jù)會(huì)實(shí)時(shí)上傳給服務(wù)器。
在這種交通情況預(yù)測(cè)已經(jīng)是比較準(zhǔn)確,相對(duì) “餓了么” 場(chǎng)景遠(yuǎn)遠(yuǎn)沒有那么多的信息,首先騎手是有可能步行,有可能走電梯,或者走上下樓梯,或者騎電動(dòng)車,或者換交通工具,這個(gè)直接造成了我們?cè)跀?shù)據(jù)搜集是極不準(zhǔn)確的,還有一點(diǎn)提到了在樓宇內(nèi)的交通復(fù)雜,這個(gè)數(shù)據(jù)很難獲取。我們上班的時(shí)候,餐廳和顧客都是在大樓里面,大樓里面沒有 GPS 信號(hào)或者不大好,我們收到的數(shù)據(jù)或者定位誤差高達(dá)幾百米。
所以提前時(shí)間預(yù)估,我們需要把軌跡建立起來,因?yàn)闀r(shí)間預(yù)估在高德地圖或者騰訊百度地圖是基于歷史數(shù)據(jù)的,我們第一步做的是歷史數(shù)據(jù)清洗,室內(nèi)定位不準(zhǔn)甚至完全缺失,這個(gè)情況下我們想了各種各樣的辦法,我們用 WIFI 信號(hào),GPS 信號(hào),或者大家互相定位最大程度減少定位缺失的問題,其次即使定位有了,它的位點(diǎn)也是有 GPS 軌跡,也是有很多的噪音,所以需要去噪音,所以需要去噪。我們通過定位的算法把相關(guān)的時(shí)間,把 O 點(diǎn)和 D 點(diǎn)合起來,最后進(jìn)行軌跡聚類。
滴滴與我們的分單難度不一樣,滴滴場(chǎng)景下要配一個(gè)司機(jī),最多接兩三單。在 “餓了么” 一個(gè)騎手一個(gè)包同時(shí)背 5 到 10 單,而且訂單之間有時(shí)間限制,有涉及大量的時(shí)效要求。
我講兩個(gè)方案,第一個(gè)方案是路徑規(guī)劃的問題,很傳統(tǒng)的 VRP。
當(dāng)你給一個(gè)訂單,在騎手容量和成本固定的情況下,我們需要找到匹配的線路,每個(gè)訂單承諾時(shí)間是不一樣的,就是不能超時(shí)。默認(rèn)模式下, 一個(gè)騎手可以同時(shí)送 5 到 10 單, 每單都有嚴(yán)格的時(shí)效要求, 并且訂單在午高峰爆發(fā)式增加。
方案 1 就是車輛路徑規(guī)劃
我們用了模擬退火算法,模擬退火算法 ( Simulated Annealing,SA ) 是基于 Monte-Carlo 迭代求解策略的一種隨機(jī)尋優(yōu)算法,通過賦予搜索過程一種時(shí)變且最終趨于零的概率突跳性,從而可有效避免陷入局部極小并最終趨于全局最優(yōu)的串行結(jié)構(gòu)的優(yōu)化算法。從理論上來說這算法具有概率的全局優(yōu)化性能, 目前已在工程中得到了廣泛應(yīng)用,諸如 VLSI ,生產(chǎn)調(diào)度、控制工程、機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、信號(hào)處理等領(lǐng)域就是用它來做訂單的分配,但是最后結(jié)果不是特別好,因?yàn)闀r(shí)間預(yù)估存在不準(zhǔn)備性,在路徑規(guī)劃的時(shí)候,先走 A 單還是 B 單,在時(shí)間一旦出現(xiàn)誤差的情況下,這個(gè)路徑規(guī)劃會(huì)非常差。
最后用的是第二個(gè)算法,也是一種基于大量函數(shù)的組合算法。
左下角是個(gè)矩陣,每一行是一個(gè)訂單,每一列是一個(gè)騎手,我們希望通過一些規(guī)則和一些機(jī)器學(xué)習(xí)的算法算出來,右邊是一個(gè)定單匹配的結(jié)果。
最優(yōu)匹配就是 KM 算法。調(diào)度算法的演進(jìn)最早是 VRP。
后來是 KM 算法,但是這個(gè)基礎(chǔ)框架界定了以后,還有很多工作量需要做。訂單實(shí)際上有相似性,因?yàn)橛唵问强梢源虬模?一個(gè)人稍微等幾分鐘,也許這個(gè)訂單出來跟那個(gè)訂單很相似的性質(zhì),就是去同一個(gè)地方,就可以把訂單給同一個(gè)人拿走。所以訂單打包和吸水是我們做的第一件事情,但是訂單靠什么規(guī)則在高峰期和非高峰期的時(shí)候是不一樣的,存在兩個(gè)方向的路和兩個(gè)方向的夾角不一樣的地方,所以定單匹配模型是在 2.2 版本之上做出來的,用機(jī)器學(xué)習(xí)通過歷史數(shù)據(jù)來訓(xùn)練,在這里我們也碰到一些挑戰(zhàn),由于在不同的站點(diǎn)配送員習(xí)慣不一樣,我們推廣的時(shí)候會(huì)遇到一個(gè)問題,在 A 站點(diǎn)大家覺得是 OK,但是在 B 站點(diǎn)不行,我們現(xiàn)在做到千站千面的東西,根據(jù)類似的站點(diǎn)歷史過去分擔(dān)一些情況,我們把這些模型用來做訓(xùn)練,做到類似的站點(diǎn)它有類似分單的方式。所以不會(huì)出現(xiàn)說你特別不喜歡這個(gè)分單的方式,多多少少有一點(diǎn)類似性,所以做到了 2.3 這個(gè)版本。現(xiàn)在做的版本就是增強(qiáng)學(xué)習(xí),我們根據(jù)實(shí)時(shí)的情況來進(jìn)行動(dòng)態(tài)地調(diào)整。
餐廳選址就不詳細(xì)講了,我們自己其實(shí)也和商家開始合作開一些餐廳,我們都希望選最好的地方,餐廳覆蓋最多的用戶,菜品不一樣,用戶群不一樣,所以這個(gè)選址是很重要的。
我今天主題是應(yīng)用實(shí)踐,我個(gè)人感受,我做機(jī)器學(xué)習(xí)做了十幾年,工作挑戰(zhàn)是來自于基礎(chǔ)數(shù)據(jù)的完整性和準(zhǔn)確性。剛才講到數(shù)據(jù)不準(zhǔn)確,餐廳不規(guī)則的情況,我們無法知道一些準(zhǔn)確的情況,我們花了大量時(shí)間來做基礎(chǔ)數(shù)據(jù)的調(diào)整。第二點(diǎn)我講到算法的提升和對(duì)人的行為的理解比較重要,因?yàn)樵谕赓u行業(yè)都需要人去執(zhí)行,以前人工分配通過打電話,有大量溝通在里面,現(xiàn)在機(jī)器一下子分?jǐn)偭?,他們難以理解,而且機(jī)器考慮全局最優(yōu)而不是局部最優(yōu),人是做不到這點(diǎn)。在算法提升和產(chǎn)品運(yùn)營(yíng)綜合起來,才能把這個(gè)事情最后推下去讓大家形成習(xí)慣。第三點(diǎn)優(yōu)化算法與機(jī)器學(xué)習(xí)在我們行業(yè)是相輔相成的,不僅是機(jī)器學(xué)習(xí),跟重要的是我們?cè)谶@么短時(shí)間怎么樣把人力分布最好,在最少的時(shí)間情況下把訂單完成。謝謝大家!
如果您有想法的話,可在底部留言。謝謝!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn