攜程個性化推薦演算法實踐

AI前線發表於2018-01-10
本文由 「AI前線」原創,原文連結:深度學習大行其道,個性化推薦如何與時俱進?
作者|攜程基礎業務研發部
編輯|Emily

AI 前線導讀:”攜程作為國內領先的 OTA,每天向上千萬使用者提供全方位的旅行服務,如何為如此眾多的使用者發現適合自己的旅遊產品與服務,挖掘潛在的興趣,緩解資訊過載,個性化推薦系統與演算法在其中發揮著不可或缺的作用。而 OTA 的個性化推薦一直也是個難點,沒有太多成功經驗可以借鑑,本文分享了攜程在個性化推薦實踐中的一些嘗試與摸索。”


推薦流程大體上可以分為 3 個部分,召回、排序、推薦結果生成,整體的架構如下圖所示。

攜程個性化推薦演算法實踐

召回階段,主要是利用資料工程和演算法的方式,從千萬級的產品中鎖定特定的候選集合,完成對產品的初步篩選,其在一定程度上決定了排序階段的效率和推薦結果的優劣。業內比較傳統的演算法,主要是 CF[1][2]、基於統計的 Contextual 推薦和 LBS,但近期來深度學習被廣泛引入,演算法性取得較大的提升,如:2015 年 Netflix 和 Gravity R&D Inc 提出的利用 RNN 的 Session-based 推薦 [5],2016 年 Recsys 上提出的結合 CNN 和 PMF 應用於 Context-aware 推薦 [10],2016 年 Google 提出的將 DNN 作為 MF 的推廣,可以很容易地將任意連續和分類特徵新增到模型中 [9],2017 年 IJCAI 會議中提出的利用 LSTM 進行序列推薦 [6]。2017 年攜程個性化團隊在 AAAI 會議上提出的深度模型 aSDAE,通過將附加的 side information 整合到輸入中,可以改善資料稀疏和冷啟動問題 [4]。

對於召回階段得到的候選集,會對其進行更加複雜和精確的打分與重排序,進而得到一個更小的使用者可能感興趣的產品列表。攜程的推薦排序並不單純追求點選率或者轉化率,還需要考慮距離控制,產品質量控制等因素。相比適用於搜尋排序,文字相關性檢索等領域的 pairwise 和 listwise 方法,pointwise 方法可以通過疊加其他控制項進行干預,適用於多目標優化問題。工業界的推薦方法經歷從線性模型+大量人工特徵工程 [11] -> 複雜非線性模型 -> 深度學習的發展。Microsoft 首先於 2007 年提出採用 Logistic Regression 來預估搜尋廣告的點選率 [12],並於同年提出 OWLQN 優化演算法用於求解帶 L1 正則的 LR 問題 [13],之後於 2010 年提出基於 L2 正則的線上學習版本 Ad Predictor[14]。Google 在 2013 年提出基於 L1 正則化的 LR 優化演算法 FTRL-Proximal[15]。2010 年提出的 Factorization Machine 演算法 [17] 和進一步 2014 年提出的 Filed-aware Factorization Machine[18] 旨在解決稀疏資料下的特徵組合問題,從而避免採用 LR 時需要的大量人工特徵組合工作。阿里於 2011 年提出 Mixture of Logistic Regression 直接在原始空間學習特徵之間的非線性關係 [19]。Facebook 於 2014 年提出採用 GBDT 做自動特徵組合,同時融合 Logistic Regression[20]。近年來,深度學習也被成功應用於推薦排序領域。Google 在 2016 年提出 wide and deep learning 方法 [21],綜合模型的記憶和泛化能力。進一步華為提出 DeepFM[15] 模型用於替換 wdl 中的人工特徵組合部分。阿里在 2017 年將 attention 機制引入,提出 Deep Interest Network[23]。攜程在實踐相應的模型中積累了一定的經驗,無論是最常用的邏輯迴歸模型(Logistic Regression),樹模型(GBDT,Random Forest)[16],因子分解機(Factorization Machine),以及近期提出的 wdl 模型。同時,我們認為即使在深度學習大行其道的今下,精細化的特徵工程仍然是不可或缺的。

基於排序後的列表,在綜合考慮多樣性、新穎性、Exploit & Explore 等因素後,生成最終的推薦結果。本文之後將著重介紹召回與排序相關的工作與實踐。


資料

機器學習=資料+特徵+模型

在介紹召回和排序之前,先簡單的瞭解一下所用到的資料。攜程作為大型 OTA 企業,每天都有海量使用者來訪問,積累了大量的產品資料以及使用者行為相關的資料。實際在召回和排序的過程中大致使用到了以下這些資料:

  • 產品屬性:產品的一些固有屬性,如酒店的位置,星級,房型等。
  • 產品統計:比如產品一段時間內的訂單量,瀏覽量,搜尋量,點選率等。
  • 使用者畫像:使用者基礎屬性,比如年紀,性別,偏好等等。
  • 使用者行為:使用者的評論,評分,瀏覽,搜尋,下單等行為。

值得注意的是,針對統計類資訊,可能需要進行一些平滑。例如針對歷史 CTR 反饋,利用貝葉斯平滑來預處理。

召回

召回階段是推薦流程基礎的一步,從成千上萬的 Item 中生成數量有限的候選集,在一定程度上決定了排序階段的效率和推薦結果的優劣。而由 OTA 的屬性決定,使用者的訪問行為大多是低頻的。這就使得 user-item 的互動資料是極其稀疏的,這對召回提出了很大的挑戰。在業務實踐中,我們結合現有的通用推薦方法和業務場景,篩選和摸索出了幾種行之有效的方法:

Real-time Intention

我們的實時意圖系統可以根據使用者最近瀏覽下單等行為,基於馬爾科夫預測模型推薦或者交叉推薦出的產品。這些候選產品可以比較精準的反應出使用者最近最新的意願。

Business Rules

業務規則是認為設定的規則,用來限定推薦的內容範圍等。例如機票推酒店的場景,需要通過業務規則來限定推薦的產品只能是酒店,而不會推薦其他旅遊產品。

Context-Based

基於 Context 的推薦場景和 Context 本身密切相關,例如與季候相關的旅遊產品(冬季滑雪、元旦跨年等)。

攜程個性化推薦演算法實踐
攜程個性化推薦演算法實踐

LBS

基於使用者的當前位置資訊,篩選出的周邊酒店,景點,美食等等,比較適用於行中場景的推薦。地理位置距離通過 GeoHash 演算法計算,將區域遞迴劃分為規則矩形,並對每個矩形進行編碼,篩選 GeoHash 編碼相似的 POI,然後進行實際距離計算。

Collaborative Filtering

協同過濾演算法是推薦系統廣泛使用的一種解決實際問題的方法。攜程個性化團隊在深度學習與推薦系統結合的領域進行了相關的研究與應用,通過改進現有的深度模型,提出了一種深度模型 aSDAE。該混合協同過濾模型是 SDAE 的一種變體,通過將附加的 side information 整合到輸入中,可以改善資料稀疏和冷啟動問題,詳情可以參見文獻 [4]。

Sequential Model

現有的矩陣分解 (Matrix Factorization) 方法基於歷史的 user-item 互動學習使用者的長期興趣偏好,Markov chain 通過學習 item 間的 transition graph 對使用者的序列行為建模 [3]。事實上,在旅遊場景下,加入使用者行為的先後順序,從而能更好的反映使用者的決策過程。我們結合 Matrix Factorization 和 Markov chain 為每個使用者構建個性化轉移矩陣,從而基於使用者的歷史行為來預測使用者的下一行為。在旅遊場景中,可以用來預測使用者下一個目的地或者 POI。

除此之外,也可以使用 RNN 來進行序列推薦,比如基於 Session 的推薦 [5],使用考慮時間間隔資訊的 LSTM 來做下一個 item 的推薦等 [6]。

此外,一些常見的深度模型 (DNN, AE, CNN 等)[7][8][9][10] 都可以應用於推薦系統中,但是針對不同領域的推薦,需要更多的高效的模型。隨著深度學習技術的發展,相信深度學習將會成為推薦系統領域中一項非常重要的技術手段。以上幾種型別的召回方法各有優勢,在實踐中,針對不同場景,結合使用多種方法,提供給使用者最佳的推薦,以此提升使用者體驗,增加使用者粘性。


排序

以工業界在廣告、搜尋、推薦等領域的實踐經驗,在資料給定的條件下,經歷了從簡單線性模型+大量人工特徵工程到複雜非線性模型+自動特徵學習的演變。在構建攜程個性化推薦系統的實踐過程中,對於推薦排序這個特定問題有一些自己的思考和總結,並將從特徵和模型這兩方面展開。

Model

個性化排序模型旨在利用每個使用者的歷史行為資料集建立其各自的排序模型,本質上可以看作多工學習 (multi-task learning)。事實上,通過加入 conjunction features,也就是加入 user 和 product 的交叉特徵,可以將特定的 multi-task 任務簡化為單任務模型。梳理工業界應用的排序模型,大致經歷三個階段,如下圖所示:

攜程個性化推薦演算法實踐


本文並不準備詳細介紹上圖中的演算法細節,感興趣的讀者可以檢視相關論文,以下幾點是我們的一些實踐經驗和體會。

  • 在實踐中選用以 LR 為主的模型,通過對資料離散化、分佈轉換等非線性處理後使用 LR。一般的,採用 L1 正則保證模型權重的稀疏性。在優化演算法的選擇上,使用 OWL-QN 做 batch learning,FTRL 做 online learning。
  • 實踐中利用因子分解機(Factorization Machine)得到的特徵交叉係數來選擇喂入 LR 模型的交叉特徵組合,從而避免了繁雜的特徵選擇工作。一般的受限於模型複雜度只進行二階展開。對於三階以上的特徵組合可以利用基於 mutual information 等方法處理。已有針對高階因子分解機(High Order FM)的研究,參見文獻 [24]。
  • 對於 Wide and Deep Learning,將 wide 部分替換 gbdt 組合特徵,在實驗中取得了較好的效果,並將在近期上線。後續的工作將針對如何進行 wide 部分和 deep 部分的 alternating training 展開。

Feature Engineering

事實上,雖然深度學習等方法一定程度上減少了繁雜的特徵工程工作,但我們認為精心設計的特徵工程仍舊是不可或缺的, 其中如何進行特徵組合是我們在實踐中著重考慮的問題。一般的,可以分為顯式特徵組合和半顯式特徵組合。


顯式特徵組合

對特徵進行離散化後然後進行叉乘,採用笛卡爾積 (cartesian product)、內積 (inner product) 等方式。

在構造交叉特徵的過程中,需要進行特徵離散化;針對不同的特徵型別,有不同的處理方式。

numerical feature

  • 無監督離散化:根據簡單統計量進行等頻、等寬、分位點等劃分割槽間
  • 有監督離散化:1R 方法,Entropy-Based Discretization (e.g. D2,MDLP)

ordinal feature(有序特徵)

編碼表示值之間的順序關係。比如對於衛生條件這一特徵,分別有差,中,好三檔,那麼可以分別編碼為 (1,0,0),(1,1,0),(1,1,1)。

categorical feature (無序特徵)

攜程個性化推薦演算法實踐
  • 離散化為啞變數,將一維資訊嵌入模型的 bias 中,起到簡化邏輯迴歸模型的作用,降低了模型過擬合的風險。
  • 離散特徵經過 OHE 後,每個分型別變數的各個值在模型中都可以看作獨立變數,增強擬合能力。一般的,當模型加正則化的情況下約束模型自由度,我們認為 OHE 更好。
  • 利用 feature hash 技術將高維稀疏特徵對映到固定維度空間


半顯式特徵組合

區別於顯式特徵組合具有明確的組合解釋資訊,半顯式特徵組合通常的做法是基於樹方法形成特徵劃分並給出相應組合路徑。

一般做法是將樣本的連續值特徵輸入 ensemble tree,分別在每顆決策樹沿著特定分支路徑最終落入某個葉子結點得到其編號,本質上是這些特徵在特定取值區間內的組合。ensemble tree 可以採用 Gbdt 或者 random forest 實現。每一輪迭代,產生一棵新樹,最終通過 one-hot encoding 轉化為 binary vector,如下圖所示。

攜程個性化推薦演算法實踐

以下幾點是我們在實踐中的一些總結和思考。

  • 在實驗中發現如果將連續值特徵進行離散化後喂入 gbdt,gbdt 的效果不佳,AUC 比較低。這是因為 gbdt 本身能很好的處理非線性特徵,使用離散化後的特徵反而沒什麼效果。xgboost 等樹模型無法有效處理高維稀疏特徵比如 user id 類特徵,可以採用的替代方式是: 將這類 id 利用一種方式轉換為一個或多個新的連續型特徵,然後用於模型訓練。
  • 需要注意的是當採用葉子結點的 index 作為特徵輸出需要考慮每棵樹的葉子結點並不完全同處於相同深度。
  • 實踐中採用了 Monte Carlo Search 對 xgboost 的眾多引數進行超引數選擇。
  • 在離線訓練階段採用基於 Spark 叢集的 xgboost 分散式訓練,而線上預測時則對模型檔案直接進行解析,能夠滿足線上實時響應的需求。此外,在實踐發現單純採用 Xgboost 自動學到的高階組合特徵後續輸入 LR 模型並不能完全替代人工特徵工程的作用;可以將原始特徵以及一些人工組合的高階交叉特徵同 xgboost 學習到的特徵組合一起放入後續的模型,獲得更好的效果。


總結

完整的推薦系統是一個龐大的系統,涉及多個方面,除了召回、排序、列表生產等步驟外,還有資料準備與處理,工程架構與實現,前端展現等等。 在實際中,通過把這些模組整合在一起,構成了一個集團通用推薦系統,對外提供推服務,應用在 10 多個欄位,60 多個場景,取得了很好的效果。本文側重介紹了召回與排序演算法相關的目前已有的一些工作與實踐,下一步,計劃引入更多地深度模型來處理召回與排序問題,並結合線上學習、強化學習、遷移學習等方面的進展,優化推薦的整體質量。

作者簡介

攜程基礎業務研發部 - 資料產品和服務組,專注於個性化推薦、自然語言處理、影象識別等人工智慧領域的先進技術在旅遊行業的應用研究並落地產生價值。目前,團隊已經為攜程提供了通用化的個性化推薦系統、智慧客服系統、AI 平臺等一系列成熟的產品與服務。

References[1] Koren, Yehuda, Robert Bell, and Chris Volinsky. "Matrix factorization techniques for recommender systems." Computer 42.8 (2009).

[2] Sedhain, Suvash, et al. "Autorec: Autoencoders meet collaborative filtering." Proceedings of the 24th International Conference on World Wide Web. ACM, 2015.

[3] Rendle, Steffen, Christoph Freudenthaler, and Lars Schmidt-Thieme. "Factorizing personalized markov chains for next-basket recommendation." Proceedings of the 19th international conference on World wide web. ACM, 2010.

[4] Dong, Xin, et al. "A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems." AAAI. 2017.

[5] Hidasi, Balázs, et al. "Session-based recommendations with recurrent neural networks." arXiv preprint arXiv:1511.06939 (2015).

[6] Zhu, Yu, et al. "What to Do Next: Modeling User Behaviors by Time-LSTM." Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, IJCAI-17. 2017.

[7] Barkan, Oren, and Noam Koenigstein. "Item2vec: neural item embedding for collaborative filtering." Machine Learning for Signal Processing (MLSP), 2016 IEEE 26th International Workshop on. IEEE, 2016.

[8] Wang, Hao, Naiyan Wang, and Dit-Yan Yeung. "Collaborative deep learning for recommender systems." Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2015.

[9] Covington, Paul, Jay Adams, and Emre Sargin. "Deep neural networks for youtube recommendations." Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016.

[10] Kim, Donghyun, et al. "Convolutional matrix factorization for document context-aware recommendation." Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016.

[11] mli.github.io/2013/03/24/…

[12] Richardson, Matthew, Ewa Dominowska, and Robert Ragno. "Predicting clicks: estimating the click-through rate for new ads." Proceedings of the 16th international conference on World Wide Web. ACM, 2007

[13] Andrew, Galen, and Jianfeng Gao. "Scalable training of L 1-regularized log-linear models." Proceedings of the 24th international conference on Machine learning. ACM, 2007.

[14] Graepel, Thore, et al. "Web-scale bayesian click-through rate prediction for sponsored search advertising in microsoft's bing search engine." Omnipress, 2010.

[15] McMahan, H. Brendan, et al. "Ad click prediction: a view from the trenches." Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2013.

[16] Chen, Tianqi, and Carlos Guestrin. "Xgboost: A scalable tree boosting system." Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining. ACM, 2016.

[17] Rendle, Steffen. "Factorization machines." Data Mining (ICDM), 2010 IEEE 10th International Conference on. IEEE, 2010.

[18] Juan, Yuchin, et al. "Field-aware factorization machines for CTR prediction." Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016.

[19] Gai, Kun, et al. "Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction." arXiv preprint arXiv:1704.05194 (2017).

[20] He, Xinran, et al. "Practical lessons from predicting clicks on ads at facebook." Proceedings of the Eighth International Workshop on Data Mining for Online Advertising. ACM, 2014.

[21] Cheng, Heng-Tze, et al. "Wide & deep learning for recommender systems." Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. ACM, 2016.

[22] Guo, Huifeng, et al. "DeepFM: A Factorization-Machine based Neural Network for CTR Prediction." arXiv preprint arXiv:1703.04247 (2017).

[23] Zhou, Guorui, et al. "Deep Interest Network for Click-Through Rate Prediction." arXiv preprint arXiv:1706.06978 (2017).

[24] Blondel, Mathieu, et al. "Higher-order factorization machines." Advances in Neural Information Processing Systems. 2016.

[25] breezedeus.github.io/2014/11/20/…

[26] en.wikipedia.org/wiki/Catego…

[27] www.zhihu.com/question/48…

更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大資料」可獲得《AI前線》系列PDF迷你書和技能圖譜。


相關文章