CGO參考:攜程個(gè)性化推薦算法實(shí)踐

攜程基礎(chǔ)業(yè)務(wù)研發(fā)部-數(shù)據(jù)產(chǎn)品和服務(wù)組,專注于個(gè)性化推薦、自然語言處理、圖像識別等人工智能領(lǐng)域的先進(jìn)技術(shù)在旅游行業(yè)的應(yīng)用研究并落地產(chǎn)生價(jià)值。

目前,團(tuán)隊(duì)已經(jīng)為攜程提供了通用化的個(gè)性化推薦系統(tǒng)、智能客服系統(tǒng)、AI平臺等一系列成熟的產(chǎn)品與服務(wù)。

攜程作為國內(nèi)領(lǐng)先的 OTA,每天向上千萬用戶提供全方位的旅行服務(wù),如何為如此眾多的用戶發(fā)現(xiàn)適合自己的旅游產(chǎn)品與服務(wù),挖掘潛在的興趣,緩解信息過載,個(gè)性化推薦系統(tǒng)與算法在其中發(fā)揮著不可或缺的作用。

而 OTA 的個(gè)性化推薦一直也是個(gè)難點(diǎn),沒有太多成功經(jīng)驗(yàn)可以借鑒,本文分享了攜程在個(gè)性化推薦實(shí)踐中的一些嘗試與摸索。

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

CGO參考:攜程個(gè)性化推薦算法實(shí)踐

召回階段,主要是利用數(shù)據(jù)工程和算法的方式,從千萬級的產(chǎn)品中鎖定特定的候選集合,完成對產(chǎn)品的初步篩選,其在一定程度上決定了排序階段的效率和推薦結(jié)果的優(yōu)劣。

業(yè)內(nèi)比較傳統(tǒng)的算法,主要是CF[1][2]、基于統(tǒng)計(jì)的 Contextual 推薦和LBS,但近期來深度學(xué)習(xí)被廣泛引入,算法性取得較大的提升,如:2015年 Netflix 和 Gravity R&D Inc 提出的利用 RNN的Session-based 推薦[5],2016年Recsys上提出的結(jié)合 CNN 和 PMF 應(yīng)用于 Context-aware 推薦[10],2016年 Google 提出的將 DNN 作為 MF 的推廣,可以很容易地將任意連續(xù)和分類特征添加到模型中[9],2017年IJCAI會議中提出的利用LSTM進(jìn)行序列推薦[6]。

2017年攜程個(gè)性化團(tuán)隊(duì)在AAAI會議上提出的深度模型aSDAE,通過將附加的 side information 集成到輸入中,可以改善數(shù)據(jù)稀疏和冷啟動(dòng)問題[4]。

對于召回階段得到的候選集,會對其進(jìn)行更加復(fù)雜和精確的打分與重排序,進(jìn)而得到一個(gè)更小的用戶可能感興趣的產(chǎn)品列表。

攜程的推薦排序并不單純追求點(diǎn)擊率或者轉(zhuǎn)化率,還需要考慮距離控制,產(chǎn)品質(zhì)量控制等因素。

相比適用于搜索排序,文本相關(guān)性檢索等領(lǐng)域的 pairwise 和 listwise 方法,pointwise 方法可以通過疊加其他控制項(xiàng)進(jìn)行干預(yù),適用于多目標(biāo)優(yōu)化問題。

工業(yè)界的推薦方法經(jīng)歷從線性模型+大量人工特征工程[11] -> 復(fù)雜非線性模型-> 深度學(xué)習(xí)的發(fā)展。Microsoft 首先于2007年提出采用 Logistic Regression 來預(yù)估搜索廣告的點(diǎn)擊率[12],并于同年提出 OWLQN 優(yōu)化算法用于求解帶L1正則的LR問題[13],之后于2010年提出基于L2正則的在線學(xué)習(xí)版本Ad Predictor[14]。

Google 在2013年提出基于L1正則化的LR優(yōu)化算法FTRL-Proximal[15]。2010年提出的 Factorization Machine 算法[17] 和進(jìn)一步2014年提出的 Filed-aware Factorization Machine[18] 旨在解決稀疏數(shù)據(jù)下的特征組合問題,從而避免采用LR時(shí)需要的大量人工特征組合工作。

阿里于2011年提出 Mixture of Logistic Regression 直接在原始空間學(xué)習(xí)特征之間的非線性關(guān)系[19]。

Facebook 于2014年提出采用 GBDT 做自動(dòng)特征組合,同時(shí)融合Logistic Regression[20]。

近年來,深度學(xué)習(xí)也被成功應(yīng)用于推薦排序領(lǐng)域。Google 在2016年提出wide and deep learning 方法[21],綜合模型的記憶和泛化能力。

進(jìn)一步華為提出 DeepFM[15] 模型用于替換wdl中的人工特征組合部分。阿里在2017年將 attention 機(jī)制引入,提出 Deep Interest Network[23]。

攜程在實(shí)踐相應(yīng)的模型中積累了一定的經(jīng)驗(yàn),無論是最常用的邏輯回歸模型(Logistic Regression),樹模型(GBDT,Random Forest)[16],因子分解機(jī)(FactorizationMachine),以及近期提出的 wdl 模型。

同時(shí),我們認(rèn)為即使在深度學(xué)習(xí)大行其道的今下,精細(xì)化的特征工程仍然是不可或缺的。

基于排序后的列表,在綜合考慮多樣性、新穎性、Exploit & Explore等因素后,生成最終的推薦結(jié)果。

本文之后將著重介紹召回與排序相關(guān)的工作與實(shí)踐。

一、數(shù)據(jù)

機(jī)器學(xué)習(xí)=數(shù)據(jù)+特征+模型

在介紹召回和排序之前,先簡單的了解一下所用到的數(shù)據(jù)。攜程作為大型 OTA 企業(yè),每天都有海量用戶來訪問,積累了大量的產(chǎn)品數(shù)據(jù)以及用戶行為相關(guān)的數(shù)據(jù)。實(shí)際在召回和排序的過程中大致使用到了以下這些數(shù)據(jù):

產(chǎn)品屬性:產(chǎn)品的一些固有屬性,如酒店的位置,星級,房型等。

產(chǎn)品統(tǒng)計(jì):比如產(chǎn)品一段時(shí)間內(nèi)的訂單量,瀏覽量,搜索量,點(diǎn)擊率等。

用戶畫像:用戶基礎(chǔ)屬性,比如年紀(jì),性別,偏好等等。

用戶行為:用戶的評論,評分,瀏覽,搜索,下單等行為。

值得注意的是,針對統(tǒng)計(jì)類信息,可能需要進(jìn)行一些平滑。例如針對歷史 CTR 反饋,利用貝葉斯平滑來預(yù)處理。

二、召回

召回階段是推薦流程基礎(chǔ)的一步,從成千上萬的Item中生成數(shù)量有限的候選集,在一定程度上決定了排序階段的效率和推薦結(jié)果的優(yōu)劣。

而由OTA的屬性決定,用戶的訪問行為大多是低頻的。這就使得user-item的交互數(shù)據(jù)是極其稀疏的,這對召回提出了很大的挑戰(zhàn)。

在業(yè)務(wù)實(shí)踐中,我們結(jié)合現(xiàn)有的通用推薦方法和業(yè)務(wù)場景,篩選和摸索出了幾種行之有效的方法:

Real-timeIntention

我們的實(shí)時(shí)意圖系統(tǒng)可以根據(jù)用戶最近瀏覽下單等行為,基于馬爾科夫預(yù)測模型推薦或者交叉推薦出的產(chǎn)品。這些候選產(chǎn)品可以比較精準(zhǔn)的反應(yīng)出用戶最近最新的意愿。

BusinessRules

業(yè)務(wù)規(guī)則是認(rèn)為設(shè)定的規(guī)則,用來限定推薦的內(nèi)容范圍等。例如機(jī)票推酒店的場景,需要通過業(yè)務(wù)規(guī)則來限定推薦的產(chǎn)品只能是酒店,而不會推薦其他旅游產(chǎn)品。

Context-Based

基于 Context 的推薦場景和 Context 本身密切相關(guān),例如與季候相關(guān)的旅游產(chǎn)品(冬季滑雪、元旦跨年等)。

CGO參考:攜程個(gè)性化推薦算法實(shí)踐

LBS

基于用戶的當(dāng)前位置信息,篩選出的周邊酒店,景點(diǎn),美食等等,比較適用于行中場景的推薦。

地理位置距離通過 GeoHash 算法計(jì)算,將區(qū)域遞歸劃分為規(guī)則矩形,并對每個(gè)矩形進(jìn)行編碼,篩選 GeoHash 編碼相似的 POI,然后進(jìn)行實(shí)際距離計(jì)算。

CollaborativeFiltering

協(xié)同過濾算法是推薦系統(tǒng)廣泛使用的一種解決實(shí)際問題的方法。攜程個(gè)性化團(tuán)隊(duì)在深度學(xué)習(xí)與推薦系統(tǒng)結(jié)合的領(lǐng)域進(jìn)行了相關(guān)的研究與應(yīng)用,通過改進(jìn)現(xiàn)有的深度模型,提出了一種深度模型 aSDAE。

該混合協(xié)同過濾模型是 SDAE 的一種變體,通過將附加的 side information 集成到輸入中,可以改善數(shù)據(jù)稀疏和冷啟動(dòng)問題,詳情可以參見文獻(xiàn)[4]。

SequentialModel

現(xiàn)有的矩陣分解(Matrix Factorization)方法基于歷史的 user-item 交互學(xué)習(xí)用戶的長期興趣偏好,Markov chain 通過學(xué)習(xí) item 間的 transition graph 對用戶的序列行為建模[3]。

事實(shí)上,在旅游場景下,加入用戶行為的先后順序,從而能更好的反映用戶的決策過程。我們結(jié)合 Matrix Factorization 和 Markov chain 為每個(gè)用戶構(gòu)建個(gè)性化轉(zhuǎn)移矩陣,從而基于用戶的歷史行為來預(yù)測用戶的下一行為。

在旅游場景中,可以用來預(yù)測用戶下一個(gè)目的地或者 POI。

除此之外,也可以使用 RNN 來進(jìn)行序列推薦,比如基于 Session 的推薦[5],使用考慮時(shí)間間隔信息的 LSTM 來做下一個(gè) item 的推薦等[6]。

此外,一些常見的深度模型(DNN, AE,CNN等)[7][8][9][10]都可以應(yīng)用于推薦系統(tǒng)中,但是針對不同領(lǐng)域的推薦,需要更多的高效的模型。

隨著深度學(xué)習(xí)技術(shù)的發(fā)展,相信深度學(xué)習(xí)將會成為推薦系統(tǒng)領(lǐng)域中一項(xiàng)非常重要的技術(shù)手段。

以上幾種類型的召回方法各有優(yōu)勢,在實(shí)踐中,針對不同場景,結(jié)合使用多種方法,提供給用戶最佳的推薦,以此提升用戶體驗(yàn),增加用戶粘性。

三、排序

以工業(yè)界在廣告、搜索、推薦等領(lǐng)域的實(shí)踐經(jīng)驗(yàn),在數(shù)據(jù)給定的條件下,經(jīng)歷了從簡單線性模型+大量人工特征工程到復(fù)雜非線性模型+自動(dòng)特征學(xué)習(xí)的演變。

在構(gòu)建攜程個(gè)性化推薦系統(tǒng)的實(shí)踐過程中,對于推薦排序這個(gè)特定問題有一些自己的思考和總結(jié),并將從特征和模型這兩方面展開。

Model

個(gè)性化排序模型旨在利用每個(gè)用戶的歷史行為數(shù)據(jù)集建立其各自的排序模型,本質(zhì)上可以看作多任務(wù)學(xué)習(xí)(multi-task learning)。

事實(shí)上,通過加入 conjunctionfeatures,也就是加入 user 和 product 的交叉特征,可以將特定的 multi-task 任務(wù)簡化為單任務(wù)模型。

梳理工業(yè)界應(yīng)用的排序模型,大致經(jīng)歷三個(gè)階段,如下圖所示:

CGO參考:攜程個(gè)性化推薦算法實(shí)踐

本文并不準(zhǔn)備詳細(xì)介紹上圖中的算法細(xì)節(jié),感興趣的讀者可以查看相關(guān)論文,以下幾點(diǎn)是我們的一些實(shí)踐經(jīng)驗(yàn)和體會。

  • 在實(shí)踐中選用以LR為主的模型,通過對數(shù)據(jù)離散化、分布轉(zhuǎn)換等非線性處理后使用LR。一般的,采用L1正則保證模型權(quán)重的稀疏性。
  • 在優(yōu)化算法的選擇上,使用 OWL-QN 做 batch learning,F(xiàn)TRL 做 online learning。
  • 實(shí)踐中利用因子分解機(jī)(FactorizationMachine)得到的特征交叉系數(shù)來選擇喂入LR模型的交叉特征組合,從而避免了繁雜的特征選擇工作。一般的受限于模型復(fù)雜度只進(jìn)行二階展開。
  • 對于三階以上的特征組合可以利用基于 mutual information 等方法處理。已有針對高階因子分解機(jī)(HighOrder FM)的研究,參見文獻(xiàn)[24]。
  • 對于 Wide and Deep Learning,將 wide 部分替換 gbdt 組合特征,在實(shí)驗(yàn)中取得了較好的效果,并將在近期上線。
  • 后續(xù)的工作將針對如何進(jìn)行 wide 部分和 deep 部分的 alternatingtraining 展開。
  • Feature Engineering

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

顯式特征組合

對特征進(jìn)行離散化后然后進(jìn)行叉乘,采用笛卡爾積(cartesian product)、內(nèi)積(inner product)等方式。

在構(gòu)造交叉特征的過程中,需要進(jìn)行特征離散化;針對不同的特征類型,有不同的處理方式。

1. numerical feature

無監(jiān)督離散化:根據(jù)簡單統(tǒng)計(jì)量進(jìn)行等頻、等寬、分位點(diǎn)等劃分區(qū)間

有監(jiān)督離散化:1R方法,Entropy-BasedDiscretization (e.g. D2,MDLP)

2. ordinal feature(有序特征)

編碼表示值之間的順序關(guān)系。比如對于衛(wèi)生條件這一特征,分別有差,中,好三檔,那么可以分別編碼為(1,0,0),(1,1,0),(1,1,1)。

3. categorical feature (無序特征)

CGO參考:攜程個(gè)性化推薦算法實(shí)踐

離散化為啞變量,將一維信息嵌入模型的bias中,起到簡化邏輯回歸模型的作用,降低了模型過擬合的風(fēng)險(xiǎn)。

離散特征經(jīng)過OHE后,每個(gè)分類型變量的各個(gè)值在模型中都可以看作獨(dú)立變量,增強(qiáng)擬合能力。一般的,當(dāng)模型加正則化的情況下約束模型自由度,我們認(rèn)為OHE更好。

利用 feature hash 技術(shù)將高維稀疏特征映射到固定維度空間

半顯式特征組合

區(qū)別于顯式特征組合具有明確的組合解釋信息,半顯式特征組合通常的做法是基于樹方法形成特征劃分并給出相應(yīng)組合路徑。

一般做法是將樣本的連續(xù)值特征輸入 ensemble tree,分別在每顆決策樹沿著特定分支路徑最終落入某個(gè)葉子結(jié)點(diǎn)得到其編號,本質(zhì)上是這些特征在特定取值區(qū)間內(nèi)的組合。

ensemble tree 可以采用 Gbdt 或者 random forest 實(shí)現(xiàn)。每一輪迭代,產(chǎn)生一棵新樹,最終通過 one-hotencoding 轉(zhuǎn)化為 binary vector,如下圖所示。

CGO參考:攜程個(gè)性化推薦算法實(shí)踐

以下幾點(diǎn)是我們在實(shí)踐中的一些總結(jié)和思考。

在實(shí)驗(yàn)中發(fā)現(xiàn)如果將連續(xù)值特征進(jìn)行離散化后喂入 gbdt,gbdt 的效果不佳,AUC 比較低。

這是因?yàn)?gbdt 本身能很好的處理非線性特征,使用離散化后的特征反而沒什么效果。

xgboost 等樹模型無法有效處理高維稀疏特征比如 user id 類特征,可以采用的替代方式是:將這類 id 利用一種方式轉(zhuǎn)換為一個(gè)或多個(gè)新的連續(xù)型特征,然后用于模型訓(xùn)練。

需要注意的是當(dāng)采用葉子結(jié)點(diǎn)的 index 作為特征輸出需要考慮每棵樹的葉子結(jié)點(diǎn)并不完全同處于相同深度。

實(shí)踐中采用了 Monte Carlo Search 對 xgboost 的眾多參數(shù)進(jìn)行超參數(shù)選擇。

在離線訓(xùn)練階段采用基于 Spark 集群的 xgboost 分布式訓(xùn)練,而在線預(yù)測時(shí)則對模型文件直接進(jìn)行解析,能夠滿足線上實(shí)時(shí)響應(yīng)的需求。

此外,在實(shí)踐發(fā)現(xiàn)單純采用 xgboost 自動(dòng)學(xué)到的高階組合特征后續(xù)輸入LR模型并不能完全替代人工特征工程的作用;

可以將原始特征以及一些人工組合的高階交叉特征同 xgboost 學(xué)習(xí)到的特征組合一起放入后續(xù)的模型,獲得更好的效果。

四、總結(jié)

完整的推薦系統(tǒng)是一個(gè)龐大的系統(tǒng),涉及多個(gè)方面,除了召回、排序、列表生產(chǎn)等步驟外,還有數(shù)據(jù)準(zhǔn)備與處理,工程架構(gòu)與實(shí)現(xiàn),前端展現(xiàn)等等。

在實(shí)際中,通過把這些模塊集成在一起,構(gòu)成了一個(gè)集團(tuán)通用推薦系統(tǒng),對外提供推服務(wù),應(yīng)用在10多個(gè)欄位,60多個(gè)場景,取得了很好的效果。

本文側(cè)重介紹了召回與排序算法相關(guān)的目前已有的一些工作與實(shí)踐,下一步,計(jì)劃引入更多地深度模型來處理召回與排序問題,并結(jié)合在線學(xué)習(xí)、強(qiáng)化學(xué)習(xí)、遷移學(xué)習(xí)等方面的進(jìn)展,優(yōu)化推薦的整體質(zhì)量。

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

文:攜程技術(shù)中心

相關(guān)文章推薦:

《增長黑客》| 尋找生命中的AHA時(shí)刻
香水產(chǎn)品為例,首席增長官常用數(shù)據(jù)采集、分析、挖掘的過程及算法模型
首席增長官的北極星指標(biāo):新用戶激活

更多精彩,關(guān)注:增長黑客(GrowthHK.cn)

增長黑客(Growth Hacker)是依靠技術(shù)和數(shù)據(jù)來達(dá)成各種營銷目標(biāo)的新型團(tuán)隊(duì)角色。從單線思維者時(shí)常忽略的角度和高度,梳理整合產(chǎn)品發(fā)展的因素,實(shí)現(xiàn)低成本甚至零成本帶來的有效增長…

本文經(jīng)授權(quán)發(fā)布,不代表增長黑客立場,如若轉(zhuǎn)載,請注明出處:http://allfloridahomeinspectors.com/cgo/9914.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
上一篇 2018-04-24 16:31
下一篇 2018-04-24 19:44

增長黑客Growthhk.cn薦讀更多>>

發(fā)表回復(fù)

登錄后才能評論
特別提示:登陸使用搜索/分類/最新內(nèi)容推送等功能?>>