一、Aribnb个性化推荐

1、Real-time Personalization using Embeddings for Search Ranking at Airbnb

2、网址:https://www.kdd.org/kdd2018/accepted-papers/view/real-time-personalization-using-embeddings-for-search-ranking-at-airbnb

二、主要使用场景特征

特征:

1、大部分的用户很少会多次预定同一类型的房间

2、房间分时段的,只能在某段时间内被某一个用户预订

3、低频事件(对于大部分预定用户),同一个地方预订酒店更是低频

场景:

1、双边的房屋短租平台(顾客,房东)

2、顾客通过搜索或者系统推荐找到房源 => 贡献了Airbnb 99%的booking

3、一个顾客很少会预定同一个房源多次

4、一个房源在某时间段内只能被一个顾客租用

5、数据存在严重的稀疏性

6、针对搜索排序,相似房源推荐进行的实时个性化 基于业务需求,考虑搜索的目标

7、点击率(CTR),新闻的观看时长(YouTube),提高商品购买的转化率等等

8、与其他商品不同,不是用户想定就能定上房源

9、对于双边市场,需要同时为市场两端用户买家(guest)和卖家(host)提供服务

10、双边的推荐,既需要考虑用户预订,也需要考虑房东是否接受预订(Host Actions:Reject, Accept, No Response)

三、List Embedding (房源嵌入)

1、将每一个房源 嵌入到 新的向量空间,embedding

2、数据集描述:

a、数据集由 N 个用户的点击会话 (Session) 组成,其中每个会话定义为一个由用户点击的 M个房源 id 组成的的不间断序列

b、只要用户连续两次点击时间间隔超过30分钟,就认为是一个新的Session

c、目标是通过集合S,学习出每个房源listing的d维( 32 维)embedding表示,让相似listing在embedding空间中距离更近

d、借鉴了word2vec中的skip-gram算法

e、房源embedding,把每个用户连续点击过的房源Session看做一个句子,每个房源当做word,训练出房源的embedding

f、Skip-Gram:对于语料库中的句子,设置一个窗口在每一个句子上滑动,用窗口中央的word,去预测滑动窗口内其他的word,通过这种方式,训练出所有word的embedding

四、Word2Vec 算法

1、通过Embedding,把原先词所在空间映射到一个新的空间中去,使得语义上相似的单词在该空间内距离相近。

2、Word Embedding => 学习隐藏层的权重矩阵

3、输入层是one-hot编码,输出层是概率值

4、输入层和输出层大小与词库大小相等

5、隐藏层的神经元数量为hidden_size(Embedding Size)

6、对于输入层和隐藏层之间的权值矩阵W,大小为[vocab_size, hidden_size]

7、输出层为[vocab_size]大小的向量,每一个值代表着输出一个词的概率

比如:

1、假设有多个训练样本(juice,apple) (juice,pear) (juice,banana)

2、中心词是juice,规定窗口内有apple、pear、banana,共同的输入juice,对应不同word输出。用这些样本训练后,得到的概率结果,apple、pear、banana的概率值会比较高 => 它们在对应隐藏层中的参数是相似的

3、计算apple, pear, banana对应的隐藏层向量之间余弦相似度,会比较高

4、word2vec可以让单词之间具有相似性和类比关系

5、我们想要的结果并不是模型本身,而是隐藏层的参数,即让输入向量转换为新的embedding

对输入输入的one-hot编码处理:

1、在矩阵相乘的时候,选取出矩阵中的某一行,而这一行就是输入词语的word2vec表示

2、隐含层的节点个数 = 词向量的维数

3、隐层的输出是每个输入单词的Word Embedding

4、word2vec,实际上就是一个查找表

Word2Vec的两种模式:

1、Skip-Gram,跳字模型,给定input word预测上下文

2、CBOW,连续词袋模型,给定上下文,预测input word(与Skip-Gram相反)

原始Skip-Gram的目标函数:

1、因为每个词都决定了相邻词 ,基于极大似然,期望所有样本的条件概率之积最大,使用log probability

用softmax函数求解多分类问题,用      表示单词

2、对目标函数求最大化,可以让相似的词具有相似的向量值

List Embedding的目标函数构造:

1、使用skip-gram构造基础的目标函数

2、采用negative sampling构造采样之后的目标函数

表示位于当前作用center的这个listing的embedding向量

表示center后面的这个输入listing的embedding向量

表示当前的输入向量

表示当前的输入向量属于正样本

表示当前的输入向量属于负样本

3、正常的Skip-Gram,学习每个词的时候,根据设置的大小,只会选择每个词前后n个word作为正样本,所以随着窗口的滑动,窗口内的word是一直在变的

4、Airbnb把session中被预定的listing作为一个全局的上下文始终出现在每次的滑动窗口中,被预定的listing id一直存在session的滑动窗口内。

5、根据预定行为构造有导向于“booking”的目标函数

表示booking listing的embedding向量

因为booking listing是正样本 =>目标函数中的指数是“负”

因为booking listing是作为上下文的全局参数(global),所以目标函数中没有使用条件求和∑,也就是在session里面,都要考虑到这个booking listing作为正例

6、适配聚集搜索,Adapting Training for Congregated Search

7、根据房源地区进一步优化得到最终的目标函数

8、用户旅行目的确定后,房源都应该是同一个区域的,传统的负采样会随机从全样本中随机抽取

9、Airbnb加入了另一组negative sample,就是在 central listing 同一区域的 listing 集合中进行随机抽样

第一行原始的Skip-gram的优化目标

第二行加入全局上下文和同区域内的采样

是正在更新的中心房源的向量v(l) 是一对正对(l,c),

表示(中心房源,相关房源)tuple,向量在优化中会被相互推近 是一对负对(l,c),

表示(中心房源,随机房源)tuple,向量在优化中会被相互推远 是一对目的地的负样本(l,mn),

表示(中央房源,来自同一目的地的随机房源)tuple,向量在优化中会被相互推远

五、List Embedding的离线评估:

(搜索中的房源根据embedding的相似性进行了重新排序,并且最终被预订房源的排序是按照每次预定前的点击的平均值来计算,追溯到预定前的 17 次点击)

1、在使用基于embedding的推荐系统进行线上搜索测试之前,需要进行多次离线测试。目的是比较不同参数训练出来的embedding,决定embedding维度,算法思路等。

2、评估标准,测试用户最近的点击推荐的房源,有多大可能最终会产生预订

步骤:

step1 获取用户最近点击的房源,以及需要排序的房源候选列表,用户最终预订的房源

step2 计算点击房源和候选房源在embedding空间的余弦相似度

step3 对候选房源按照相似度进行排序,观察最终预订的房源在排序中的位置

search ranking,原有的排序模型:

1、re-ranking,在search ranking上进行re-ranking(使用不同目标函数)

2、d32 regular,采用负采样进行训练得到的embedding结果

3、d32 booking global:在d32的基础上增加booked listing作为全局上下文

4、d32 booking global + market negative:在上一个模型的基础上又加入了房源的地区来作为负抽样

5、re-ranking之后,booking listing的位置都往前提了,证明Ranking结果更好

6、d32 booking global + market negative构造的目标函数方法最好

六、List Embedding的冷启动

1、每天Airbnb都有新的房源产生,冷启动在所难免

2、房主上传新房源时需要上传3个特征,位置,价格,房源类型(包括整个房源,独立房间,合住房间3个类别)

3、在和新上传房源具有相同类型和相同价格区间的房源中,找到3个地理位置最接近的房源,用这3个房源的embedding求平均作为新房源的embedding

4、能覆盖到98%的新Listing

七、List Embedding的评估方法

1、K-means 聚类,将embdding进行聚类,然后可以发现其在地理位置上的区分度

2、embeddng之间的余弦相似度

3、不同类型的listing之间的余弦相似度

4、不同价格范围的listing之间的余弦相似度

5、除了基础属性(价格,地理位置)很明显的能直接获取,还有隐属性可以通过embedding来发现,比如房屋的文理

6、计算了每个listing embedding的k近邻,并对比这个listing和k近邻 => Embedding Evaluation Tool

八、Listing Embedding不能够解决的问题

1、需要基于当前的点击来计算

2、只提取了用户的short-term兴趣

3、只能用于“相似房源”场景中

4、只针对同地区下的用户兴趣房源的挖掘

5、Listing embedding 能很好的表达同一市场下Listing之间的相似性 => 适合做short-term的个性化,用于比较session内的实时推荐(相似房源推荐)

User Type Embedding 和Listing Type Embedding:

1、一些长期的行为,比如一个人在很久之前在另外一个城市预定过房间,那么在当前城市很有可能还是会喜欢预定同类型的房源

2、进一步从预定的Listing中来捕获这些信息

3、构造数据集:由前面的点击序列变成预定序列,数据集为N个用户预定的Listing 组成的session集合,每个sesison可以表示为

存在问题:

1、训练数据集会很小,因为相比点击,预定的数据小一个数量级。

2、很多用户在过去只预定过一次,这些数据是没法用来训练模型

3、需要进一步去掉那些在平台上总共就被预定的次数很少的Listing(比如少于5-10次的Listing)

4、时间跨度太长,可能用户的喜欢偏好已经发生变化

为了处理存在的问题,提出了学习type级别的embedding,而不是学习id级别的embedding

1、对于原始的Listing数据,比如位置,价格,类型,床位数等,基于一些硬性的规则生成每个Listing的类别

2、目的是将原本稀疏的数据(基于id),变得稠密(基于类型)很多session出现了共现

3、将User Type Embedding方式也采样相同的方法,即拥有一些相同的基础属性和相同行为的用户进行分桶

4、可以理解为,分别对用户和房源做了聚类,按聚类后的数据进行学习embedding,在更高一个维度(粗粒度)上获取长期兴趣

用type来表示原有的user和listing,可以解决:

1、实时个性化的体现,即使对于同一个listing或user,对应的type也可以发生变化(比如用户行为发生变化)

2、冷启动问题,用户层面上的前五个特征是通用的画像特征,对于新用户可以直接通过这五个特征完成映射

九、Type Embedding的目标函数

1、使用negative sampling构造基础的目标函数

User Type Embedding

Listing Type Embedding

十、实时个性推荐

基于Embedding的实时个性化搜索:

用户预定的房间偏好:房间大,便宜,好评

1、计算用户的user type embedding与候选listing的listing type embedding之间的余弦相似度

2、推荐给用户相似度高的listing

基于Embedding的搜索排序:

原有的排序模型:

1、算法:GBDT模型(支持lambda rank)解决pairwise问题

2、特征:listing features、user features、query features和cross features

现有排序模型:

1、算法:GBDT模型(支持lambda rank)解决pairwise问题

2、特征:listing features、user features、query features和cross features,和embedding features

step1 准备3种embedding值,Listing Embedding,User Type Embedding和Listing Type Embedding

step2 获取基础指标H∗

step3 提取地区embedding

step4 计算Embedding Features

step5 在原有的Ranking Model中加入embedding features进行计算

Airbnb个性化推荐相关推荐

  1. Airbnb基于Embedding技术的实时个性化推荐

    作者:王鸣辉 整理:Hoh Xil 来源:http://wd1900.github.io/#blog https://www.zhihu.com/people/wang-ming-hui-38/pos ...

  2. 【干货】史上最全个性化推荐技术资料包(附50余份技术文档下载链接)

    不知不觉"智能推荐系统"公众号已经陪大家走过了整整一个年头,感谢朋友们的鼓励和认可,煽情的话就不多说了.给大家把推荐相关的干货文档又整理了一遍,送给大家,希望对大家多少有点儿帮助. ...

  3. 推荐系统[八]算法实践总结V0:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  4. 大数据推荐(个性化推荐)

    大数据推荐分享.三场讲座系统的讲解了关于基于大数据的个性化推荐的体系和针对模型的探索.作为讲师主讲了关于个性化推荐的一些流程和算法. 转载于:https://www.cnblogs.com/wenBl ...

  5. 知乎联合清华:开放国内最大个性化推荐实际交互数据集

    5月21日,知乎联合清华大学对外开放基于知乎的大规模富文本查询和推荐数据集"ZhihuRec".该数据集包含了知乎上的1亿个行为数据,是目前为止,国内用于个性化推荐的最大的实际交互 ...

  6. 爱奇艺火爆的背后,个性化推荐排序是如何配合的?

    作者:Michael,推荐算法助理研究员,2014年硕士毕业于北京邮电大学后加入爱奇艺.从事推荐算法的研发和管理工作,对于机器学习和深度学习在推荐上的应用有着丰富的经验. 在当前这个移动互联网时代,除 ...

  7. 深度学习技术在美图个性化推荐的应用实践

    导读:美图秀秀社交化的推进过程中,沉淀了海量的优质内容和丰富的用户行为.推荐算法连接内容消费者和生产者,在促进平台的繁荣方面有着非常大的价值 .本次分享探讨美图在内容社区推荐场景下应用深度学习技术提升 ...

  8. 独家 | 一文读懂LinkedIn个性化推荐模型及建模原理

    原文标题:HowLinkedIn Makes Personalized Recommendations via Photon-ML Machine Learning tool 作者:Yiming Ma ...

  9. 个性化推荐系统研究热点之用户画像

    https://www.toutiao.com/a6682868982610919944/ 构建推荐系统的核心任务之一在于如何准确地分析出用户的兴趣特点,也就是我们常说的用户画像. 简单说来,用户画像 ...

最新文章

  1. SAP 物料订单创建、下达、报工、收货与投料(ABAP代码)
  2. 【BZOJ 4170】 4170: 极光 (CDQ分治)
  3. Hibernate框架之入门配置
  4. java 路径 20,java中得到classpath和当前类的绝对路径的一些方法(路径中的%20进行替换空格)...
  5. Java开发神器Lombok使用详解
  6. nginx限制上传大小和超时时间设置说明/php限制上传大小
  7. MySQL 8.0 数据字典有哪些变化?
  8. Python和java二选一该学啥
  9. AIX 与Linux 中crontab 介绍
  10. 人们为什么使用计算机,人们为什么要用互联网
  11. 攻击局域网计算机,如何攻击局域网电脑
  12. 21_08_17王道计算机考研 数据结构(二)
  13. 财务分析报表APP的功能优势
  14. 操作系统进程调度算法总结
  15. 史上最全的vue.js源码解析(一)
  16. 小程序上传大小限制问题解决
  17. win7系统如何添加显示桌面?显示桌面图标设置方法
  18. edge保存页面html,Edge浏览器怎么保存网页 保存网页方法介绍
  19. 黄聪:css3实现图片划过一束光闪过效果(图片光影掠过效果)
  20. oracle 范鑫_快速理解数据库中的索引(Indexes in Database)

热门文章

  1. 深度学习要多深,才能读懂人话?|阿里小蜜前沿探索...
  2. python rsa库_python RSA加密解密
  3. Python之禅与编程技巧
  4. mysql基本语句:DML(数据操作语言)
  5. java上传图片并生成缩略图_java 上传文件-生成文件首页缩略图 生成pdf 抓取图片...
  6. 惨遭面试官吊打高并发系统设计,回来学习 2400 小时后成功复仇
  7. 如何设计王者荣耀角色转移服务避免系统崩溃(附服务架构方案)
  8. mysql 存json中文乱码怎么设置_解决 MySQL 中文乱码
  9. 静态与静态内部类详解
  10. 首发: ggrcs包,一个用于绘制直方图+限制立方样条+双坐标轴图的R包