本文要解决两个问题:
作者考虑到用户在预订酒店之前有大量的搜索、点击、联系商家等行为,可以利用这些信息来构建用户预订的房间与候选商品之间的相似关系;还可以根据这些信息捕捉用户的兴趣。本文中,作者对商品做了两个层面的embedding:一是每个商品;二是商品类型以及用户类型。
本文提出的方法基于skip-gram的word2vec,原理并不复杂。下面将详细介绍作者的改进之处。
首先对下面可能会出现的变量做一下说明:和表示商品的输入输出向量;表示上下文窗口大小,表示上下文;是所有商品的字典;表示正样本集合,表示负样本集合。
2.1 listing embedding
作者主要改进的地方在于数据集的处理上,有两点global text 和negative
samples:
global text
skip-gram model for listing embeddings
如上图所示,作者根据用户在30s内点击商品的序列当做一个句子,但是相对原模型,作者做了一点改动:如果在这个点击序列中包含用户最后预订的商品,那么这个商品的向量会当做global context。其实就是,在每次窗口滑动的时候,都会被当做上下文中之一;在我看来这里有点像doc2vec中doc向量的作用。具体可见公式:
当然,如果序列中没有预订的商品,那上式中没有最后一项。
negative samples
在原word2vec模型中,负样本通过对采样得到的;但是在租房平台中,这样很可能负样本集合都是与预订商品处于不同的地区,这样会导致在同一地区中商品的相似性会有偏差。
We found that this imbalance leads
to learning sub-optimal within-market similarities.
因此,作者额外从同一地区的商品中采样一些负样本,因此上式变为:
冷启动
新商品的初始化用同一地区,同一价格区间中3个商品的平均向量。
2.2 user_type & listing_type embeddings
2.1部分更侧重于同一地区商品之间的相似关系,但是不同地区之间也能反映用户的一些喜。比如,用户A在深圳和上海预订过酒店,现在需要在北京预订酒店(假设用户没在北京预订过),但是在深圳和上海预订过的酒店也可以反映用户的某些偏好了。因此,作者通过对商品类别和用户类别embedding,希望能描述跨区域的相似关系。
在该部分,作者只用了用户预订的序列,根据时间顺序把用户预订过的所有商品当做一个序列。既然对商品和用户的类别进行embedding,那么首先需要标记类别。作者根据商品的属性以不同的值或者范围来划分多个类别,具体可见论文的Table 3和Table 4;可以看到user_type其实也是基于商品属性划分的。另外,为了让商品类别和用户类别在同一个空间维度,作者放在同一个训练集中一起训练。如下图(暂时可忽略rejection,booking)
listing type abd yser type skip-gram model
然后公式变成:
当central item为用户时,
当central item为商品时,
这里有点不理解,我本来觉得将listing_type和user_type放在一起,那么应该是混着使用,相互作为对方的上下文,但是看目标函数不是这样的。如果按目标函数,listing_type和user_type还能训练成同一个空间吗?
3.1 数据集
训练listing embedding的数据集
3.2 离线评估
地理信息
通过对房屋向量进行聚类,确认来自同一地区的房源被聚在同一个簇中。
listing_type和房价范围
相同类型的listing以及相同房价范围的listing的cosine相似度更高
房屋风格和建筑
越相似的listing有着更相似的房屋或者建筑风格
rank position of booked listing
通过计算clicked listing和candidate listings之间的cosine相似度对candidate listings进行排序,然后看booked listing的位置。booked listing的位置越往前,说明效果越好。
这里有点不明白,candidate listings包含用户最终预订的listing, 原文中"the most recent clicked listing"指的是最近的那一个listing吗?这个有时间范围吗?比如在预订前几天的点击列表?
4.1 疑问
4.2 启发
其实在此之前我也想过用word2vec来生成房源向量,但是没有想过global text,以及listing_type embedding。
另外,相比Airbnb的短租市场,贝壳找房的场景不同之处有:
一点点题外话:感觉word2vec真的很好用,之前用word2vec根据用户的点击网页序列做过网页的相似度,效果也很不错。而且,在graph方面,也有node2vec、link2vec,这些都是应用word2vec模型。
1.Real-time Personalization using Embeddings for Search Ranking at Airbnb
2.不一样的论文解读
作者:张虾米试错
链接:https://www.jianshu.com/p/89d4e2a65621
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。