【Real-time Personalization using Embeddings for Search Ranking at Airbnb】
今天晚上在外面喝酒喝到了十一点回家,所以今天的论文就挑一篇简单的写(太难了,日更博主就算离第二天还有半小时而且还喝多了酒还是要继续的更新呢!)
这个讲的也是推荐系统那一块的知识领域,是Airbnb的团队的作品,总体上和之前的那个阿里的那篇没有什么太大的区别吧。不过这里有一个Global的Information倒是可以在实践之中进行学习和应用的。今天就废话不说,直接进入主题
Model
假设我们现在有Set of clisk Sessions,也就是用户的行为集合,记作是$S$,其中有$N$个用户的行为,每一个Session$s = (l_{1},l_{2},\cdots,l_{M}) \in S$,每当半个小时过去之后就对于用户的操作进行Reset,之后的操作视作一个新的Session,通过Session的数据我们可以对于房屋的信息进行Embedding’,从而获得House的Representation。
如果用一个更加Formally 的语言,我们的模型就是看成是一个Skip Gram,对于目标函数进行Maximum从而得到最优的Embedding
$$L = \sum_{s \in S}\sum_{l_{i} \in s}(\sum_{-m\geq j\leq m} \log P(l_{i+j}|l_{i}))$$
其中的$P(l_{i+j}|l_{i})$就是一个Softmax函数,这个我都写累了,就不赘述了。
我们直接来看这里的Innovation Point是什么吧。这里有一个Booked Listing as Global Context的方法,也就是说对于Booked的房子,他们的Embedding在后面的优化过程之中作为一个Global的Information嵌入模型之中。
第二个Innovation Point就是在这里充分的考虑了数据的特征,由于在这里用户更倾向于是去对于在同样的地区之中的房源进行考虑,而如果在这里考虑了其他的房源的相似度,那么对于整个的计算Efficiency也并不会有什么提高,所以在这里,我们增加了一个本地房源的负采样的项。
那么整个公式的样子就如上式所示。
当然对于推荐系统来说,往往会存在一个Cold Start的问题,在Airbnb的解决的方法是非常的直接的一个方式,由于在Airbnb之中不仅仅是存在着用户点击的数据,还有其他的Fundamental的数据,比如Location或者是Price或者是其他的类似于Size的信息,所以Airbnb使用的方法就是在其最近的10英里之内的寻找与其价格在同一区间内的统一类型的房源,然后选取三个选取他们的Embedding的平均值作为新的房源的Embedding。
User-Type & Listing Type Embedding
在上面的方法之中,由于是在Session作为一个单位,所以更加适合短期操作,但是从用户的搜索历史之中我们可以大致的判断一个用户的品味和偏好,那么也就是说,排除掉地区因素,用户的品味是有一定的共性的。而这些共性就可以通过分成不同的User-Type然后对于每一种User-Type都进行个性化的推荐。
我们的数据记作是$s_{b} = (l_{b_{1}} , \cdots , l_{b_{M}})$,其中的每一个Entry都是用户曾经Booked的了的房源,如果直接是对于上面的数据进行操作的话,所面临的问题很直接,就是Book了的房源远远小于Click的Session,还有一些诸如用户的历史Book的量非常少,仅仅是用一次就丢了。而对于用户而言,两次Booking之间的时间的间隔非常的长,这段期间之中,用户的长期的兴趣已经改变了。所以解决方案就是,不是用ID而是用Feature来对于数据进行表示
文中使用类似于这样的方法将用户和房源都分成不同的Type。而通过这种方式,也可以很好的解决ColdStart的问题,因为对于用户而言,他们的地区,语言,设备等信息就算在第一次Book的时候也可以得到,而不需要History的信息,所以可以更好的Cold Start。
而按照时间,我们可以构造一个由二元组所构成的序列,表示User预定了某种房源(User-type,Listing-type).通过这样的组合的方式是为了将User-type和Listing-type都映射到同一个特征空间之中。
而依旧是通过负采样的Skip Gram算法Embedding
而$v_{c}$表示的意义是当前的输入的Embedding向量。
而除了Book成功之外还有一种可能是Book失败,而Book失败的原因可能是房东不想你作为他的房客(这种情况我个人感觉在使用的过程之中,不可能发生,可能只是为了Model的Fancy),每当这种情况发生的话,我们就将其作为一个优化的参数也丢进模型之中,从而得到了下面的公式
Comments
这篇文章让自己看见了在现实的应用之中对于NLP相关的技术的泛化的使用吧,通过使用Skip-Gram算法的主体思想,然后再对于Skip-Gram进行简单的更加符合业务的改造就可以达到了非常有效的效果了。不过这种业务上面的改变可能也需要对于业务有更加深入的理解和想法才可以做出合理的改变吧。产学结合产学结合,的确不仅仅是学术上的照搬吧。
Reference
Real-time Personalization using Embeddings for Search Ranking at Airbnb
Comments
Leave a Comment