推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb

前言

Airbnb在2018年KDD的best-paper,关于向量化如何在民宿订购平台里的实时推荐实践的,写得非常实在。

业务特点

Aribnb他们具有非常鲜明的业务特点,是短租市场,且是个双向市场,既要优化商家又要优化租客,用户有非常强烈的搜索目标倾向。

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第1张图片

短期兴趣

从哪里学短期兴趣?

用户的一连串搜索及点击浏览行为中[session],蕴含着其最终目标booking[订购],为了能够表达这种非常具有实效和前后关系的行为,对session内的item向量化建模。建模思路是word2vec的skip-gram方式[中心词预测周围词],但是用book行为做全局上下文,并且针对业务特点增加了同类型负采样。

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第2张图片
怎么学短期兴趣?

将带有book的session作为Booked Sessions,将没有book行为的session作为Exploratory Sessions,滑动窗口大小是超参。对有book的session,将book作为全局上下文,不仅预测近邻的点击项,也预测它最终的订购项。由于在session内的行为大部分是同性质的商品项,直接全局负采样,结果会在同性质项上区分性不够,补充同性质项内的负采样。

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第3张图片

注意:窗口大小是5,前后都是5;30分钟间隔,就作为新session;vec-dim=32,随机初始化;对booked-sessions做了5倍采样;保留至少有两次点击的session;迭代了10遍语料来训练;全局负采样是在全量的有点击中随机采样。

怎么评估学习的向量是否足够OK呢?

1)直接用是否可以将地理位置/加个区分开,来作为简单的评估。
2)不同模型学习的效果好坏,则要严谨多了。计算点击item与候选items的余弦相似值,根据余弦值来排序,然后看booked的item在排序中的位置。

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第4张图片

长期兴趣

由点击到订购的过程,学习到的是短期兴趣,直接用book行为学到的则定位为长期兴趣。在Airbnb的推荐平台中,订购行为是非常稀疏的,毕竟是旅游消费,没法太高频的。针对这样的业务特点,这些可爱的人儿开动脑洞,将人群划分成不同群体,并且也将item也分成不同的群组,这样行为就不稀疏了,可以搞了。对我们的推荐流里,也有借鉴意义,某些行为就是非常稀疏的,可以分群来搞。
对item和user分群的方法如下图:

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第5张图片 推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第6张图片

构造训练预料如下:

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第7张图片

训练方式如下:

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第8张图片

注意:只更新中间项?用户分群是产品来人工干预划分的。

怎么使用学习到的向量

直接使用学到的向量可行么?由于每次学习的向量表示都会变化,直接使用会各种问题,不如化为与各个特征的相似值来使用,不管学习到的向量具体值变化,关系的表达总是稳定的。

推荐系统之Airbnb推荐:Real-time Personalizaton using Embeddings for Search Ranking at Airbnb_第9张图片

思考总结

1)万物皆可embedding化。
2)对稀疏场景,可以用分群的方式来处理。
3)为什么短期兴趣item-vec的学习时,用地理位置和价格来可视化评价向量学习是否足够良好?
因为,推荐场景有搜索行为的选项:地点 & 价格,对行为的item-vec学习过程中,必然能够区分开。
4)全局上下文,是个非常有意思的点:想对最终目标倾斜,就可以通过构造全局上下文的方式来处理。与改变语料没区别。

你可能感兴趣的:(技术博客)