airbnb 房源預定 embedding 論文學習

《Real-time Personalization using Embeddings for Search Ranking at Airbnb》
其核心在SKIP-GRAM上根據(jù)業(yè)務做了一個改進點為:當序列中存在下單動作的時候喝噪,認為序列中的任意一個商品都與該下單動作的商品應該存在一定的關系酝惧,因此在SKIP_GRAM算法中僅需要將在有下單序列中每個窗口中多加入一個商品即下單的商品即可伯诬。

1:基礎符號解釋說明

https://zhuanlan.zhihu.com/p/55259412
假定從N 個用戶獲得了一個點擊的session集合S姑廉,其中每個session s=(l_1, l_2,...l_M)\in S為用戶點擊的一個LIST桥言,其中session的切割方式為:當以個點擊時間距離下一個點擊時間大于30分鐘后葵礼,該session被切割鸳粉。目標是對于每一個listing l_i學習一個d維的向量v_{l_i}\in R^d使得相似的listing在embedding空間中更接近。

2:模型設計

l的正樣本對為(l, c)枯夜,記其集合為D_p湖雹。即窗口為m大小的曙搬,同一個用戶點擊序列中的上下文為其正樣本對纵装。隨機選取n個負樣本對$$,記其集合為D_n诗箍,則目標函數(shù)變?yōu)椋▽嶋H上就是交叉熵損失函數(shù)扳还,與SKIP-GRAM的損失函數(shù)一致):

arg\max_{\theta}\sum_{(l,c)\in{D_p}}\log\frac{1}{1+e^{-v_c^`v_l}} + \sum_{(l,c)\in D_n}\log \frac{1}{1+e^{v_c^`v_l}}

通過隨機梯度下降進行求解氨距。

3:切割SESSION的機制

將SESSION切分為兩個部分
1)預定序列 booked session棘劣。即序列的終止動作為下單。此時優(yōu)化目標要變?yōu)椋?/p>

arg\max_{\theta}\sum_{(l,c)\in{D_p}}\log\frac{1}{1+e^{-v_c^`v_l}} + \sum_{(l,c)\in D_n}\log \frac{1}{1+e^{v_c^`v_l}} +\log\frac{1}{1+e^{-v^`_{l_b}v_l}}
可以這樣理解最后加的一項寡喝,相當于勒奇,無論下單動作的商品在不在窗口內赊颠,都把它當做中心商品l 的一個上下文。
2)探索序列 exploratory session 顶猜。即序列中切分為時間間隔大于30分鐘了痘括,被切割的SESSION中沒有下單的動作纲菌,全是瀏覽點擊的動作。
3)肆资?灶芝?夜涕?不太理解這塊的含義:

關于負采樣部分

通俗地理解是不是可以這樣想女器,如果全局選取負樣本住诸,會導致同一個market 的房源的 embedding 接近驾胆,非同一 market 就會遠,內部區(qū)分不是很明顯贱呐,但是若負采樣在 l 的market 里進行選取的話丧诺,是否可以將內部房源區(qū)分得更開?此處相當于作者關于隨機負采樣根據(jù)業(yè)務需求做了一些優(yōu)化奄薇。

4:冷啟動的問題

提出了一種利用其它的已經(jīng)存在的embedding 向量去表示未知的embedding 向量 驳阎。采取的策略是找10 miles為半徑的范圍內,與已知embedding 房源屬性最近的3個房源,然后求平均得到未知EMBEDDING房源的辦法呵晚。

5:uer_type 和 listing_type

假定我們給定了一個由N 個用戶預訂的商品序列集合S_b蜘腌,其中每個預訂的session 為 s_b=(l_{b1}, l_{b2},l_{b3},...,l_{bm }),通過預訂商品序列生成embedding 向量存在如下的幾個問題:
1)預訂的商品序列會比點擊序列的長度短很多
2)很多用戶可能就預訂一單撮珠,也就是序列的長度為1,無法學到
3)為了學到有意義的 emebdding 向量金矛,一般要求商品出現(xiàn)的次數(shù)要大于5-10次芯急,但是很多商品實際上出現(xiàn)的次數(shù)是少于5-10次的,比如那些比較少見的商品绷柒。
4)用戶預訂的兩個商品若時間間隔過久志于,這兩個時間段用戶可能因為職業(yè)改變等導致價格偏好發(fā)生改變。
為了解決上述問題废睦,作者提出了伺绽,我們傾向于學習 listing_type 而不是listing_id。具體是如何做呢嗜湃?
首先給定listing_id必要的元數(shù)據(jù)信息奈应,比如像JD商品id對應的屬性三級品類、品牌等购披。文章給出的是位置杖挣、價格、大小刚陡、床的數(shù)量等惩妇。給出了一個映射規(guī)則,對應的論文的 table3 筐乳。文章中給了一個例子歌殃, 一個房間的信息為:

1)國家為US,對應第一行第一個蝙云,映射表中取值為US
2)Listing_type是Ent氓皱,對應第二行第一個,映射表中取值為lt1表示 list type縮寫lt 且為第1列
3)每晚價格60.8$勃刨,對應第三行第3個在56-69區(qū)間內波材,映射表中取值為pn3,pn是per night 的縮寫身隐,3表示第3列
4)平均每個顧客29.3$廷区,對應第四行第3個,映射表中取值為pg3贾铝,pg 表示per gust縮寫躲因,3表示第3列

依次查表早敬,最終可以表示為listing_type = US_lt1_pn3_pд3_r3_5s4_c2_b1_bd2_bt2_nu3,顯然這是一種多對一的映射關系大脉。問題搞监,映射關系很重要,實際上此處的映射關系已經(jīng)決定了镰矿,哪些房源滿足什么基礎條件的時候琐驴,就一定相似,比如映射成同一個listing_type的lsiting_id 的emebdding 表示肯定是一致的秤标。此處價格區(qū)間的劃分等映射表的構建也是至關重要的绝淡。以同樣的方式構建用戶的映射關系,映射表見論文的table4苍姜。
現(xiàn)在的問題是如何讓listing_type 和user_type 的emebdding 的向量是在一個向量空間中牢酵?
首先構造book session ,只不過和之前的相比衙猪,在 session 中不僅有商品還有用戶 馍乙,即 s_b=(u_{type_1}l_{type_1}, u_{type_2}l_{type_2},..., u_{type_M}l_{type_M})\in S_b

6:在 word2vec的基礎上修改源碼,實現(xiàn)論文 垫释,初步構思方向

1)將原始sentence 后加上一個判斷是否是下單的符號丝格,比如-1表示該sentence 有booked 的商品,LOSS加上 含booked 一項棵譬。若尾部的ID不等于-1就表示該sentence 沒有booked 的商品显蝌,在更新的過程LOOS沿用之前的。但是這樣處理后订咸,就會發(fā)現(xiàn)-1會被當做詞在構建huffman樹的時候當做詞被構建進樹中曼尊,且由于每個帶booked的sentence中幾乎都有-1,就會導致其詞頻很高脏嚷,在構建樹的過程中很大概率會離根節(jié)點很近涩禀,導致使用層次softmax的時候,幾乎很多詞的路徑中都包含了該節(jié)點然眼,顯然是不合理的。
2)介于第一步引入贅余詞后的不合理點葵腹,需要在統(tǒng)計詞頻和構建詞典的過程中將這兩個詞filter掉高每。
3)基于論文的思想,當引入booked 的商品后践宴,在更新每個中心詞的輸入向量的過程中鲸匿,需要將booked 的商品也當做窗口詞進行更新其參數(shù)向量。因此首先要判斷尾部的商品ID是否等于-1阻肩,若是則sentence-1带欢,不更新尾部的詞运授。且每次更新的過程中先記錄尾部詞,在窗口詞更新完后乔煞,將尾部詞都更新一遍吁朦。有個問題(booked 的詞是否要作為中心詞更新一遍?渡贾?逗宜??此處個人理解是不需要更新)
基于上述分析空骚,最終修改的代碼見:https://github.com/Hongqiong12/Embedding/tree/main/aribnb
建議:
當sentence的長度為2的時候纺讲,尾部是下單詞,不要在尾部加-1囤屹。尾部詞也作為中心詞進行訓練熬甚。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肋坚,隨后出現(xiàn)的幾起案子乡括,更是在濱河造成了極大的恐慌,老刑警劉巖冲簿,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粟判,死亡現(xiàn)場離奇詭異,居然都是意外死亡峦剔,警方通過查閱死者的電腦和手機档礁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吝沫,“玉大人呻澜,你說我怎么就攤上這事〔蚁眨” “怎么了羹幸?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辫愉。 經(jīng)常有香客問我栅受,道長,這世上最難降的妖魔是什么恭朗? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任屏镊,我火速辦了婚禮,結果婚禮上痰腮,老公的妹妹穿的比我還像新娘而芥。我一直安慰自己,他們只是感情好膀值,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布棍丐。 她就那樣靜靜地躺著误辑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歌逢。 梳的紋絲不亂的頭發(fā)上巾钉,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音趋翻,去河邊找鬼睛琳。 笑死,一個胖子當著我的面吹牛踏烙,可吹牛的內容都是我干的师骗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼讨惩,長吁一口氣:“原來是場噩夢啊……” “哼辟癌!你這毒婦竟也來了?” 一聲冷哼從身側響起荐捻,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤黍少,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后处面,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厂置,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年魂角,在試婚紗的時候發(fā)現(xiàn)自己被綠了昵济。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡野揪,死狀恐怖访忿,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情斯稳,我是刑警寧澤海铆,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站挣惰,受9級特大地震影響卧斟,放射性物質發(fā)生泄漏。R本人自食惡果不足惜憎茂,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一珍语、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唇辨,春花似錦、人聲如沸能耻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饿幅,卻和暖如春凡辱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栗恩。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工透乾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人磕秤。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓乳乌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親市咆。 傳聞我的和親對象是個殘疾皇子汉操,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內容