日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

攜程作為國內領先的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],因子分解機(FactorizationMachine),以及近期提出的wdl模型。同時,我們認為即使在深度學習大行其道的今下,精細化的特征工程仍然是不可或缺的。

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

一、數據
 

機器學習=數據+特征+模型

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

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

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

二、召回

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

  • Real-timeIntention

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

  • BusinessRules

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

  • Context-Based

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

了解攜程個性化推薦算法原理,讓旅行更實惠

 

  • LBS

基于用戶的當前位置信息,篩選出的周邊酒店,景點,美食等等,比較適用于行中場景的推薦。地理位置距離通過GeoHash算法計算,將區域遞歸劃分為規則矩形,并對每個矩形進行編碼,篩選GeoHash編碼相似的POI,然后進行實際距離計算。

  • CollaborativeFiltering

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

  • SequentialModel

現有的矩陣分解(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)。事實上,通過加入conjunctionfeatures,也就是加入user和product的交叉特征,可以將特定的multi-task任務簡化為單任務模型。

梳理工業界應用的排序模型,大致經歷三個階段,如下圖所示:

了解攜程個性化推薦算法原理,讓旅行更實惠

 

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

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

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

顯式特征組合

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

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

1、numerical feature

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

2、ordinal feature(有序特征)

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

3、categorical feature (無序特征)

離散化方法

具體做法

OHE(one hot encoding)

用h個變量代表h個level

Dummy Encoding

將一個有h個level的變量變成h-1個變量

Hash Trick

轉化為固定長度的hash variable

  • 離散化為啞變量,將一維信息嵌入模型的bias中,起到簡化邏輯回歸模型的作用,降低了模型過擬合的風險。
  • 離散特征經過OHE后,每個分類型變量的各個值在模型中都可以看作獨立變量,增強擬合能力。一般的,當模型加正則化的情況下約束模型自由度,我們認為OHE更好。
  • 利用feature hash技術將高維稀疏特征映射到固定維度空間

半顯式特征組合

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

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

了解攜程個性化推薦算法原理,讓旅行更實惠

 

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

  • 在實驗中發現如果將連續值特征進行離散化后喂入gbdt,gbdt的效果不佳,AUC比較低。這是因為gbdt本身能很好的處理非線性特征,使用離散化后的特征反而沒什么效果。xgboost等樹模型無法有效處理高維稀疏特征比如user id類特征,可以采用的替代方式是:將這類id利用一種方式轉換為一個或多個新的連續型特征,然后用于模型訓練。
  • 需要注意的是當采用葉子結點的index作為特征輸出需要考慮每棵樹的葉子結點并不完全同處于相同深度。
  • 實踐中采用了Monte Carlo Search對xgboost的眾多參數進行超參數選擇。
  • 在離線訓練階段采用基于Spark集群的xgboost分布式訓練,而在線預測時則對模型文件直接進行解析,能夠滿足線上實時響應的需求。

此外,在實踐發現單純采用Xgboost自動學到的高階組合特征后續輸入LR模型并不能完全替代人工特征工程的作用;可以將原始特征以及一些人工組合的高階交叉特征同xgboost學習到的特征組合一起放入后續的模型,獲得更好的效果。

四、總結

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

分享到:
標簽:算法 推薦
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定