美團推薦算法實踐

互聯網的深入發展產生了嚴重的信息過載,如果不採取一定手段,用戶很難從如此多的信息流中找到對自己有價值的信息。解決信息過載:1.搜索,用戶有明確的信息需求意圖,將意圖轉換成幾個簡短的詞或詞語的組合(query)-提交給搜索引擎-海量信息庫檢索出與query相關的信息返回;2.推薦,用戶意圖不明確或很難用清晰的語義表達,甚至用戶自己都不清楚需求,需理解用戶意圖推送個性化結果

一、美團推薦系統框架

從框架角度,推薦系統可分爲數據層、觸發層、融合過濾層和排序層。數據層包括數據生產和數據存儲(利用各種數據處理工具對原始日誌進行清洗,處理成格式化的數據,落地到不同類型的存儲系統中,供下游算法和模型調用);候選集觸發層主要從用戶歷史行爲、實時查詢行爲、地理位置等角度利用各種觸發策略產生推薦候選集;候選集融合過濾層,對觸發層的不同候選集進行融合,提高推薦策略的覆蓋度與精度,同時從產品、運營的角度確定一些人工規則,過濾掉不符合條件的item;排序層主要利用機器學習模型對融合過濾層篩選出的候選集進行重排序

候選集觸發和重排序需要頻繁修改,需要支持ABtest,爲支持高效率迭代,美團對這兩層進行解耦(結果是正交的),因此可分別進行對比試驗,不會相互影響。同時在每一層的內部,美團會根據用戶將流量分成多份,支持多個策略同時在線對比

二、美團用戶行爲數據

行爲類別

行爲詳情

主動行爲數據

搜索、篩選、點擊、收藏、下單、支付、評分

UGC

文字評價、上傳圖片

負反饋數據

左滑刪除、取消收藏、取消訂單、退款、負評、低評

用戶畫像

用戶人口屬性、美團DNA、品類偏好、消費水平、工作地與居住地

 

1.主動行爲數據記錄用戶在美團平臺上不同環節的各種行爲,這些行爲一方面用於候選集觸發算法中的離線計算(主要是瀏覽、下單),另外這些行爲代表的意圖強弱不同,因此在訓練重排序模型時可針對不同行爲設定不同迴歸目標值,以更細刻畫用戶行爲強弱程度。此外用戶對deal的這些行爲還可以作爲重排序模型的交叉特徵,用於模型的離線訓練和在線預測

2.負反饋數據反映當前結果可能在某些方面不能滿足用戶需求,因此在後續候選集觸發過程中需要考慮對特定因素進行過濾或者降權,降低負面因素再次出現機率,提高用戶體驗;同時在重排序的模型訓練中,負反饋數據可作爲不可多得的負例參與模型訓練,這些負例要比那些展示後未點擊、未下單的樣本顯著的多

3.用戶畫像是刻畫用戶屬性的基礎數據,其中有些是直接獲取的原始數據,有些是經過挖掘的二次加工數據,這些屬性可用於候選集觸發過程中對deal進行加權或降權,另外一方面可作爲重排序模型中的用戶維度特徵

4.通過對UGC數據的挖掘可以提取出一些關鍵詞,然後使用這些關鍵詞給deal打標籤,用於deal的個性化展示

三、候選集觸發過程中的算法

1.協同過濾,需要根據具體業務做一些差異化處理,清除作弊、刷單、代購等噪聲數據,合理選取訓練數據(時間窗口不宜過長或過短,需經過多次試驗確定,同時考慮引入時間衰減),user-based與item-based相結合

2.location-based,移動設備位置是經常發生變化的,不同的地理位置反映不同用戶場景,可根據用戶實時地理位置、工作地、居住地等地理位置觸發相應策略

根據用戶的歷史消費、歷史瀏覽等,挖掘出某一粒度(如商圈)內的區域消費熱單和區域購買熱單。當新的線上用戶請求到達時,根據用戶的幾個地理位置對相應地理位置的區域消費熱單、區域購買熱單進行加權,得到推薦列表,同時也可根據用戶出現的地理位置,計算用戶相似度

3.query-based,即便是搜索無轉換也代表一定的用戶意願,計算每一個用戶對不同query的權重,計算每個query下不同deal權重,當用戶再次請求時,根據用戶對不同query的權重及query下不同deal權重進行加權,取出權重最大的topN推薦

4.實時用戶行爲,當用戶產生下單行爲上游的某些行爲時,會有相當一部分因爲各種原因使行爲流沒有形成轉化。但是這些上游行爲是非常重要的先驗知識,用戶當時沒有轉化並不代表對當前item不感興趣。當用戶再次到達推薦展位時,可根據用戶之前產生的先驗行爲理解並識別用戶真正意圖,將符合用戶意圖的相關deal再次展現,引導用戶沿着行爲流向下游行進,最終達到下單這個終極目標。目前引入的實時用戶行爲包括:實時瀏覽、實時收藏

5.替補策略,雖然有一系列基於用戶歷史行爲的候選集觸發算法,但對於部分新用戶或者歷史行爲不太豐富的用戶,上述算法觸發的候選集太小,因此需要使用一些替補策略進行填充。熱銷單:在一定時間內銷量最多的item,可考慮時間衰減的影響等;好評單:用戶產生評價中,評分較高的item;城市單:滿足基本的限定條件,在用戶的請求城市內的

6.子策略融合,爲結合不同觸發算法的優點,同時提高候選集的多樣性和覆蓋率,需要將不同的觸發算法融合在一起。常見的融合方法有以下幾種:

加權型:最簡單的融合方法就是根據經驗值對不同算法賦給不同的權重,對各個算法產生的候選集按給定權重進行加權,然後再按照權重排序

分級型:優先採用效果好的算法,當產生的候選集大小不足以滿足目標值時,再使用效果次好的算法,依此類推

調製型:不同算法按照不同比例產生一定量的候選集,然後疊加產生最終總的候選集

過濾型:當前算法對前一級算法產生的候選集進行過濾,依此類推,候選集被逐級過濾,最終產生一個小而精的候選集合

目前美團使用調製和分級兩種融合方法,不同算法根據歷史效果表現給定不同候選集構成比例,同時優先採用效果好的算法觸發,如果候選集不夠大,再採用效果次之的算法觸發,依此類推

四、候選集重排序

對不同算法觸發得到的候選集,只是根據算法的歷史效果決定觸發item的位置有些簡單(只能用於第一步的初選過程),最終的排序結果需藉助機器學習方法(排序模型),綜合多方面因素決定

1.非線性模型:

主要採用非線性樹模型additive groves(AG),是個加性模型由很多Grove組成,不同的Grove之間進行bagging得到最後預測結果(減少過擬合影響)

每個Grove內部由多棵樹組成,訓練時每棵樹的擬合目標爲真實值與其他樹預測結果之和間的殘差,當達到給定數目的樹時,重新訓練的樹會替代以前的樹,經過多次迭代後達到收斂

2.線性模型:

LR,online learning接入實時數據流,使用Google提出的FTRL方法對模型進行在線更新

主要步驟:1.在線寫特徵向量到hbase;2.storm解析實時點擊日誌、實時下單日誌,改寫Hbase中對應特徵向量的標籤;3.通過FTRL更新模型權重;4.將新的模型參數應用於線上

五、數據

負例:正例是用戶產生點擊、下單等轉換行爲的樣本,但沒有轉換行爲的樣本不一定是負例,因爲很多展現用戶根本沒看到,常用的方法是skip-above(用戶點擊的item以上的展現纔可能視爲負例),上面負例都是隱式的負反饋數據,用戶主動刪除的item爲顯式負反饋數據

特徵:1.deal-團購單維度特徵:deal本身的屬性,包括價格、折扣、銷量、評分、類別、點擊率等;2.user維度特徵:包括用戶等級、人口屬性、客戶端類型等;3.user、deal交叉特徵:用戶對deal的點擊、收藏、購買等;4.距離特徵:用戶的實時地理位置、常去地理位置、工作地、居住地等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章