干货 | 当你在携程搜索时,背后的推荐系统是如何工作的
作者簡介
葛榮亮,攜程搜索部門高級研發工程師。2015年加入攜程,目前主要負責搜索平臺的前端+數據挖據工作。
一、前言
隨著旅游業的發展,人們對搜索的要求越來越高。智能化大趨勢下,個性化的推薦系統的應用及用戶需求也越來越廣泛。
旅游推薦系統主要面臨的問題及挑戰包括:
-
用戶維度,用戶的需求多種多樣,如本地異地的差異,年齡、家庭結構的差異等;
-
時間、地理維度,每個時間點的需求都是不同的,如季節(冬季的溫泉,夏季避暑...)、早中晚的需求差異,不同城市用戶對同一目的地的旅游產品類別需求可能不同;
-
產品維度,如何輸出多樣性的產品也是推薦系統考慮的重點,如相似的酒店、景點等。
針對以上面臨的問題和挑戰,本文將分享攜程推薦系統的更新迭代過程。
二、推薦系統架構
攜程搜索推薦系統架構如下:
拋開業務和數據部分,這里只簡單介紹推薦服務的結構,其簡要構造如下:
2.1 用戶行為
用戶行為數據展示了用戶的操作習慣和偏好。對這部分數據進行離線分析,可以更好地理解用戶,以此來做線上產品的推薦源。
對線上需要的行為數據,可以取一個月或者近7天的歷史數據,以保證數據的時效性。
2.2 可用產品
這部分指的是可供用戶使用的產品及可以提供幫助的文章等。主旨在于告訴系統,我們有什么產品,哪些產品是可以提供給用戶的,及哪些是優質的產品。產品的定義比較廣泛,可以不限定具體的售賣產品,也可指定用戶偏好,比如用戶對酒店、景點的偏向等。
2.3.召回
這部分是整個系統的重點,也是規劃場景最多的地方。這部分可以細分成幾大召回策略(以推薦實際酒店、文章、景點的系統為例):
2.3.1 補充策略
這部分主要輸出當前熱門的產品信息,比如當季熱門的酒店、景點等。
在具體實現的時候可以考慮季節性的變化,比如以兩周為周期,統計產品的點擊情況,當用戶對于溫泉搜索量增加時,可以輸出一些熱門的溫泉景點。
這部分補充策略,只是為了解決冷啟動問題,即當用戶沒有行為,或者沒有地理位置信息時,做最基本的補充。
2.3.2 基于位置召回
當得到具體位置信息之后,可以做更具體的補充召回:
1)根據當前用戶所在地,推薦當地的熱門產品;
2)判斷用戶是否在常住地。如常駐上海的用戶,在上海搜索產品時,更喜歡周邊游,而常駐北京的用戶,在上海搜產品時,更喜歡東方明珠和迪士尼。
具體分類為:
本地需求(定位城市=常駐城市),輸出當地人熱搜/點擊的產品;
外地需求(定位城市!=常駐城市),輸出外地人熱搜/點擊的產品;
3)根據地理位置信息,輸出用戶周邊的幾公里內的產品。
2.3.3 基于歷史關聯策略
這部分內容是基于用戶歷史行為,推出相關的產品。需要對數據和行為進行總結,并提供相應的產品展示邏輯,豐富推薦召回的內容。比如用戶預定迪士尼樂園的門票,可以推迪士尼附近的酒店等。
2.3.4 協同過濾
協同過濾是推薦系統經典的算法。其對用戶行為、產品的相關性做了抽象和泛化。協同過濾算法主要分為USER CF和ITEM CF,即基于用戶的協同過濾和基于物品的協同過濾。
在這里我們主要用到基于物品的協調過濾,相比用戶的協同過濾,物品的內容屬性和數量更便于統計和計算。具體算法可以參看《推薦系統實踐》這本書。
大體可以理解為,定了某一酒店的用戶,又定了哪些酒店,及通常訂了又訂的邏輯。比如,以用戶一個月的點擊或訂單數據為基礎,計算出物品的相似度,當用戶搜了某條產品時,推薦與其相似的其他產品。具體示例為:假設東方明珠、外灘、迪士尼產品相似,當用戶搜索東方明珠的時,推薦外灘和迪士尼。
2.4 排序
上述召回策略,會召回大量的產品,如何對這些產品進行合理排序,是推薦系統的核心部分,同時也是反映系統優劣的指標。
這部分,經歷幾次迭代。
在1.0時代,在排序策略上進行了幾次變動:
1)對召回產品按照類別,對相同類型產品,進行銷量排序;
2)考慮到操作時間問題,加入操作時間權重。對歷史行為的時間進行歸一化得出權重,最大為1。操作時間越近,權重越大;
3)考慮規則的重要性,加入規則分;
上述排序策略取得一定效果,但很難完善排序問題。
最終,選取了機器學習的排序算法。其基本實現為:對每個輸出產品,規劃特征,輸出特征集。比如季節特征,當地人/外地人特征,一天內的早、中、晚特征等。接下來根據訂單和點擊數據,輸出訓練樣本,為每個召回產品做一個打分,最高5分,最低1分。最后使用XGBoost工具,對樣本進行訓練,這樣就能得出基本模型。
通過模型,對線上每個召回產品進行打分并排序,得出最終結果。同時在系統上線后,定期的進行更新,并通過ABTest系統不斷對模型進行迭代。
大致流程如下:
2.5 過濾輸出
這部分內容,主要做格式化輸出,并過濾一些無效,黑名單產品。
每個場景的輸出,都不太一樣,就需要對其數據進行篩選。比如進入搜索默認頁時,提前給出推薦產品,減少用戶操作。還可以在用戶搜某個具體城市時,輸出相應的結果。
這里需要注意的是馬太效應。由于推出的內容有限,對于一些產品,會導致點擊多的會越來越多,而點擊少的,則慢慢退出推薦序列。這里需要對那些不常用產品做展示規劃。比如隨機出一兩條,給一定曝光,消除一部分馬太效應。
三、展望
目前推薦系統已經運用在多個場景,但對場景及產品的引入畢竟有限,同時對query 分析還不夠完善,后續將豐富產品,并引入更多機器學習的內容,讓系統更智能化和自動化。同時會加入更多深度學習內容,在搜索意圖和NLP相關方面做更進一步的分析。
總結
以上是生活随笔為你收集整理的干货 | 当你在携程搜索时,背后的推荐系统是如何工作的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货 | 强化学习在携程酒店推荐排序中的
- 下一篇: 干货 | 云计算时代携程的网络架构变迁