攜程基礎業(yè)務研發(fā)部-數(shù)據(jù)產品和服務組,專注于個性化推薦、自然語言處理、圖像識別等人工智能領域的先進技術在旅游行業(yè)的應用研究并落地產生價值。
目前,團隊已經為攜程提供了通用化的個性化推薦系統(tǒng)、智能客服系統(tǒng)、AI平臺等一系列成熟的產品與服務。
攜程作為國內領先的 OTA,每天向上千萬用戶提供全方位的旅行服務,如何為如此眾多的用戶發(fā)現(xiàn)適合自己的旅游產品與服務,挖掘潛在的興趣,緩解信息過載,個性化推薦系統(tǒng)與算法在其中發(fā)揮著不可或缺的作用。
而 OTA 的個性化推薦一直也是個難點,沒有太多成功經驗可以借鑒,本文分享了攜程在個性化推薦實踐中的一些嘗試與摸索。
推薦流程大體上可以分為3個部分,召回、排序、推薦結果生成,整體的架構如下圖所示。
召回階段,主要是利用數(shù)據(jù)工程和算法的方式,從千萬級的產品中鎖定特定的候選集合,完成對產品的初步篩選,其在一定程度上決定了排序階段的效率和推薦結果的優(yōu)劣。
業(yè)內比較傳統(tǒng)的算法,主要是CF[1][2]、基于統(tǒng)計的 Contextual 推薦和LBS,但近期來深度學習被廣泛引入,算法性取得較大的提升,如:2015年 Netflix 和 Gravity R&D Inc 提出的利用 RNN的Session-based 推薦[5],2016年Recsys上提出的結合 CNN 和 PMF 應用于 Context-aware 推薦[10],2016年 Google 提出的將 DNN 作為 MF 的推廣,可以很容易地將任意連續(xù)和分類特征添加到模型中[9],2017年IJCAI會議中提出的利用LSTM進行序列推薦[6]。
2017年攜程個性化團隊在AAAI會議上提出的深度模型aSDAE,通過將附加的 side information 集成到輸入中,可以改善數(shù)據(jù)稀疏和冷啟動問題[4]。
對于召回階段得到的候選集,會對其進行更加復雜和精確的打分與重排序,進而得到一個更小的用戶可能感興趣的產品列表。
攜程的推薦排序并不單純追求點擊率或者轉化率,還需要考慮距離控制,產品質量控制等因素。
相比適用于搜索排序,文本相關性檢索等領域的 pairwise 和 listwise 方法,pointwise 方法可以通過疊加其他控制項進行干預,適用于多目標優(yōu)化問題。
工業(yè)界的推薦方法經歷從線性模型+大量人工特征工程[11] -> 復雜非線性模型-> 深度學習的發(fā)展。Microsoft 首先于2007年提出采用 Logistic Regression 來預估搜索廣告的點擊率[12],并于同年提出 OWLQN 優(yōu)化算法用于求解帶L1正則的LR問題[13],之后于2010年提出基于L2正則的在線學習版本Ad Predictor[14]。
Google 在2013年提出基于L1正則化的LR優(yōu)化算法FTRL-Proximal[15]。2010年提出的 Factorization Machine 算法[17] 和進一步2014年提出的 Filed-aware Factorization Machine[18] 旨在解決稀疏數(shù)據(jù)下的特征組合問題,從而避免采用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],因子分解機(FactorizationMachine),以及近期提出的 wdl 模型。
同時,我們認為即使在深度學習大行其道的今下,精細化的特征工程仍然是不可或缺的。
基于排序后的列表,在綜合考慮多樣性、新穎性、Exploit & Explore等因素后,生成最終的推薦結果。
本文之后將著重介紹召回與排序相關的工作與實踐。
一、數(shù)據(jù)
機器學習=數(shù)據(jù)+特征+模型
在介紹召回和排序之前,先簡單的了解一下所用到的數(shù)據(jù)。攜程作為大型 OTA 企業(yè),每天都有海量用戶來訪問,積累了大量的產品數(shù)據(jù)以及用戶行為相關的數(shù)據(jù)。實際在召回和排序的過程中大致使用到了以下這些數(shù)據(jù):
產品屬性:產品的一些固有屬性,如酒店的位置,星級,房型等。
產品統(tǒng)計:比如產品一段時間內的訂單量,瀏覽量,搜索量,點擊率等。
用戶畫像:用戶基礎屬性,比如年紀,性別,偏好等等。
用戶行為:用戶的評論,評分,瀏覽,搜索,下單等行為。
值得注意的是,針對統(tǒng)計類信息,可能需要進行一些平滑。例如針對歷史 CTR 反饋,利用貝葉斯平滑來預處理。
二、召回
召回階段是推薦流程基礎的一步,從成千上萬的Item中生成數(shù)量有限的候選集,在一定程度上決定了排序階段的效率和推薦結果的優(yōu)劣。
而由OTA的屬性決定,用戶的訪問行為大多是低頻的。這就使得user-item的交互數(shù)據(jù)是極其稀疏的,這對召回提出了很大的挑戰(zhàn)。
在業(yè)務實踐中,我們結合現(xiàn)有的通用推薦方法和業(yè)務場景,篩選和摸索出了幾種行之有效的方法:
Real-timeIntention
我們的實時意圖系統(tǒng)可以根據(jù)用戶最近瀏覽下單等行為,基于馬爾科夫預測模型推薦或者交叉推薦出的產品。這些候選產品可以比較精準的反應出用戶最近最新的意愿。
BusinessRules
業(yè)務規(guī)則是認為設定的規(guī)則,用來限定推薦的內容范圍等。例如機票推酒店的場景,需要通過業(yè)務規(guī)則來限定推薦的產品只能是酒店,而不會推薦其他旅游產品。
Context-Based
基于 Context 的推薦場景和 Context 本身密切相關,例如與季候相關的旅游產品(冬季滑雪、元旦跨年等)。
LBS
基于用戶的當前位置信息,篩選出的周邊酒店,景點,美食等等,比較適用于行中場景的推薦。
地理位置距離通過 GeoHash 算法計算,將區(qū)域遞歸劃分為規(guī)則矩形,并對每個矩形進行編碼,篩選 GeoHash 編碼相似的 POI,然后進行實際距離計算。
CollaborativeFiltering
協(xié)同過濾算法是推薦系統(tǒng)廣泛使用的一種解決實際問題的方法。攜程個性化團隊在深度學習與推薦系統(tǒng)結合的領域進行了相關的研究與應用,通過改進現(xiàn)有的深度模型,提出了一種深度模型 aSDAE。
該混合協(xié)同過濾模型是 SDAE 的一種變體,通過將附加的 side information 集成到輸入中,可以改善數(shù)據(jù)稀疏和冷啟動問題,詳情可以參見文獻[4]。
SequentialModel
現(xiàn)有的矩陣分解(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]都可以應用于推薦系統(tǒng)中,但是針對不同領域的推薦,需要更多的高效的模型。
隨著深度學習技術的發(fā)展,相信深度學習將會成為推薦系統(tǒng)領域中一項非常重要的技術手段。
以上幾種類型的召回方法各有優(yōu)勢,在實踐中,針對不同場景,結合使用多種方法,提供給用戶最佳的推薦,以此提升用戶體驗,增加用戶粘性。
三、排序
以工業(yè)界在廣告、搜索、推薦等領域的實踐經驗,在數(shù)據(jù)給定的條件下,經歷了從簡單線性模型+大量人工特征工程到復雜非線性模型+自動特征學習的演變。
在構建攜程個性化推薦系統(tǒng)的實踐過程中,對于推薦排序這個特定問題有一些自己的思考和總結,并將從特征和模型這兩方面展開。
Model
個性化排序模型旨在利用每個用戶的歷史行為數(shù)據(jù)集建立其各自的排序模型,本質上可以看作多任務學習(multi-task learning)。
事實上,通過加入 conjunctionfeatures,也就是加入 user 和 product 的交叉特征,可以將特定的 multi-task 任務簡化為單任務模型。
梳理工業(yè)界應用的排序模型,大致經歷三個階段,如下圖所示:
本文并不準備詳細介紹上圖中的算法細節(jié),感興趣的讀者可以查看相關論文,以下幾點是我們的一些實踐經驗和體會。
- 在實踐中選用以LR為主的模型,通過對數(shù)據(jù)離散化、分布轉換等非線性處理后使用LR。一般的,采用L1正則保證模型權重的稀疏性。
- 在優(yōu)化算法的選擇上,使用 OWL-QN 做 batch learning,F(xiàn)TRL 做 online learning。
- 實踐中利用因子分解機(FactorizationMachine)得到的特征交叉系數(shù)來選擇喂入LR模型的交叉特征組合,從而避免了繁雜的特征選擇工作。一般的受限于模型復雜度只進行二階展開。
- 對于三階以上的特征組合可以利用基于 mutual information 等方法處理。已有針對高階因子分解機(HighOrder FM)的研究,參見文獻[24]。
- 對于 Wide and Deep Learning,將 wide 部分替換 gbdt 組合特征,在實驗中取得了較好的效果,并將在近期上線。
- 后續(xù)的工作將針對如何進行 wide 部分和 deep 部分的 alternatingtraining 展開。
- Feature Engineering
事實上,雖然深度學習等方法一定程度上減少了繁雜的特征工程工作,但我們認為精心設計的特征工程仍舊是不可或缺的, 其中如何進行特征組合是我們在實踐中著重考慮的問題。一般的,可以分為顯式特征組合和半顯式特征組合。
顯式特征組合
對特征進行離散化后然后進行叉乘,采用笛卡爾積(cartesian product)、內積(inner product)等方式。
在構造交叉特征的過程中,需要進行特征離散化;針對不同的特征類型,有不同的處理方式。
1. numerical feature
無監(jiān)督離散化:根據(jù)簡單統(tǒng)計量進行等頻、等寬、分位點等劃分區(qū)間
有監(jiān)督離散化:1R方法,Entropy-BasedDiscretization (e.g. D2,MDLP)
2. ordinal feature(有序特征)
編碼表示值之間的順序關系。比如對于衛(wèi)生條件這一特征,分別有差,中,好三檔,那么可以分別編碼為(1,0,0),(1,1,0),(1,1,1)。
3. categorical feature (無序特征)
離散化為啞變量,將一維信息嵌入模型的bias中,起到簡化邏輯回歸模型的作用,降低了模型過擬合的風險。
離散特征經過OHE后,每個分類型變量的各個值在模型中都可以看作獨立變量,增強擬合能力。一般的,當模型加正則化的情況下約束模型自由度,我們認為OHE更好。
利用 feature hash 技術將高維稀疏特征映射到固定維度空間
半顯式特征組合
區(qū)別于顯式特征組合具有明確的組合解釋信息,半顯式特征組合通常的做法是基于樹方法形成特征劃分并給出相應組合路徑。
一般做法是將樣本的連續(xù)值特征輸入 ensemble tree,分別在每顆決策樹沿著特定分支路徑最終落入某個葉子結點得到其編號,本質上是這些特征在特定取值區(qū)間內的組合。
ensemble tree 可以采用 Gbdt 或者 random forest 實現(xiàn)。每一輪迭代,產生一棵新樹,最終通過 one-hotencoding 轉化為 binary vector,如下圖所示。
以下幾點是我們在實踐中的一些總結和思考。
在實驗中發(fā)現(xiàn)如果將連續(xù)值特征進行離散化后喂入 gbdt,gbdt 的效果不佳,AUC 比較低。
這是因為 gbdt 本身能很好的處理非線性特征,使用離散化后的特征反而沒什么效果。
xgboost 等樹模型無法有效處理高維稀疏特征比如 user id 類特征,可以采用的替代方式是:將這類 id 利用一種方式轉換為一個或多個新的連續(xù)型特征,然后用于模型訓練。
需要注意的是當采用葉子結點的 index 作為特征輸出需要考慮每棵樹的葉子結點并不完全同處于相同深度。
實踐中采用了 Monte Carlo Search 對 xgboost 的眾多參數(shù)進行超參數(shù)選擇。
在離線訓練階段采用基于 Spark 集群的 xgboost 分布式訓練,而在線預測時則對模型文件直接進行解析,能夠滿足線上實時響應的需求。
此外,在實踐發(fā)現(xiàn)單純采用 xgboost 自動學到的高階組合特征后續(xù)輸入LR模型并不能完全替代人工特征工程的作用;
可以將原始特征以及一些人工組合的高階交叉特征同 xgboost 學習到的特征組合一起放入后續(xù)的模型,獲得更好的效果。
四、總結
完整的推薦系統(tǒng)是一個龐大的系統(tǒng),涉及多個方面,除了召回、排序、列表生產等步驟外,還有數(shù)據(jù)準備與處理,工程架構與實現(xiàn),前端展現(xiàn)等等。
在實際中,通過把這些模塊集成在一起,構成了一個集團通用推薦系統(tǒng),對外提供推服務,應用在10多個欄位,60多個場景,取得了很好的效果。
本文側重介紹了召回與排序算法相關的目前已有的一些工作與實踐,下一步,計劃引入更多地深度模型來處理召回與排序問題,并結合在線學習、強化學習、遷移學習等方面的進展,優(yōu)化推薦的整體質量。
References
[1] Koren, Yehuda,Robert Bell, and Chris Volinsky. “Matrix factorization techniques forrecommender systems.” Computer 42.8 (2009).
[2] Sedhain, Suvash,et al. “Autorec: Autoencoders meet collaborative filtering.” Proceedingsof the 24th International Conference on World Wide Web. ACM, 2015.
[3] Rendle, Steffen,Christoph Freudenthaler, and Lars Schmidt-Thieme. “Factorizingpersonalized markov chains for next-basket recommendation.” Proceedings ofthe 19th international conference on World wide web. ACM, 2010.
[4] Dong, Xin, etal. “A Hybrid Collaborative Filtering Model with Deep Structure forRecommender Systems.” AAAI. 2017.
[5] Hidasi, Balázs,et al. “Session-based recommendations with recurrent neuralnetworks.” arXiv preprint arXiv:1511.06939 (2015).
[6] Zhu, Yu, et al.”What to Do Next: Modeling User Behaviors by Time-LSTM.” Proceedingsof the Twenty-Sixth International Joint Conference on Artificial Intelligence,IJCAI-17. 2017.
[7] Barkan, Oren,and Noam Koenigstein. “Item2vec: neural item embedding for collaborativefiltering.” Machine Learning for Signal Processing (MLSP), 2016 IEEE 26thInternational Workshop on. IEEE, 2016.
[8] Wang, Hao,Naiyan Wang, and Dit-Yan Yeung. “Collaborative deep learning forrecommender systems.” Proceedings of the 21th ACM SIGKDD InternationalConference on Knowledge Discovery and Data Mining. ACM, 2015.
[9] Covington, Paul,Jay Adams, and Emre Sargin. “Deep neural networks for youtuberecommendations.” Proceedings of the 10th ACM Conference on RecommenderSystems. ACM, 2016.
[10] Kim, Donghyun, et al. “Convolutional matrix factorization fordocument context-aware recommendation.” Proceedings of the 10th ACMConference on Recommender Systems. ACM, 2016.[11] https://mli.github.io/2013/03/24/the-end-of-feature-engineering-and-linear-model/[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 L1-regularized log-linear models.” Proceedings of the 24th internationalconference on Machine learning. ACM, 2007.[14] Graepel, Thore, et al. “Web-scale bayesian click-through rateprediction for sponsored search advertising in microsoft’s bing searchengine.” Omnipress, 2010.
[15] McMahan, H. Brendan, et al. “Ad click prediction: a view fromthe trenches.” Proceedings of the 19th ACM SIGKDD international conferenceon Knowledge discovery and data mining. ACM, 2013.
[16] Chen, Tianqi, and Carlos Guestrin. “Xgboost: A scalable treeboosting system.” Proceedings of the 22nd acm sigkdd internationalconference 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 forCTR prediction.” Proceedings of the 10th ACM Conference on RecommenderSystems. ACM, 2016.
[19] Gai, Kun, et al. “Learning Piece-wise Linear Models fromLarge Scale Data for Ad Click Prediction.” arXiv preprint arXiv:1704.05194(2017).
[20] He, Xinran, et al. “Practical lessons from predicting clickson ads at facebook.” Proceedings of the Eighth International Workshop onData Mining for Online Advertising. ACM, 2014.
[21] Cheng, Heng-Tze, et al. “Wide & deep learning forrecommender systems.” Proceedings of the 1st Workshop on Deep Learning forRecommender Systems. ACM, 2016.
[22] Guo, Huifeng, et al. “DeepFM: A Factorization-Machine basedNeural Network for CTR Prediction.” arXiv preprint arXiv:1703.04247(2017).
[23] Zhou, Guorui, et al. “Deep Interest Network for Click-ThroughRate Prediction.” arXiv preprint arXiv:1706.06978 (2017).
[24] Blondel, Mathieu, et al. “Higher-orderfactorization machines.” Advances in Neural Information ProcessingSystems. 2016.
[25] http://breezedeus.github.io/2014/11/20/breezedeus-feature-hashing.html
[26] https://en.wikipedia.org/wiki/Categorical_variable
[27] https://www.zhihu.com/question/48674426
[28] 多高的AUC才算高?https://zhuanlan.zhihu.com/p/24217322
文:攜程技術中心
相關文章推薦:
《《增長黑客》| 尋找生命中的AHA時刻》
《香水產品為例,首席增長官常用數(shù)據(jù)采集、分析、挖掘的過程及算法模型》
《首席增長官的北極星指標:新用戶激活》
更多精彩,關注:增長黑客(GrowthHK.cn)
增長黑客(Growth Hacker)是依靠技術和數(shù)據(jù)來達成各種營銷目標的新型團隊角色。從單線思維者時常忽略的角度和高度,梳理整合產品發(fā)展的因素,實現(xiàn)低成本甚至零成本帶來的有效增長…
本文經授權發(fā)布,不代表增長黑客立場,如若轉載,請注明出處:http://allfloridahomeinspectors.com/cgo/9914.html