airbnb 房源预定 embedding 论文学习

《Real-time Personalization using Embeddings for Search Ranking at Airbnb》
其核心在SKIP-GRAM上根据业务做了一个改进点为:当序列中存在下单动作的时候,认为序列中的任意一个商品都与该下单动作的商品应该存在一定的关系,因此在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,则目标函数变为(实际上就是交叉熵损失函数,与SKIP-GRAM的损失函数一致):

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。即序列的终止动作为下单。此时优化目标要变为:

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 就会远,内部区分不是很明显,但是若负采样在 l 的market 里进行选取的话,是否可以将内部房源区分得更开?此处相当于作者关于随机负采样根据业务需求做了一些优化。

4:冷启动的问题

提出了一种利用其它的已经存在的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 向量,一般要求商品出现的次数要大于5-10次,但是很多商品实际上出现的次数是少于5-10次的,比如那些比较少见的商品。
4)用户预订的两个商品若时间间隔过久,这两个时间段用户可能因为职业改变等导致价格偏好发生改变。
为了解决上述问题,作者提出了,我们倾向于学习 listing_type 而不是listing_id。具体是如何做呢?
首先给定listing_id必要的元数据信息,比如像JD商品id对应的属性三级品类、品牌等。文章给出的是位置、价格、大小、床的数量等。给出了一个映射规则,对应的论文的 table3 。文章中给了一个例子, 一个房间的信息为:

1)国家为US,对应第一行第一个,映射表中取值为US
2)Listing_type是Ent,对应第二行第一个,映射表中取值为lt1表示 list type缩写lt 且为第1列
3)每晚价格60.8$,对应第三行第3个在56-69区间内,映射表中取值为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,显然这是一种多对一的映射关系。问题,映射关系很重要,实际上此处的映射关系已经决定了,哪些房源满足什么基础条件的时候,就一定相似,比如映射成同一个listing_type的lsiting_id 的emebdding 表示肯定是一致的。此处价格区间的划分等映射表的构建也是至关重要的。以同样的方式构建用户的映射关系,映射表见论文的table4。
现在的问题是如何让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的基础上修改源码,实现论文 ,初步构思方向

1)将原始sentence 后加上一个判断是否是下单的符号,比如-1表示该sentence 有booked 的商品,LOSS加上 含booked 一项。若尾部的ID不等于-1就表示该sentence 没有booked 的商品,在更新的过程LOOS沿用之前的。但是这样处理后,就会发现-1会被当做词在构建huffman树的时候当做词被构建进树中,且由于每个带booked的sentence中几乎都有-1,就会导致其词频很高,在构建树的过程中很大概率会离根节点很近,导致使用层次softmax的时候,几乎很多词的路径中都包含了该节点,显然是不合理的。
2)介于第一步引入赘余词后的不合理点,需要在统计词频和构建词典的过程中将这两个词filter掉。
3)基于论文的思想,当引入booked 的商品后,在更新每个中心词的输入向量的过程中,需要将booked 的商品也当做窗口词进行更新其参数向量。因此首先要判断尾部的商品ID是否等于-1,若是则sentence-1,不更新尾部的词。且每次更新的过程中先记录尾部词,在窗口词更新完后,将尾部词都更新一遍。有个问题(booked 的词是否要作为中心词更新一遍????此处个人理解是不需要更新)
基于上述分析,最终修改的代码见:https://github.com/Hongqiong12/Embedding/tree/main/aribnb
建议:
当sentence的长度为2的时候,尾部是下单词,不要在尾部加-1。尾部词也作为中心词进行训练。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容