Real-time Personalization using Embeddings for Search Ranking at Airbnb简介

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来来进行学习。但是会有如下的问题:

  1. booking session的数据远小于click session的数据
  2. 很多用户过去只订过一个listing,因此我们无法从长度为1的session中学习
  3. 要训练出有意义的embedding,那么实体一般需要出现5-10次,但是对于airbnb来说,很多listing出现次数少于5-10次
  4. 用户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特征在搜索排序模型中

在这里插入图片描述

特征重要性:

在这里插入图片描述

效果提升:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值