Embedding技术在推荐场景实践

前言

深度学习是当前热门课题,核心流程包含:数据表征、数据录入与建模、基于结果调优。“万丈高楼平地起”,如果数据根基不稳,那么很难达成理想结果。

本文从这个问题切入,和大家交流如何用Embedding表征对象,以及如何在业务落地。

万物皆可Embedding

Embedding简史


Embedding最早由Hinton在1986年提出,直到2013年word2vec的推出,让一切皆可embedding,并迅速应用在特征表达,画像构建召回排序业务场景

在正式接触Embedding之前,我们先了解一下One-Hot编码表征对象方法:

浅粉红

粉红

猩红

One-Hot编码

1

0

0

浅粉红:[1,0,0]

0

1

0

粉红:[0,1,0]

0

0

1

猩红:[0,0,1]

One-Hot编码优点是简单实现,但是无法表达更多有意义的含义(比如范例中的色差)。每多一种色彩,那么维度就多一层,在成功表征对象的同时,引发了新的多维度问题(维度灾难)

如何解决上述问题呢?有请Embedding主角登场!

Embedding定义

Embedding 字面理解是“嵌入”,实质是一种映射,从语义空间到向量空间的映射,同时尽可能在向量空间保持原样本在语义空间的关系。

通俗理解:用特定的数字表达一个“对象”object,并且保留原样本的语义(比如色差、距离)

同样借助色彩表征例子来理解概念:

颜色

RGB格式

浅粉红

[255, 182, 193]

粉红

[255, 192, 203]

猩红

[220, 20, 60]

通过One-Hot和Embedding对比来加深理解:

Embedding原理

文本:“Embedding技术对深度学习推荐系统的重要性”

目标:将里面的每一个分词,都可以用向量数字表达

模型:Embedding有两种建模方式CBOW(给定上下文,预测中心词)和Skip-gram(给定输入词,预测上下文),这里选择Skip-gram作介绍

主要分为三个步骤:

  1. 数据预处理,去掉“对”、“的”等无意义的语气助词
  2. 滑窗获取素材,滑窗定为3,那么每次将邻近3个词做为一组素材(eg:Embedding、技术、深度学习),同时将中心词(eg:技术)作为输入,另外词(Embedding、深度学习)作为输出,以此类推
  3. 数字向量表达对象,有了训练素材集合,再加上借助Item2Vec模型,就可以水到渠成得到每个词的向量化表达了


Embedding技术在业务实践

实践思路

我们将站台用户点击序列拼接得到长文本,输入到item2Vec建模,得到每个物件的Embedding向量值Post_Embedding向量表达。再将用户所看到Post_Embeddings值整合,就得到User_Embedding。

数据分析

基础信息比对:

深度信息比对:

结论:用户实际看物件与Embedding推荐集合,存在深度相关性,大概率会被用户点击!

业务场景

基于用户浏览行为,每天定时为用户推送 “喜好” 笋盘集

注:图源安居客(侵删),业务场景与其类似,仅供参考

实践步骤

1. 将站台所有用户的点击序列串连

用户id

点击序列

A

1,2,3,4

B

2,3,6,7

C

3,4,7,6

聚合点击序列得到click_order_str:1,2,3,4,2,3,6,7,3,4,7,6..

2. 点击序列集合导入到item2vec中

model = word2vec.fit(click_order_str)

3. 得到每个物件的embedding

4. 通过物件集求embedding之和,得到人的embedding

result = scores_table.select('userId','emb').rdd.map(lambda x: (x[0], x[1])) .reduceByKey(lambda a, b:[a[i] + b[i] for i in range(len(a))]).collect()
5. 以人的embedding为参数,得到相似度最高前N个物件
syms = model.findSynonyms(row[1], 150)
6. 对相似集业务过滤,推荐给对应用户

业务过滤包含不限于:用户已看、价差较大、物件质量较低等,在推送给用户前剔除

我另外整理了简版demo(包含代码和测试数据)便于大家学习

业务成效

在原有ALS基础上,我们融合了Embedding集合,最终物件点阅数显著提升 !

Embedding进阶

如果我们的业务实际素材不够丰富,或者期望更多的训练素材,大家可使用随机游走得到“模拟”训练集。

基于Graph-Embedding的随机游走:Deep Walk


除了串联已有的点击序列,作为数据建模,还可以利用图结构,扩大我们的数据集,以得到更丰富的embedding向量表达。

我们将被点击到的已知物件ID取出,再结合用户点击序列顺序,进行如图b所示随机游走,得到图c更为丰富的点击序列。同样借助item2vec建模,得到数据集。

结论:用Deep Walk在租售场景应用,得到的结果不理想,体现在用户已看物件和推荐物件落差极大,因此不做更进一步探究!


总结


目前我们已经学习了ALS、Embeding两种推荐算法,并在业务落地应用,这些都是多路召回的不同策略。

展开阅读全文

页面更新:2024-04-15

标签:向量   表征   物件   建模   序列   深度   场景   对象   业务   数据   用户   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top