推荐系列(二):生成候选者概述

生成候选者概述

在上一节介绍了推荐系统的基本框架:
在这里插入图片描述

可以看到,生成候选人(generate candidate)是推荐的第一阶段,也被称作retrieve。给定查询,系统生成一组相关候选者。下表显示了两种常见的候选生成方法:

类型定义实例
基于内容的过滤使用项目之间的相似性来推荐与用户喜欢的项目类似的项目如果用户A观看过两个可爱的猫视频,则系统可以向该用户推荐可爱的动物视频
协同过滤同时使用查询和项目之间的相似性 来提供推荐如果用户A类似于用户B,并且用户B喜欢视频1,则系统可以向用户A推荐视频1(即使用户A没有看到任何类似于视频1的视频)

Embedding Space

基于内容和协作过滤都将每个项目和每个查询(或上下文)映射到公共嵌入空间中的嵌入向量 E = R d   E=R^d\ E=Rd  。通常,嵌入空间是低维的(d远小于语料库的大小),并且捕获事物或查询集的一些潜在结构。类似的项目(例如通常由同一用户观看的YouTube视频)最终会在嵌入空间中靠近在一起。“亲密度”的概念由相似性度量定义。

额外资源: projector.tensorflow.org是一个可视化嵌入的交互式工具。

相似度量

相似性度量是一种函数 s : E × E → R s: E×E→R s:E×ER ,输入一对embedding 向量并返回一个标量来衡量它们的相似性。embedding 向量可以用于候选生成,如下所示:给定查询嵌入 q ∈ E q∈E qE,系统查找项目嵌入 x ∈ E x∈E xE 接近 q,即具有高相似性的向量对 s ( x , q ) s(x, q) s(x,q)

为了确定相似程度,大多数推荐系统依赖于以下一个或多个相似度量方法:

  • 余弦(cosine);
  • 点积(dot product);
  • 欧氏距离(Euclidean distance);

余弦|Cosine

衡量两个向量之间角度的余弦, s ( q , x ) = c o s ( q , x ) s(q, x)= cos(q, x) s(q,x)=cos(q,x)

点积|Dot product

两个向量的点积是 s ( q , x ) = ⟨ q , x ⟩ = ∑ i = 1 d q i x i s(q, x) = \langle q, x \rangle = \sum_{i = 1}^d q_i x_i s(q,x)=q,x=i=1dqixi。它也是由 s ( q , x ) = ∥ x ∥ ∥ q ∥ cos ⁡ ( q , x ) s(q, x) = \|x\| \|q\| \cos(q, x) s(q,x)=xqcos(q,x)(角度的余弦乘以规范的乘积)。因此,如果embedding向量被标准化后,则点积和余弦这两种方法等价。

欧氏距离|Euclidean distance

这是欧几里得空间的通常距离, s ( q , x ) = ∥ q − x ∥ = [ ∑ i = 1 d ( q i − x i ) 2 ] 1 2 s(q, x) = \|q - x\| = \left[ \sum_{i = 1}^d (q_i - x_i)^2\right]^{\frac{1}{2}} s(q,x)=qx=[i=1d(qixi)2]21。距离越小意味着相似性越高。注意,当embedding向量被归一化时,平方欧几里德距离与点积(和余弦)一致,因为在这种情况下 1 2 ∥ q − x ∥ 2 = 1 − ⟨ q , x ⟩ \frac{1}{2}\|q - x\|^2 = 1 - \langle q, x \rangle 21qx2=1q,x

比较相似度量

在这里插入图片描述

考虑上图中的示例。黑色矢量表示查询embedding向量。其他三个embedding向量(项目A,项目B,项目C)表示候选项目。使用不同的相似性度量方法,得到的项目排序有不同的结果。

使用三个相似性度量来确定项目顺序:余弦,点积和欧几里德距离,答案如下:

答案


项目A长度最长,其标量最大,使用点积方法排名最高。项目C与查询向量具有最小角度,因此根据余弦相似性排名最高。物品B在距离上最接近查询,因此使用欧几里德距离排名最高:


如何选择相似度量方法?

与余弦相比,点积相似性对embedding向量的范数更加敏感。也就是说,embedding向量的范数越大,相似性越高并且项目被推荐的可能性越大,因此给出的建议如下:

  • 在训练集中经常出现的项目(例如,热门流行的视频)往往具有大范数的嵌入向量。如果需要捕获流行度信息,那么更应该选择点积这种方法。但是,这种方法将导致流行的item最终可能会主导推荐。在实践中,可以使用其他变体的相似性度量,而不太强调项目的范数。例如,定义 s ( q , x ) = ∥ q ∥ α ∥ x ∥ α cos ⁡ ( q , x ) s(q, x) = \|q\|^\alpha \|x\|^\alpha \cos(q, x) s(q,x)=qαxαcos(q,x)
  • 在训练期间很少出现的项目,可能不会经常被更新。因此,如果它们以大规范初始化,则系统可以推荐出稀有项目而不是更相关的项目。为了避免此问题,需要注意embedding向量的初始化,并使用适当的正则化。

总结

  • 候选者的生成对于推荐系统是第一步,也是最关键的一部分,召回的事物好坏之间影响后续的推荐进程;
  • 如何获得候选者,一般是根据embedding向量的相似度来得到,相似度量方法常见的有三种:余弦距离,点积,以及欧式距离;
  • 根据具体的推荐业务及侧重点,选择合适的相似度量方法;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值