Real-time Personalization using Embeddings for Search Ranking at Airbnb
Abstract
作者主要開發了listing and user embedding技術,能捕捉客人短期與長期的興趣,并給出有效房屋推薦清單。
Introduction
Novel contribution:
-
real-time personalization:
使用使用者最近互動的item的embedding來線上計算與需要排序的items的相似性。
-
Adapting Training for Congregated Search:
embedding的時候用負采樣
-
Leveraging Conversions as Global Context:
将booked listing作為全局上下文
-
User type embeddings
使用使用者類型的embedding而不是對每個使用者都建立embedding,因為沒有足夠的資料以及對記憶體的要求過大
-
Rejections as Explicit Negatives
将主人的拒絕視為負例
Methodology
Listing embeddings
因為采用負采樣的skip-gram模型,是以最初的目标函數與word2vec的目标函數一樣:
Booked Listing as Global Context.
将click session分為booked session和exploratory session,booked session是最終産生了book行為的,exploratory session是沒有産生的。
對于booked session來說,将booked listing作為global context,也就是無論它是否在上下文的視窗裡,總是目标函數的一部分。
Adapting Training for Congregated Search
為了解決負例樣本來自的market place總是與正例的market place不一緻的問題,aribnb又加入了一組negative samples。該批樣本就是在central listing同一市場的listing集合中進行随機抽樣得到的。
Cold start listing embeddings
如果有new listing缺失embedding vector,就找附近的3個同樣類型、相似價格的listing embedding進行平均得到。
Examining Listing Embeddings
通過使用聚類以及分析相同類型與價格範圍的餘弦相似度,可以得出使用embedding方法很好的編碼了listing的特征
為了更友善的探索embedding的效果,airbnb還開發了Similarity Exploration Tool。
User-type& Listing-type Embeddings
為了捕捉長期的偏好,airbnb這裡采用了booked session來來進行學習。但是會有如下的問題:
- booking session的資料遠小于click session的資料
- 很多使用者過去隻訂過一個listing,是以我們無法從長度為1的session中學習
- 要訓練出有意義的embedding,那麼實體一般需要出現5-10次,但是對于airbnb來說,很多listing出現次數少于5-10次
- 使用者booking間隔的時間過長可能會因為事業的變化而對相關的因素如價格而改變,這也可能造成使用者的偏好不是那麼準确。
為了解決上述的問題,airbnb采用了listing_type和user_type來取代listing_id和user_id。
For example, an Entire Home listing from US that has a 2 person capacity, 1 bed, 1 bedroom & 1 bathroom, with Average Price Per Night of $60.8, Average Price Per Night Per Guest of $29.3, 5 reviews, all 5 stars, and 100% New Guest Accept Rate would map into listing_type = US_lt1_pn3 _pg3 _r3_5s4_c2 _b1_bd 2_bt 2_nu 3 .
如上述原文所說,就可以将很多不同的listing id映射到相同listing type了。
user type同理,也能通過上述的映射得到。
針對同一user_id的session,将session定義為
一個session中的 u t y p e u_{type} utype是同一個user_id的,隻不過 u t y p e u_{type} utype可能會随着時間的變化而改變。
針對中心item是user type還是listing type,目标函數略有不同:
Explicit Negatives for Rejections
将房主的拒絕當作一個明确的負類,在目标函數後再加上這樣一個信号。
Experiments
用到的embedding特征在搜尋排序模型中
特征重要性:
效果提升: