阿里飛豬供應(yīng)鏈算法之推薦和選品模型
導(dǎo)讀 本文將分享飛豬旅行在酒店供應(yīng)鏈品類規(guī)劃方面的算法。
今天的介紹會圍繞下面四點展開:1. 品類規(guī)劃業(yè)務(wù)背景介紹
2. LINet-基于位置和出行意圖感知的群組推薦模型
3. PETS-滿足召回約束下的大促選品模型
4. Q&A
分享嘉賓|呂德濤(樓溪) 阿里飛豬 高級算法工程師
編輯整理|呂晶
內(nèi)容校對|李瑤
出品社區(qū)|DataFun
01 品類規(guī)劃業(yè)務(wù)背景介紹 首先,介紹飛豬品類規(guī)劃相關(guān)業(yè)務(wù)背景。以一次大型促銷活動為例,來詳細說明酒店運營活動的運營流程。
我們將整個流程劃分為兩個主要階段:supply side 和 consumption side。 在 supply side,通常會運用一些算法模型篩選出一批性價比較高的酒店,并將其提供給業(yè)務(wù) BD。隨后,業(yè)務(wù) BD 將基于這個列表進行招商,提前進行價格庫存的協(xié)商。 在 consumption side,主要基于招商結(jié)果進行一系列營銷活動,例如人群 Push、不同人群的營銷活動,以及個性化的推薦。 從上圖中可以看出,階段 1 是整個運營流程的瓶頸,因為所有后續(xù)階段本質(zhì)上都是根據(jù)這一階段的結(jié)果進行優(yōu)化。具體的:在階段 1,需要提供重點運營的酒店名單給階段 2(這需要在有限的 BD 人力情況下完成);需要為階段 3 準備人群和商品的匹配關(guān)系,用于人群營銷;并且需要為階段 4 提供推薦候選池。品類規(guī)劃的主要工作也集中在階段 1。 第一階段常用的品規(guī)方案主要有三種。
- 第一種方案是基于時間序列預(yù)測,根據(jù)酒店歷史銷量,預(yù)估未來銷量,并選擇銷量排名靠前的酒店進行 BD 。通常采用的時間序列方案包括 Prophet 、 MQ-RNN 、 DeepAR 、 TFT 等。 這種方案的缺陷在于忽略了用戶交互信息和酒店位置信息。
- 第二種方案是個性化推薦,主要基于用戶和商品的行為序列來建模用戶偏好。 其缺陷為,在階段 1 建模時,用戶請求尚未生成。 因此采用個性化方案時,只能使用用戶 t +1 的行為序列,這樣并不能很好地捕捉用戶偏好。
- 第三種方案是群組推薦,如 AGREE、SIGR 和 Group SA 等,旨在更好地刻畫群組偏好。 其缺陷為,忽略了酒店特性,用戶出行時間、酒店位置和用戶出行意圖,這些因素會影響用戶的購買決策。
LINet-基于位置和出行意圖感知的群組推薦模型
基于上述問題,我們在群組推薦的基礎(chǔ)上提出了一個全新的群組推薦模型,名為 LINet(該模型已被 WWW2023 錄用)。1. 問題定義
我們首先將這一問題定義為在階段 1 的 WWW 問題,即在特定時間段(when)和出行區(qū)域(where)為具有相似出行意圖(why)的用戶群體推薦酒店,然后在階段 1 解決 WWW 問題。 2. 難點 首先是如何有效劃分群組,因為劃分的準確性直接影響下游應(yīng)用。因此,在劃分群組時,需要考慮用戶的出行意圖和位置。 其次,如何有效利用 WWW 問題的三個維度信息,即時間、出行區(qū)域和意圖。 最后是數(shù)據(jù)稀疏性問題,由于航旅出行是較低頻的場景,WWW 問題進一步將<用戶,商品>的交互數(shù)據(jù)限制在特定的時空范圍內(nèi),加劇了數(shù)據(jù)稀疏性。 3. 模型結(jié)構(gòu) 為解決這些問題,LINet 模型進行了針對性的設(shè)計,主要包括六個關(guān)鍵子結(jié)構(gòu),用于群組劃分、群組內(nèi)部偏好刻畫、群組外部時空偏好刻畫,并在損失函數(shù)上進行了一些優(yōu)化以解決數(shù)據(jù)稀疏性問題。接下來,將逐一進行說明。(1)第一部分:用戶的出行意圖識別和群組劃分 在第一部分,我們采用了一個分類模型來描述用戶的出行訂單意圖,將具有相同出行目的地和相似出行意圖的用戶劃分為一組。這樣我們就得到了不同的群組以及每個群組的出行意圖。并且這一部分的輸出將用作其他子模塊的輸入。分類模型的形式可以多種多樣,這并不是 LINet 的重點,在此不做詳細闡述。 在進行劃分時,主要考慮了用戶的三種出行意圖,即用戶的本地旅行、異地旅行和商務(wù)出差。選擇這三種是因為它們在旅行行業(yè)中比較常見,占據(jù)了用戶出行意圖的大部分。 (2)第二部分:Internal Local Preference Representation 模塊主要獲取群組的近期偏好,具體來說,包括兩個子模塊:群組成員的表征聚集和群組近期的商品偏好表征。
- 群組成員的表征聚集: 為了反映不同用戶在群組決策時的不同影響力,類似 AGREE 本模塊利用一個注意力網(wǎng)絡(luò)來動態(tài)調(diào)整每個用戶對群體推薦性能的貢獻權(quán)重。 在 WWW 問題中,具有更多歷史交互行為的用戶被分配更高的權(quán)重。
- 群組最近行為的商品偏好表征: 考慮到一個群體內(nèi)的用戶具有相似的購買偏好,一個用戶最近購買的酒店很可能會被同一組內(nèi)的其他用戶再次購買,因此引入了類似于 DIN 的結(jié)構(gòu)來建模用戶群組近期的商品偏好表征。
利用群組的基本屬性、購買力和出行意圖來劃分群組。通過比較每個群組的前 50 個購買商品的差異,可以看到采用出行意圖劃分群組時,它們之間的差異較大。關(guān)于周期性模塊建模在前文中已做介紹,在此不再贅述。
在離線實驗中使用了 Hit 和 Precision 作為評估指標(biāo)。由上圖的對比實驗結(jié)果可以看到,相比于時間序列的方案,群組方案的效果更好,因為它更好地捕捉了群組的偏好。 此外,在兩個特殊的場景和人群中,即旅行和出差場景中,DIN 也取得了良好的效果。這是因為在這兩個場景中,這兩個人群的出行模式相對固定,而在進行群組推薦時,可以將其視為特殊用戶來處理,采用 DIN 的方式更容易捕捉到這種模式。 通過消融實驗可以看到,每個子結(jié)構(gòu)對提升效果都有幫助。 最后,我們采用了線上實驗的方法來驗證模型效果。在這里,我們進行了對比實驗,選取了群組推薦中離線評估最好的 MOSAN 模型。選擇了四個位置相近的城市,每個城市選取了 TOP1000 的酒店,交由 BD 輸出并進行運營,然后采用 DID 的方式評估酒店前后間夜數(shù)(room nights)的變化。可以看到實驗組帶來了 3% 的顯著提升。 以上就是對 LINet 模型的介紹。 03
PETS-滿足召回約束下的大促選品模型
接下來,是一個大型促銷活動的兩階段召回模型。 1. 問題定義 這個模型主要用于為假期促銷活動選擇爆款酒店,使選擇的酒店在能夠覆蓋真實銷量 Top80% 的基礎(chǔ)上,盡可能地準確,也就是最大化準確率(即滿足召回率的前提下最大化 F1 值)。 2. 難點 在階段 1 解決滿足召回約束的大型促銷選品問題,主要有三個難點:- 首先,酒店在不同假期的表現(xiàn)是不同的。 例如,一個酒店在今年春節(jié)可能在銷量的前 80%,在元旦可能在前 50%,而在中秋可能在前 10%,是不斷變化的。 我們需要挖掘酒店在不同假期的排名變化。
- 其次,數(shù)據(jù)稀疏性也是一個挑戰(zhàn),我們經(jīng)常發(fā)現(xiàn)在大型促銷活動選品時,很多酒店最近沒有銷量,而在假期其銷量大幅增加,成為熱銷商品,這是酒店冷啟動的問題。
- 最后,需要解決如何確保選品結(jié)果能夠覆蓋 Top80% 的熱銷酒店。
我們將問題建模成一個兩階段的選品模型:打分階段和截斷階段。第一階段建模成一個二分類問題,即一個商品是否可以成為爆款。第二個階段是截斷階段,主要基于第一階段的打分結(jié)果產(chǎn)生一個合理的截斷位置。打分階段采用編碼解碼的方式,在截斷階段借鑒了文檔檢索領(lǐng)域的方案,使用 Transformer 來預(yù)測位置 k 和 F1 之間的關(guān)系。 (1)打分階段 在打分階段,主要考慮一個酒店能否成為爆款的概率。從三個方面考慮:酒店在歷史大促中是否成為過爆款、酒店在近期是否成為過爆款以及相似酒店是否成為過爆款。
- 酒店在歷史上是否成為過爆款? 構(gòu)建了一個酒店長期表現(xiàn)的抽取模塊,采用卷積模式。 這個模塊的行是酒店的排名,列是假期。 使用兩種卷積方式,一種是列卷,另一種是行卷。 列卷主要觀察相同排名的酒店能夠覆蓋多少假期,而行卷則觀察相同假期的酒店在歷史大促上的表現(xiàn)。 將這兩部分綜合得到酒店的長期表現(xiàn)。
- 酒店近期是否成為過爆款? 構(gòu)建了一個時序預(yù)測模型,采用了 GRU 的結(jié)構(gòu),預(yù)測酒店的近期表現(xiàn)。
- 相似酒店是否成為過爆款? 采用兩種融合模式,一種是 item level 的,另一種是 category level 的。 item level 與相似酒店做 attention,而 category level 主要是對相似屬性的酒店進行泛化,看其是否成為過爆款。 兩部分為了解決數(shù)據(jù)稀疏和酒店冷啟動的問題
(3)損失函數(shù) 第一階段的打分階段的損失包括兩部分。一部分是直接預(yù)測是否成為爆款的交叉熵損失,另一部分是引入了對比的損失,以確保在保持預(yù)測準確度的情況下使正樣本更相似。 第二階段,損失是基于 RAML(Reward Augmented Maximum Likelihood)的獎勵增強的最大自然似然估計 F1 的分布,實際上是最大似然的一種變種。這里的 qk 代表 F1 的分布,而不是真正的二元標(biāo)簽。 在解決滿足召回約束下最大化 F1 的問題時,在截斷階段,采用相同的模型再進行一次對召回率的預(yù)估,得到召回率與位置k 的關(guān)系。有了位置 k 和 F1 的關(guān)系以及位置 k 和召回率的關(guān)系,就可以找到在滿足召回約束下最優(yōu)的 F1 和相應(yīng)的位置。 (4)截斷階段的調(diào)整 對輸入進行了一些調(diào)整。輸入包括打分階段的輸出;酒店的基礎(chǔ)類目、商圈星級的統(tǒng)計特征;對第一階段打分存在的偏差進行的校準;以及當(dāng)前 token 與之前所有酒店的相似關(guān)系。 對于 Transformer 的輸入也進行了調(diào)整,因為對于大促選品來說,只有一個查詢,而打分的酒店可能有數(shù)十萬個,因此對酒店進行了一定的分段。 以上就是本次分享的內(nèi)容,謝謝大家。 04
Q&A
Q :請問老師這個框架可以應(yīng)用到比如連鎖餐飲的菜品的上新嗎?有足夠多的供應(yīng)鏈 SKU,但是只有 100 多個展示位這種情況。 A:我們的模型服務(wù)于特定的業(yè)務(wù)場景,比如大促。對于連鎖餐飲的菜品上新,我的理解是類似于我們的冷啟動問題。在我們的模型結(jié)構(gòu)中也針對性地做了設(shè)計,比如會考慮相似酒店的 item level 和 category level 的建模,對于連鎖餐飲的菜品應(yīng)該也有一定的借鑒意義。 其次我們解決的問題有很多的候選集,而輸出或者提供給 BD 的名單只有有限個,對酒店具體的排序位置關(guān)注少,更多關(guān)注的是 recall 和 F1,對應(yīng)的是一個截斷問題。 如果你們也是這樣,理論上是可以的。 以上就是本次分享的內(nèi)容,謝謝大家。
分享嘉賓
INTRODUCTION
呂德濤(樓溪)
阿里飛豬
高級算法工程師
畢業(yè)于電子科技大學(xué),2018 年加入飛豬旅行,主要參與飛豬供應(yīng)鏈品類規(guī)劃和庫存相關(guān)工作。
往期推薦
基于 StarRocks 和 Paimon 打造湖倉分析新范式
懂車帝數(shù)據(jù)指標(biāo)體系建設(shè)和應(yīng)用實踐
字節(jié)跳動數(shù)據(jù)集成引擎 BitSail 開源架構(gòu)演進和實踐
預(yù)訓(xùn)練圖神經(jīng)網(wǎng)絡(luò)——以數(shù)據(jù)為中心的一些思考
時間序列 AI 技術(shù)與大模型:螞蟻集團的實踐與應(yīng)用探索
小紅書推搜場景下如何優(yōu)化機器學(xué)習(xí)異構(gòu)硬件推理突破算力瓶頸!
如何從0到1構(gòu)建一個好的用戶畫像平臺?——快手畫像平臺服務(wù)端負責(zé)人
點個在看你最好看
